@@ -3,7 +3,7 @@ discard block |
||
| 3 | 3 | |
| 4 | 4 | // show debug information |
| 5 | 5 | if(isset($enable_debug) && $enable_debug==true) { |
| 6 | - ?> |
|
| 6 | + ?> |
|
| 7 | 7 | <script language="javascript"> |
| 8 | 8 | //document.onload = removeDebug(); |
| 9 | 9 | |
@@ -33,8 +33,8 @@ discard block |
||
| 33 | 33 | } |
| 34 | 34 | </style> |
| 35 | 35 | <?php |
| 36 | - $mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $tend = $mtime; $totaltime = ($tend - $tstart); |
|
| 37 | - ?> |
|
| 36 | + $mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $tend = $mtime; $totaltime = ($tend - $tstart); |
|
| 37 | + ?> |
|
| 38 | 38 | <div class='debug' id='debug' name='debug' onClick="removeDebugDiv();"> |
| 39 | 39 | <table border="0" cellspacing="0" cellpadding="0"> |
| 40 | 40 | <tr> |
@@ -4,59 +4,59 @@ |
||
| 4 | 4 | $ContextMenuCnt = 0; |
| 5 | 5 | |
| 6 | 6 | class ContextMenu { |
| 7 | - var $id; |
|
| 7 | + var $id; |
|
| 8 | 8 | |
| 9 | - function __construct($id = '', $width = 120, $visible = false) { |
|
| 10 | - global $ContextMenuCnt; |
|
| 11 | - $ContextMenuCnt++; |
|
| 12 | - $this->html = ""; |
|
| 13 | - $this->visible = $visible ? $visible : false; |
|
| 14 | - $this->width = is_numeric($width) ? intval($width) : 120; |
|
| 15 | - $this->id = $id ? $id : "cntxMnu" . $ContextMenuCnt; // set id |
|
| 16 | - } |
|
| 9 | + function __construct($id = '', $width = 120, $visible = false) { |
|
| 10 | + global $ContextMenuCnt; |
|
| 11 | + $ContextMenuCnt++; |
|
| 12 | + $this->html = ""; |
|
| 13 | + $this->visible = $visible ? $visible : false; |
|
| 14 | + $this->width = is_numeric($width) ? intval($width) : 120; |
|
| 15 | + $this->id = $id ? $id : "cntxMnu" . $ContextMenuCnt; // set id |
|
| 16 | + } |
|
| 17 | 17 | |
| 18 | - function addItem($text, $action = "", $img = "", $disabled = 0) { |
|
| 19 | - global $base_url, $_style; |
|
| 18 | + function addItem($text, $action = "", $img = "", $disabled = 0) { |
|
| 19 | + global $base_url, $_style; |
|
| 20 | 20 | if($disabled) { |
| 21 | 21 | return; |
| 22 | 22 | } |
| 23 | - if(!$img) { |
|
| 24 | - $img = $base_url . $_style['tx']; |
|
| 25 | - } |
|
| 26 | - if(substr($action, 0, 3) == "js:") { |
|
| 27 | - $action = substr($action, 3); |
|
| 28 | - } else if(substr($action, 0, 3) == "hl:") { |
|
| 29 | - $action = "window.location.href='" . substr($action, 3) . "'"; |
|
| 30 | - } else { |
|
| 31 | - $action = "window.location.href='" . $action . "'"; |
|
| 32 | - } |
|
| 33 | - $action = " onmouseover=\"this.className='cntxMnuItemOver';\" onmouseout=\"this.className='cntxMnuItem';\" onclick=\"$action; hideCntxMenu('" . $this->id . "');\""; |
|
| 34 | - $this->html .= "<div class='" . ($disabled ? "cntxMnuItemDisabled" : "cntxMnuItem") . "' $action>"; |
|
| 23 | + if(!$img) { |
|
| 24 | + $img = $base_url . $_style['tx']; |
|
| 25 | + } |
|
| 26 | + if(substr($action, 0, 3) == "js:") { |
|
| 27 | + $action = substr($action, 3); |
|
| 28 | + } else if(substr($action, 0, 3) == "hl:") { |
|
| 29 | + $action = "window.location.href='" . substr($action, 3) . "'"; |
|
| 30 | + } else { |
|
| 31 | + $action = "window.location.href='" . $action . "'"; |
|
| 32 | + } |
|
| 33 | + $action = " onmouseover=\"this.className='cntxMnuItemOver';\" onmouseout=\"this.className='cntxMnuItem';\" onclick=\"$action; hideCntxMenu('" . $this->id . "');\""; |
|
| 34 | + $this->html .= "<div class='" . ($disabled ? "cntxMnuItemDisabled" : "cntxMnuItem") . "' $action>"; |
|
| 35 | 35 | if(substr($img, 0, 5) == 'fa fa') { |
| 36 | 36 | $img = '<i class="' . $img . '"></i>'; |
| 37 | 37 | } else if(substr($img, 0, 1) != '<') { |
| 38 | 38 | $img = '<img src="' . $img . '" />'; |
| 39 | 39 | } |
| 40 | - $this->html .= $img . ' ' . $text . '</div>'; |
|
| 41 | - } |
|
| 40 | + $this->html .= $img . ' ' . $text . '</div>'; |
|
| 41 | + } |
|
| 42 | 42 | |
| 43 | - function addSeparator() { |
|
| 44 | - $this->html .= " |
|
| 43 | + function addSeparator() { |
|
| 44 | + $this->html .= " |
|
| 45 | 45 | <div class='cntxMnuSeparator'></div> |
| 46 | 46 | "; |
| 47 | - } |
|
| 47 | + } |
|
| 48 | 48 | |
| 49 | - function render() { |
|
| 50 | - global $ContextMenuScript; |
|
| 49 | + function render() { |
|
| 50 | + global $ContextMenuScript; |
|
| 51 | 51 | |
| 52 | - $html = $ContextMenuScript . "<div id='" . $this->id . "' class='contextMenu' style='width:" . $this->width . "px; visibility:" . ($this->visible ? 'visible' : 'hidden') . "'>" . $this->html . "</div>"; |
|
| 53 | - $ContextMenuScript = ""; // reset css |
|
| 54 | - return $html; |
|
| 55 | - } |
|
| 52 | + $html = $ContextMenuScript . "<div id='" . $this->id . "' class='contextMenu' style='width:" . $this->width . "px; visibility:" . ($this->visible ? 'visible' : 'hidden') . "'>" . $this->html . "</div>"; |
|
| 53 | + $ContextMenuScript = ""; // reset css |
|
| 54 | + return $html; |
|
| 55 | + } |
|
| 56 | 56 | |
| 57 | - function getClientScriptObject() { |
|
| 58 | - return "getCntxMenu('" . $this->id . "')"; |
|
| 59 | - } |
|
| 57 | + function getClientScriptObject() { |
|
| 58 | + return "getCntxMenu('" . $this->id . "')"; |
|
| 59 | + } |
|
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | $ContextMenuScript = <<<BLOCK |
@@ -12,280 +12,280 @@ |
||
| 12 | 12 | |
| 13 | 13 | class DataGrid { |
| 14 | 14 | |
| 15 | - var $ds; // datasource |
|
| 16 | - var $id; |
|
| 17 | - var $pageSize; // pager settings |
|
| 18 | - var $pageNumber; |
|
| 19 | - var $pager; |
|
| 20 | - var $pagerLocation; // top-right, top-left, bottom-left, bottom-right, both-left, both-right |
|
| 21 | - |
|
| 22 | - var $cssStyle; |
|
| 23 | - var $cssClass; |
|
| 24 | - |
|
| 25 | - var $columnHeaderStyle; |
|
| 26 | - var $columnHeaderClass; |
|
| 27 | - var $itemStyle; |
|
| 28 | - var $itemClass; |
|
| 29 | - var $altItemStyle; |
|
| 30 | - var $altItemClass; |
|
| 31 | - |
|
| 32 | - var $fields; |
|
| 33 | - var $columns; |
|
| 34 | - var $colWidths; |
|
| 35 | - var $colAligns; |
|
| 36 | - var $colWraps; |
|
| 37 | - var $colColors; |
|
| 38 | - var $colTypes; // coltype1, coltype2, etc or coltype1:format1, e.g. date:%Y %m |
|
| 39 | - // data type: integer,float,currency,date |
|
| 40 | - |
|
| 41 | - var $header; |
|
| 42 | - var $footer; |
|
| 43 | - var $cellPadding; |
|
| 44 | - var $cellSpacing; |
|
| 45 | - |
|
| 46 | - var $rowAlign; // vertical alignment: top, middle, bottom |
|
| 47 | - var $rowIdField; |
|
| 48 | - |
|
| 49 | - var $pagerStyle; |
|
| 50 | - var $pagerClass; |
|
| 51 | - var $pageClass; |
|
| 52 | - var $selPageClass; |
|
| 53 | - var $noRecordMsg = "No records found."; |
|
| 54 | - |
|
| 55 | - function __construct($id, $ds, $pageSize = 20, $pageNumber = -1) { |
|
| 56 | - global $__DataGridCnt; |
|
| 57 | - |
|
| 58 | - // set id |
|
| 59 | - $__DataGridCnt++; |
|
| 60 | - $this->id = $this->id ? $id : "dg" . $__DataGridCnt; |
|
| 61 | - |
|
| 62 | - // set datasource |
|
| 63 | - $this->ds = $ds; |
|
| 64 | - |
|
| 65 | - // set pager |
|
| 66 | - $this->pageSize = $pageSize; |
|
| 67 | - $this->pageNumber = $pageNumber; // by setting pager to -1 will cause pager to load it's last page number |
|
| 68 | - $this->pagerLocation = 'top-right'; |
|
| 69 | - } |
|
| 70 | - |
|
| 71 | - function setDataSource($ds) { |
|
| 72 | - $this->ds = $ds; |
|
| 73 | - } |
|
| 74 | - |
|
| 75 | - function render() { |
|
| 76 | - global $modx; |
|
| 77 | - $columnHeaderStyle = ($this->columnHeaderStyle) ? "style='" . $this->columnHeaderStyle . "'" : ''; |
|
| 78 | - $columnHeaderClass = ($this->columnHeaderClass) ? "class='" . $this->columnHeaderClass . "'" : ""; |
|
| 79 | - $cssStyle = ($this->cssStyle) ? "style='" . $this->cssStyle . "'" : ''; |
|
| 80 | - $cssClass = ($this->cssClass) ? "class='" . $this->cssClass . "'" : ''; |
|
| 81 | - |
|
| 82 | - $pagerClass = ($this->pagerClass) ? "class='" . $this->pagerClass . "'" : ''; |
|
| 83 | - $pagerStyle = ($this->pagerStyle) ? "style='" . $this->pagerStyle . "'" : "style='background-color:#ffffff;'"; |
|
| 84 | - |
|
| 85 | - $this->_itemStyle = ($this->itemStyle) ? "style='" . $this->itemStyle . "'" : ''; |
|
| 86 | - $this->_itemClass = ($this->itemClass) ? "class='" . $this->itemClass . "'" : ''; |
|
| 87 | - $this->_altItemStyle = ($this->altItemStyle) ? "style='" . $this->altItemStyle . "'" : ''; |
|
| 88 | - $this->_altItemClass = ($this->altItemClass) ? "class='" . $this->altItemClass . "'" : ''; |
|
| 89 | - |
|
| 90 | - $this->_alt = 0; |
|
| 91 | - $this->_total = 0; |
|
| 92 | - |
|
| 93 | - $this->_isDataset = $modx->db->isResult($this->ds); // if not dataset then treat as array |
|
| 94 | - |
|
| 95 | - if(!$cssStyle && !$cssClass) { |
|
| 96 | - $cssStyle = "style='width:100%;border:1px solid silver;font-family:verdana,arial; font-size:11px;'"; |
|
| 97 | - } |
|
| 98 | - if(!$columnHeaderStyle && !$columnHeaderClass) { |
|
| 99 | - $columnHeaderStyle = "style='color:black;background-color:silver'"; |
|
| 100 | - } |
|
| 101 | - if(!$this->_itemStyle && !$this->_itemClass) { |
|
| 102 | - $this->_itemStyle = "style='color:black;'"; |
|
| 103 | - } |
|
| 104 | - if(!$this->_altItemStyle && !$this->_altItemClass) { |
|
| 105 | - $this->_altItemStyle = "style='color:black;background-color:#eeeeee'"; |
|
| 106 | - } |
|
| 107 | - |
|
| 108 | - if($this->_isDataset && !$this->columns) { |
|
| 109 | - $cols = $modx->db->numFields($this->ds); |
|
| 110 | - for($i = 0; $i < $cols; $i++) $this->columns .= ($i ? "," : "") . $modx->db->fieldName($this->ds, $i); |
|
| 111 | - } |
|
| 112 | - |
|
| 113 | - // start grid |
|
| 114 | - $tblStart = "<table $cssClass $cssStyle cellpadding='" . (isset($this->cellPadding) ? (int) $this->cellPadding : 1) . "' cellspacing='" . (isset($this->cellSpacing) ? (int) $this->cellSpacing : 1) . "'>"; |
|
| 115 | - $tblEnd = "</table>"; |
|
| 116 | - |
|
| 117 | - // build column header |
|
| 118 | - $this->_colnames = explode((strstr($this->columns, "||") !== false ? "||" : ","), $this->columns); |
|
| 119 | - $this->_colwidths = explode((strstr($this->colWidths, "||") !== false ? "||" : ","), $this->colWidths); |
|
| 120 | - $this->_colaligns = explode((strstr($this->colAligns, "||") !== false ? "||" : ","), $this->colAligns); |
|
| 121 | - $this->_colwraps = explode((strstr($this->colWraps, "||") !== false ? "||" : ","), $this->colWraps); |
|
| 122 | - $this->_colcolors = explode((strstr($this->colColors, "||") !== false ? "||" : ","), $this->colColors); |
|
| 123 | - $this->_coltypes = explode((strstr($this->colTypes, "||") !== false ? "||" : ","), $this->colTypes); |
|
| 124 | - $this->_colcount = count($this->_colnames); |
|
| 125 | - if(!$this->_isDataset) { |
|
| 126 | - $this->ds = explode((strstr($this->ds, "||") !== false ? "||" : ","), $this->ds); |
|
| 127 | - $this->ds = array_chunk($this->ds, $this->_colcount); |
|
| 128 | - } |
|
| 129 | - $tblColHdr = "<thead><tr>"; |
|
| 130 | - for($c = 0; $c < $this->_colcount; $c++) { |
|
| 131 | - $name = $this->_colnames[$c]; |
|
| 132 | - $width = $this->_colwidths[$c]; |
|
| 133 | - $tblColHdr .= "<td $columnHeaderStyle $columnHeaderClass" . ($width ? " width='$width'" : "") . ">$name</td>"; |
|
| 134 | - } |
|
| 135 | - $tblColHdr .= "</tr></thead>\n"; |
|
| 136 | - |
|
| 137 | - // build rows |
|
| 138 | - $rowcount = $this->_isDataset ? $modx->db->getRecordCount($this->ds) : count($this->ds); |
|
| 139 | - $this->_fieldnames = explode(",", $this->fields); |
|
| 140 | - if($rowcount == 0) { |
|
| 141 | - $tblRows .= "<tr><td " . $this->_itemStyle . " " . $this->_itemClass . " colspan='" . $this->_colcount . "'>" . $this->noRecordMsg . "</td></tr>\n"; |
|
| 142 | - } else { |
|
| 143 | - // render grid items |
|
| 144 | - if($this->pageSize <= 0) { |
|
| 145 | - for($r = 0; $r < $rowcount; $r++) { |
|
| 146 | - $row = $this->_isDataset ? $modx->db->getRow($this->ds) : $this->ds[$r]; |
|
| 147 | - $tblRows .= $this->RenderRowFnc($r + 1, $row); |
|
| 148 | - } |
|
| 149 | - } else { |
|
| 150 | - if(!$this->pager) { |
|
| 151 | - include_once dirname(__FILE__) . "/datasetpager.class.php"; |
|
| 152 | - $this->pager = new DataSetPager($this->id, $this->ds, $this->pageSize, $this->pageNumber); |
|
| 153 | - $this->pager->setRenderRowFnc($this); // pass this object |
|
| 154 | - $this->pager->cssStyle = $pagerStyle; |
|
| 155 | - $this->pager->cssClass = $pagerClass; |
|
| 156 | - } else { |
|
| 157 | - $this->pager->pageSize = $this->pageSize; |
|
| 158 | - $this->pager->pageNumber = $this->pageNumber; |
|
| 159 | - } |
|
| 160 | - |
|
| 161 | - $this->pager->render(); |
|
| 162 | - $tblRows = $this->pager->getRenderedRows(); |
|
| 163 | - $tblPager = $this->pager->getRenderedPager(); |
|
| 164 | - } |
|
| 165 | - } |
|
| 166 | - |
|
| 167 | - // setup header,pager and footer |
|
| 168 | - $o = $tblStart; |
|
| 169 | - $ptop = (substr($this->pagerLocation, 0, 3) == "top") || (substr($this->pagerLocation, 0, 4) == "both"); |
|
| 170 | - $pbot = (substr($this->pagerLocation, 0, 3) == "bot") || (substr($this->pagerLocation, 0, 4) == "both"); |
|
| 171 | - if($this->header) { |
|
| 172 | - $o .= "<tr><td bgcolor='#ffffff' colspan='" . $this->_colcount . "'>" . $this->header . "</td></tr>"; |
|
| 173 | - } |
|
| 174 | - if($tblPager && $ptop) { |
|
| 175 | - $o .= "<tr><td align='" . (substr($this->pagerLocation, -4) == "left" ? "left" : "right") . "' $pagerClass $pagerStyle colspan='" . $this->_colcount . "'>" . $tblPager . " </td></tr>"; |
|
| 176 | - } |
|
| 177 | - $o .= $tblColHdr . $tblRows; |
|
| 178 | - if($tblPager && $pbot) { |
|
| 179 | - $o .= "<tr><td align='" . (substr($this->pagerLocation, -4) == "left" ? "left" : "right") . "' $pagerClass $pagerStyle colspan='" . $this->_colcount . "'>" . $tblPager . " </td></tr>"; |
|
| 180 | - } |
|
| 181 | - if($this->footer) { |
|
| 182 | - $o .= "<tr><td bgcolor='#ffffff' colspan='" . $this->_colcount . "'>" . $this->footer . "</td></tr>"; |
|
| 183 | - } |
|
| 184 | - $o .= $tblEnd; |
|
| 185 | - return $o; |
|
| 186 | - } |
|
| 187 | - |
|
| 188 | - // format column values |
|
| 189 | - |
|
| 190 | - function RenderRowFnc($n, $row) { |
|
| 191 | - if($this->_alt == 0) { |
|
| 192 | - $Style = $this->_itemStyle; |
|
| 193 | - $Class = $this->_itemClass; |
|
| 194 | - $this->_alt = 1; |
|
| 195 | - } else { |
|
| 196 | - $Style = $this->_altItemStyle; |
|
| 197 | - $Class = $this->_altItemClass; |
|
| 198 | - $this->_alt = 0; |
|
| 199 | - } |
|
| 200 | - $o = "<tr>"; |
|
| 201 | - for($c = 0; $c < $this->_colcount; $c++) { |
|
| 202 | - $colStyle = $Style; |
|
| 203 | - $fld = trim($this->_fieldnames[$c]); |
|
| 204 | - $width = isset($this->_colwidths[$c]) ? $this->_colwidths[$c] : null; |
|
| 205 | - $align = isset($this->_colaligns[$c]) ? $this->_colaligns[$c] : null; |
|
| 206 | - $color = isset($this->_colcolors[$c]) ? $this->_colcolors[$c] : null; |
|
| 207 | - $type = isset($this->_coltypes[$c]) ? $this->_coltypes[$c] : null; |
|
| 208 | - $nowrap = isset($this->_colwraps[$c]) ? $this->_colwraps[$c] : null; |
|
| 209 | - $value = $row[($this->_isDataset && $fld ? $fld : $c)]; |
|
| 210 | - if($color && $Style) { |
|
| 211 | - $colStyle = substr($colStyle, 0, -1) . ";background-color:$color;'"; |
|
| 212 | - } |
|
| 213 | - $value = $this->formatColumnValue($row, $value, $type, $align); |
|
| 214 | - $o .= "<td $colStyle $Class" . ($align ? " align='$align'" : "") . ($color ? " bgcolor='$color'" : "") . ($nowrap ? " nowrap='$nowrap'" : "") . ($width ? " width='$width'" : "") . ">$value</td>"; |
|
| 215 | - } |
|
| 216 | - $o .= "</tr>\n"; |
|
| 217 | - return $o; |
|
| 218 | - } |
|
| 219 | - |
|
| 220 | - function formatColumnValue($row, $value, $type, &$align) { |
|
| 221 | - if(strpos($type, ":") !== false) { |
|
| 222 | - list($type, $type_format) = explode(":", $type, 2); |
|
| 223 | - } |
|
| 224 | - switch(strtolower($type)) { |
|
| 225 | - case "integer": |
|
| 226 | - if($align == "") { |
|
| 227 | - $align = "right"; |
|
| 228 | - } |
|
| 229 | - $value = number_format($value); |
|
| 230 | - break; |
|
| 231 | - |
|
| 232 | - case "float": |
|
| 233 | - if($align == "") { |
|
| 234 | - $align = "right"; |
|
| 235 | - } |
|
| 236 | - if(!$type_format) { |
|
| 237 | - $type_format = 2; |
|
| 238 | - } |
|
| 239 | - $value = number_format($value, $type_format); |
|
| 240 | - break; |
|
| 241 | - |
|
| 242 | - case "currency": |
|
| 243 | - if($align == "") { |
|
| 244 | - $align = "right"; |
|
| 245 | - } |
|
| 246 | - if(!$type_format) { |
|
| 247 | - $type_format = 2; |
|
| 248 | - } |
|
| 249 | - $value = "$" . number_format($value, $type_format); |
|
| 250 | - break; |
|
| 251 | - |
|
| 252 | - case "date": |
|
| 253 | - if($align == "") { |
|
| 254 | - $align = "right"; |
|
| 255 | - } |
|
| 256 | - if(!is_numeric($value)) { |
|
| 257 | - $value = strtotime($value); |
|
| 258 | - } |
|
| 259 | - if(!$type_format) { |
|
| 260 | - $type_format = "%A %d, %B %Y"; |
|
| 261 | - } |
|
| 262 | - $value = strftime($type_format, $value); |
|
| 263 | - break; |
|
| 264 | - |
|
| 265 | - case "boolean": |
|
| 266 | - if($align == '') { |
|
| 267 | - $align = "center"; |
|
| 268 | - } |
|
| 269 | - $value = number_format($value); |
|
| 270 | - if($value) { |
|
| 271 | - $value = '•'; |
|
| 272 | - } else { |
|
| 273 | - $value = ' '; |
|
| 274 | - } |
|
| 275 | - break; |
|
| 276 | - |
|
| 277 | - case "template": |
|
| 278 | - // replace [+value+] first |
|
| 279 | - $value = str_replace("[+value+]", $value, $type_format); |
|
| 280 | - // replace other [+fields+] |
|
| 281 | - if(strpos($value, "[+") !== false) { |
|
| 282 | - foreach($row as $k => $v) { |
|
| 283 | - $value = str_replace("[+$k+]", $v, $value); |
|
| 284 | - } |
|
| 285 | - } |
|
| 286 | - break; |
|
| 287 | - |
|
| 288 | - } |
|
| 289 | - return $value; |
|
| 290 | - } |
|
| 15 | + var $ds; // datasource |
|
| 16 | + var $id; |
|
| 17 | + var $pageSize; // pager settings |
|
| 18 | + var $pageNumber; |
|
| 19 | + var $pager; |
|
| 20 | + var $pagerLocation; // top-right, top-left, bottom-left, bottom-right, both-left, both-right |
|
| 21 | + |
|
| 22 | + var $cssStyle; |
|
| 23 | + var $cssClass; |
|
| 24 | + |
|
| 25 | + var $columnHeaderStyle; |
|
| 26 | + var $columnHeaderClass; |
|
| 27 | + var $itemStyle; |
|
| 28 | + var $itemClass; |
|
| 29 | + var $altItemStyle; |
|
| 30 | + var $altItemClass; |
|
| 31 | + |
|
| 32 | + var $fields; |
|
| 33 | + var $columns; |
|
| 34 | + var $colWidths; |
|
| 35 | + var $colAligns; |
|
| 36 | + var $colWraps; |
|
| 37 | + var $colColors; |
|
| 38 | + var $colTypes; // coltype1, coltype2, etc or coltype1:format1, e.g. date:%Y %m |
|
| 39 | + // data type: integer,float,currency,date |
|
| 40 | + |
|
| 41 | + var $header; |
|
| 42 | + var $footer; |
|
| 43 | + var $cellPadding; |
|
| 44 | + var $cellSpacing; |
|
| 45 | + |
|
| 46 | + var $rowAlign; // vertical alignment: top, middle, bottom |
|
| 47 | + var $rowIdField; |
|
| 48 | + |
|
| 49 | + var $pagerStyle; |
|
| 50 | + var $pagerClass; |
|
| 51 | + var $pageClass; |
|
| 52 | + var $selPageClass; |
|
| 53 | + var $noRecordMsg = "No records found."; |
|
| 54 | + |
|
| 55 | + function __construct($id, $ds, $pageSize = 20, $pageNumber = -1) { |
|
| 56 | + global $__DataGridCnt; |
|
| 57 | + |
|
| 58 | + // set id |
|
| 59 | + $__DataGridCnt++; |
|
| 60 | + $this->id = $this->id ? $id : "dg" . $__DataGridCnt; |
|
| 61 | + |
|
| 62 | + // set datasource |
|
| 63 | + $this->ds = $ds; |
|
| 64 | + |
|
| 65 | + // set pager |
|
| 66 | + $this->pageSize = $pageSize; |
|
| 67 | + $this->pageNumber = $pageNumber; // by setting pager to -1 will cause pager to load it's last page number |
|
| 68 | + $this->pagerLocation = 'top-right'; |
|
| 69 | + } |
|
| 70 | + |
|
| 71 | + function setDataSource($ds) { |
|
| 72 | + $this->ds = $ds; |
|
| 73 | + } |
|
| 74 | + |
|
| 75 | + function render() { |
|
| 76 | + global $modx; |
|
| 77 | + $columnHeaderStyle = ($this->columnHeaderStyle) ? "style='" . $this->columnHeaderStyle . "'" : ''; |
|
| 78 | + $columnHeaderClass = ($this->columnHeaderClass) ? "class='" . $this->columnHeaderClass . "'" : ""; |
|
| 79 | + $cssStyle = ($this->cssStyle) ? "style='" . $this->cssStyle . "'" : ''; |
|
| 80 | + $cssClass = ($this->cssClass) ? "class='" . $this->cssClass . "'" : ''; |
|
| 81 | + |
|
| 82 | + $pagerClass = ($this->pagerClass) ? "class='" . $this->pagerClass . "'" : ''; |
|
| 83 | + $pagerStyle = ($this->pagerStyle) ? "style='" . $this->pagerStyle . "'" : "style='background-color:#ffffff;'"; |
|
| 84 | + |
|
| 85 | + $this->_itemStyle = ($this->itemStyle) ? "style='" . $this->itemStyle . "'" : ''; |
|
| 86 | + $this->_itemClass = ($this->itemClass) ? "class='" . $this->itemClass . "'" : ''; |
|
| 87 | + $this->_altItemStyle = ($this->altItemStyle) ? "style='" . $this->altItemStyle . "'" : ''; |
|
| 88 | + $this->_altItemClass = ($this->altItemClass) ? "class='" . $this->altItemClass . "'" : ''; |
|
| 89 | + |
|
| 90 | + $this->_alt = 0; |
|
| 91 | + $this->_total = 0; |
|
| 92 | + |
|
| 93 | + $this->_isDataset = $modx->db->isResult($this->ds); // if not dataset then treat as array |
|
| 94 | + |
|
| 95 | + if(!$cssStyle && !$cssClass) { |
|
| 96 | + $cssStyle = "style='width:100%;border:1px solid silver;font-family:verdana,arial; font-size:11px;'"; |
|
| 97 | + } |
|
| 98 | + if(!$columnHeaderStyle && !$columnHeaderClass) { |
|
| 99 | + $columnHeaderStyle = "style='color:black;background-color:silver'"; |
|
| 100 | + } |
|
| 101 | + if(!$this->_itemStyle && !$this->_itemClass) { |
|
| 102 | + $this->_itemStyle = "style='color:black;'"; |
|
| 103 | + } |
|
| 104 | + if(!$this->_altItemStyle && !$this->_altItemClass) { |
|
| 105 | + $this->_altItemStyle = "style='color:black;background-color:#eeeeee'"; |
|
| 106 | + } |
|
| 107 | + |
|
| 108 | + if($this->_isDataset && !$this->columns) { |
|
| 109 | + $cols = $modx->db->numFields($this->ds); |
|
| 110 | + for($i = 0; $i < $cols; $i++) $this->columns .= ($i ? "," : "") . $modx->db->fieldName($this->ds, $i); |
|
| 111 | + } |
|
| 112 | + |
|
| 113 | + // start grid |
|
| 114 | + $tblStart = "<table $cssClass $cssStyle cellpadding='" . (isset($this->cellPadding) ? (int) $this->cellPadding : 1) . "' cellspacing='" . (isset($this->cellSpacing) ? (int) $this->cellSpacing : 1) . "'>"; |
|
| 115 | + $tblEnd = "</table>"; |
|
| 116 | + |
|
| 117 | + // build column header |
|
| 118 | + $this->_colnames = explode((strstr($this->columns, "||") !== false ? "||" : ","), $this->columns); |
|
| 119 | + $this->_colwidths = explode((strstr($this->colWidths, "||") !== false ? "||" : ","), $this->colWidths); |
|
| 120 | + $this->_colaligns = explode((strstr($this->colAligns, "||") !== false ? "||" : ","), $this->colAligns); |
|
| 121 | + $this->_colwraps = explode((strstr($this->colWraps, "||") !== false ? "||" : ","), $this->colWraps); |
|
| 122 | + $this->_colcolors = explode((strstr($this->colColors, "||") !== false ? "||" : ","), $this->colColors); |
|
| 123 | + $this->_coltypes = explode((strstr($this->colTypes, "||") !== false ? "||" : ","), $this->colTypes); |
|
| 124 | + $this->_colcount = count($this->_colnames); |
|
| 125 | + if(!$this->_isDataset) { |
|
| 126 | + $this->ds = explode((strstr($this->ds, "||") !== false ? "||" : ","), $this->ds); |
|
| 127 | + $this->ds = array_chunk($this->ds, $this->_colcount); |
|
| 128 | + } |
|
| 129 | + $tblColHdr = "<thead><tr>"; |
|
| 130 | + for($c = 0; $c < $this->_colcount; $c++) { |
|
| 131 | + $name = $this->_colnames[$c]; |
|
| 132 | + $width = $this->_colwidths[$c]; |
|
| 133 | + $tblColHdr .= "<td $columnHeaderStyle $columnHeaderClass" . ($width ? " width='$width'" : "") . ">$name</td>"; |
|
| 134 | + } |
|
| 135 | + $tblColHdr .= "</tr></thead>\n"; |
|
| 136 | + |
|
| 137 | + // build rows |
|
| 138 | + $rowcount = $this->_isDataset ? $modx->db->getRecordCount($this->ds) : count($this->ds); |
|
| 139 | + $this->_fieldnames = explode(",", $this->fields); |
|
| 140 | + if($rowcount == 0) { |
|
| 141 | + $tblRows .= "<tr><td " . $this->_itemStyle . " " . $this->_itemClass . " colspan='" . $this->_colcount . "'>" . $this->noRecordMsg . "</td></tr>\n"; |
|
| 142 | + } else { |
|
| 143 | + // render grid items |
|
| 144 | + if($this->pageSize <= 0) { |
|
| 145 | + for($r = 0; $r < $rowcount; $r++) { |
|
| 146 | + $row = $this->_isDataset ? $modx->db->getRow($this->ds) : $this->ds[$r]; |
|
| 147 | + $tblRows .= $this->RenderRowFnc($r + 1, $row); |
|
| 148 | + } |
|
| 149 | + } else { |
|
| 150 | + if(!$this->pager) { |
|
| 151 | + include_once dirname(__FILE__) . "/datasetpager.class.php"; |
|
| 152 | + $this->pager = new DataSetPager($this->id, $this->ds, $this->pageSize, $this->pageNumber); |
|
| 153 | + $this->pager->setRenderRowFnc($this); // pass this object |
|
| 154 | + $this->pager->cssStyle = $pagerStyle; |
|
| 155 | + $this->pager->cssClass = $pagerClass; |
|
| 156 | + } else { |
|
| 157 | + $this->pager->pageSize = $this->pageSize; |
|
| 158 | + $this->pager->pageNumber = $this->pageNumber; |
|
| 159 | + } |
|
| 160 | + |
|
| 161 | + $this->pager->render(); |
|
| 162 | + $tblRows = $this->pager->getRenderedRows(); |
|
| 163 | + $tblPager = $this->pager->getRenderedPager(); |
|
| 164 | + } |
|
| 165 | + } |
|
| 166 | + |
|
| 167 | + // setup header,pager and footer |
|
| 168 | + $o = $tblStart; |
|
| 169 | + $ptop = (substr($this->pagerLocation, 0, 3) == "top") || (substr($this->pagerLocation, 0, 4) == "both"); |
|
| 170 | + $pbot = (substr($this->pagerLocation, 0, 3) == "bot") || (substr($this->pagerLocation, 0, 4) == "both"); |
|
| 171 | + if($this->header) { |
|
| 172 | + $o .= "<tr><td bgcolor='#ffffff' colspan='" . $this->_colcount . "'>" . $this->header . "</td></tr>"; |
|
| 173 | + } |
|
| 174 | + if($tblPager && $ptop) { |
|
| 175 | + $o .= "<tr><td align='" . (substr($this->pagerLocation, -4) == "left" ? "left" : "right") . "' $pagerClass $pagerStyle colspan='" . $this->_colcount . "'>" . $tblPager . " </td></tr>"; |
|
| 176 | + } |
|
| 177 | + $o .= $tblColHdr . $tblRows; |
|
| 178 | + if($tblPager && $pbot) { |
|
| 179 | + $o .= "<tr><td align='" . (substr($this->pagerLocation, -4) == "left" ? "left" : "right") . "' $pagerClass $pagerStyle colspan='" . $this->_colcount . "'>" . $tblPager . " </td></tr>"; |
|
| 180 | + } |
|
| 181 | + if($this->footer) { |
|
| 182 | + $o .= "<tr><td bgcolor='#ffffff' colspan='" . $this->_colcount . "'>" . $this->footer . "</td></tr>"; |
|
| 183 | + } |
|
| 184 | + $o .= $tblEnd; |
|
| 185 | + return $o; |
|
| 186 | + } |
|
| 187 | + |
|
| 188 | + // format column values |
|
| 189 | + |
|
| 190 | + function RenderRowFnc($n, $row) { |
|
| 191 | + if($this->_alt == 0) { |
|
| 192 | + $Style = $this->_itemStyle; |
|
| 193 | + $Class = $this->_itemClass; |
|
| 194 | + $this->_alt = 1; |
|
| 195 | + } else { |
|
| 196 | + $Style = $this->_altItemStyle; |
|
| 197 | + $Class = $this->_altItemClass; |
|
| 198 | + $this->_alt = 0; |
|
| 199 | + } |
|
| 200 | + $o = "<tr>"; |
|
| 201 | + for($c = 0; $c < $this->_colcount; $c++) { |
|
| 202 | + $colStyle = $Style; |
|
| 203 | + $fld = trim($this->_fieldnames[$c]); |
|
| 204 | + $width = isset($this->_colwidths[$c]) ? $this->_colwidths[$c] : null; |
|
| 205 | + $align = isset($this->_colaligns[$c]) ? $this->_colaligns[$c] : null; |
|
| 206 | + $color = isset($this->_colcolors[$c]) ? $this->_colcolors[$c] : null; |
|
| 207 | + $type = isset($this->_coltypes[$c]) ? $this->_coltypes[$c] : null; |
|
| 208 | + $nowrap = isset($this->_colwraps[$c]) ? $this->_colwraps[$c] : null; |
|
| 209 | + $value = $row[($this->_isDataset && $fld ? $fld : $c)]; |
|
| 210 | + if($color && $Style) { |
|
| 211 | + $colStyle = substr($colStyle, 0, -1) . ";background-color:$color;'"; |
|
| 212 | + } |
|
| 213 | + $value = $this->formatColumnValue($row, $value, $type, $align); |
|
| 214 | + $o .= "<td $colStyle $Class" . ($align ? " align='$align'" : "") . ($color ? " bgcolor='$color'" : "") . ($nowrap ? " nowrap='$nowrap'" : "") . ($width ? " width='$width'" : "") . ">$value</td>"; |
|
| 215 | + } |
|
| 216 | + $o .= "</tr>\n"; |
|
| 217 | + return $o; |
|
| 218 | + } |
|
| 219 | + |
|
| 220 | + function formatColumnValue($row, $value, $type, &$align) { |
|
| 221 | + if(strpos($type, ":") !== false) { |
|
| 222 | + list($type, $type_format) = explode(":", $type, 2); |
|
| 223 | + } |
|
| 224 | + switch(strtolower($type)) { |
|
| 225 | + case "integer": |
|
| 226 | + if($align == "") { |
|
| 227 | + $align = "right"; |
|
| 228 | + } |
|
| 229 | + $value = number_format($value); |
|
| 230 | + break; |
|
| 231 | + |
|
| 232 | + case "float": |
|
| 233 | + if($align == "") { |
|
| 234 | + $align = "right"; |
|
| 235 | + } |
|
| 236 | + if(!$type_format) { |
|
| 237 | + $type_format = 2; |
|
| 238 | + } |
|
| 239 | + $value = number_format($value, $type_format); |
|
| 240 | + break; |
|
| 241 | + |
|
| 242 | + case "currency": |
|
| 243 | + if($align == "") { |
|
| 244 | + $align = "right"; |
|
| 245 | + } |
|
| 246 | + if(!$type_format) { |
|
| 247 | + $type_format = 2; |
|
| 248 | + } |
|
| 249 | + $value = "$" . number_format($value, $type_format); |
|
| 250 | + break; |
|
| 251 | + |
|
| 252 | + case "date": |
|
| 253 | + if($align == "") { |
|
| 254 | + $align = "right"; |
|
| 255 | + } |
|
| 256 | + if(!is_numeric($value)) { |
|
| 257 | + $value = strtotime($value); |
|
| 258 | + } |
|
| 259 | + if(!$type_format) { |
|
| 260 | + $type_format = "%A %d, %B %Y"; |
|
| 261 | + } |
|
| 262 | + $value = strftime($type_format, $value); |
|
| 263 | + break; |
|
| 264 | + |
|
| 265 | + case "boolean": |
|
| 266 | + if($align == '') { |
|
| 267 | + $align = "center"; |
|
| 268 | + } |
|
| 269 | + $value = number_format($value); |
|
| 270 | + if($value) { |
|
| 271 | + $value = '•'; |
|
| 272 | + } else { |
|
| 273 | + $value = ' '; |
|
| 274 | + } |
|
| 275 | + break; |
|
| 276 | + |
|
| 277 | + case "template": |
|
| 278 | + // replace [+value+] first |
|
| 279 | + $value = str_replace("[+value+]", $value, $type_format); |
|
| 280 | + // replace other [+fields+] |
|
| 281 | + if(strpos($value, "[+") !== false) { |
|
| 282 | + foreach($row as $k => $v) { |
|
| 283 | + $value = str_replace("[+$k+]", $v, $value); |
|
| 284 | + } |
|
| 285 | + } |
|
| 286 | + break; |
|
| 287 | + |
|
| 288 | + } |
|
| 289 | + return $value; |
|
| 290 | + } |
|
| 291 | 291 | } |
@@ -12,181 +12,181 @@ |
||
| 12 | 12 | |
| 13 | 13 | class DataSetPager { |
| 14 | 14 | |
| 15 | - var $ds; // datasource |
|
| 16 | - var $pageSize; |
|
| 17 | - var $pageNumber; |
|
| 18 | - var $rows; |
|
| 19 | - var $pager; |
|
| 20 | - var $id; |
|
| 21 | - |
|
| 22 | - // normal page |
|
| 23 | - var $pageStyle; |
|
| 24 | - var $pageClass; |
|
| 25 | - |
|
| 26 | - // selected page |
|
| 27 | - var $selPageStyle; |
|
| 28 | - var $selPageClass; |
|
| 29 | - |
|
| 30 | - function __construct($id, $ds, $pageSize = 10, $pageNumber = -1) { |
|
| 31 | - global $_PAGE; // use view state object |
|
| 32 | - |
|
| 33 | - global $__DataSetPagerCnt; |
|
| 34 | - |
|
| 35 | - // set id |
|
| 36 | - $__DataSetPagerCnt++; |
|
| 37 | - $this->id = !empty($id) ? $id : "dsp" . $__DataSetPagerCnt; |
|
| 38 | - |
|
| 39 | - // get pagenumber |
|
| 40 | - // by setting pager to -1 cause pager to load it's last page number |
|
| 41 | - if($pageNumber == -1) { |
|
| 42 | - $pageNumber = 1; |
|
| 43 | - if(isset($_GET["dpgn" . $this->id])) { |
|
| 44 | - $pageNumber = $_GET["dpgn" . $this->id]; |
|
| 45 | - } elseif(isset($_PAGE['vs'][$id . '_dpgn'])) { |
|
| 46 | - $pageNumber = $_PAGE['vs'][$id . '_dpgn']; |
|
| 47 | - } |
|
| 48 | - } |
|
| 49 | - if(!is_numeric($pageNumber)) { |
|
| 50 | - $pageNumber = 1; |
|
| 51 | - } |
|
| 52 | - |
|
| 53 | - $this->ds = $ds; // datasource |
|
| 54 | - $this->pageSize = $pageSize; |
|
| 55 | - $this->pageNumber = $pageNumber; |
|
| 56 | - $this->rows = ''; |
|
| 57 | - $this->pager = ''; |
|
| 58 | - } |
|
| 59 | - |
|
| 60 | - function getRenderedPager() { |
|
| 61 | - return $this->pager; |
|
| 62 | - } |
|
| 63 | - |
|
| 64 | - function getRenderedRows() { |
|
| 65 | - return $this->rows; |
|
| 66 | - } |
|
| 67 | - |
|
| 68 | - function setDataSource($ds) { |
|
| 69 | - $this->ds = $ds; |
|
| 70 | - } |
|
| 71 | - |
|
| 72 | - function setPageSize($ps) { |
|
| 73 | - $this->pageSize = $ps; |
|
| 74 | - } |
|
| 75 | - |
|
| 76 | - function setRenderRowFnc($fncName, $args = "") { |
|
| 77 | - $this->renderRowFnc = &$fncName; |
|
| 78 | - $this->renderRowFncArgs = $args; // extra agruments |
|
| 79 | - |
|
| 80 | - |
|
| 81 | - } |
|
| 82 | - |
|
| 83 | - function setRenderPagerFnc($fncName, $args = "") { |
|
| 84 | - $this->renderPagerFnc = $fncName; |
|
| 85 | - $this->renderPagerFncArgs = $args; // extra agruments |
|
| 86 | - } |
|
| 87 | - |
|
| 88 | - function render() { |
|
| 89 | - global $modx, $_PAGE; |
|
| 90 | - |
|
| 91 | - $isDataset = $modx->db->isResult($this->ds); |
|
| 92 | - |
|
| 93 | - if(!$this->selPageStyle) { |
|
| 94 | - $this->selPageStyle = "font-weight:bold"; |
|
| 95 | - } |
|
| 96 | - |
|
| 97 | - // get total number of rows |
|
| 98 | - $tnr = ($isDataset) ? $modx->db->getRecordCount($this->ds) : count($this->ds); |
|
| 99 | - |
|
| 100 | - // render: no records found |
|
| 101 | - if($tnr <= 0) { |
|
| 102 | - $fnc = $this->renderRowFnc; |
|
| 103 | - $args = $this->renderRowFncArgs; |
|
| 104 | - if(isset($fnc)) { |
|
| 105 | - if($args != "") { |
|
| 106 | - $this->rows .= $fnc(0, null, $args); |
|
| 107 | - } // if agrs was specified then we will pass three params |
|
| 108 | - else { |
|
| 109 | - $this->rows .= $fnc(0, null); |
|
| 110 | - } // otherwise two will be passed |
|
| 111 | - } |
|
| 112 | - return; |
|
| 113 | - } |
|
| 114 | - |
|
| 115 | - // get total pages |
|
| 116 | - $tp = ceil($tnr / $this->pageSize); |
|
| 117 | - if($this->pageNumber > $tp) { |
|
| 118 | - $this->pageNumber = 1; |
|
| 119 | - } |
|
| 120 | - |
|
| 121 | - // get page number |
|
| 122 | - $p = $this->pageNumber; |
|
| 123 | - |
|
| 124 | - // save page number to view state if available |
|
| 125 | - if(isset($_PAGE['vs'])) { |
|
| 126 | - $_PAGE['vs'][$this->id . '_dpgn'] = $p; |
|
| 127 | - } |
|
| 128 | - |
|
| 129 | - // render pager : renderPagerFnc($cuurentPage,$pagerNumber,$arguments=""); |
|
| 130 | - if($tp > 1) { |
|
| 131 | - $fnc = $this->renderPagerFnc; |
|
| 132 | - $args = $this->renderPagerFncArgs; |
|
| 133 | - if(!isset($fnc)) { |
|
| 134 | - if($modx->isFrontend()) { |
|
| 135 | - $url = $modx->makeUrl($modx->documentIdentifier, '', '', 'full') . '?'; |
|
| 136 | - } else { |
|
| 137 | - $url = $_SERVER['PHP_SELF'] . '?'; |
|
| 138 | - } |
|
| 139 | - $i = 0; |
|
| 140 | - foreach($_GET as $n => $v) if($n != 'dpgn' . $this->id) { |
|
| 141 | - $i++; |
|
| 142 | - $url .= (($i > 1) ? "&" : "") . "$n=$v"; |
|
| 143 | - } |
|
| 144 | - if($i >= 1) { |
|
| 145 | - $url .= "&"; |
|
| 146 | - } |
|
| 147 | - } |
|
| 148 | - for($i = 1; $i <= $tp; $i++) { |
|
| 149 | - if(isset($fnc)) { |
|
| 150 | - if($args != "") { |
|
| 151 | - $this->pager .= $fnc($p, $i, $args); |
|
| 152 | - } else { |
|
| 153 | - $this->pager .= $fnc($p, $i); |
|
| 154 | - } |
|
| 155 | - } else { |
|
| 156 | - $this->pager .= ($p == $i) ? " <span class='" . $this->selPageClass . "' style='" . $this->selPageStyle . "'>$i</span> " : " <a href='" . $url . "dpgn" . $this->id . "=$i' class='" . $this->pageClass . "' style='" . $this->pageStyle . "'>$i</a> "; |
|
| 157 | - } |
|
| 158 | - } |
|
| 159 | - } |
|
| 160 | - |
|
| 161 | - // render row : renderRowFnc($rowNumber,$row,$arguments="") |
|
| 162 | - $fnc = $this->renderRowFnc; |
|
| 163 | - $args = $this->renderRowFncArgs; |
|
| 164 | - |
|
| 165 | - if(isset($fnc)) { |
|
| 166 | - $i = 1; |
|
| 167 | - $fncObject = is_object($fnc); |
|
| 168 | - $minitems = (($p - 1) * $this->pageSize) + 1; |
|
| 169 | - $maxitems = (($p - 1) * $this->pageSize) + $this->pageSize; |
|
| 170 | - while($i <= $maxitems && ($row = ($isDataset) ? $modx->db->getRow($this->ds) : $this->ds[$i - 1])) { |
|
| 171 | - if($i >= $minitems && $i <= $maxitems) { |
|
| 172 | - if($fncObject) { |
|
| 173 | - if($args != "") { |
|
| 174 | - $this->rows .= $fnc->RenderRowFnc($i, $row, $args); |
|
| 175 | - } else { |
|
| 176 | - $this->rows .= $fnc->RenderRowFnc($i, $row); |
|
| 177 | - } |
|
| 178 | - } else { |
|
| 179 | - if($args != "") { |
|
| 180 | - $this->rows .= $fnc($i, $row, $args); |
|
| 181 | - } // if agrs was specified then we wil pass three params |
|
| 182 | - else { |
|
| 183 | - $this->rows .= $fnc($i, $row); |
|
| 184 | - } // otherwise two will be passed |
|
| 185 | - } |
|
| 186 | - |
|
| 187 | - } |
|
| 188 | - $i++; |
|
| 189 | - } |
|
| 190 | - } |
|
| 191 | - } |
|
| 15 | + var $ds; // datasource |
|
| 16 | + var $pageSize; |
|
| 17 | + var $pageNumber; |
|
| 18 | + var $rows; |
|
| 19 | + var $pager; |
|
| 20 | + var $id; |
|
| 21 | + |
|
| 22 | + // normal page |
|
| 23 | + var $pageStyle; |
|
| 24 | + var $pageClass; |
|
| 25 | + |
|
| 26 | + // selected page |
|
| 27 | + var $selPageStyle; |
|
| 28 | + var $selPageClass; |
|
| 29 | + |
|
| 30 | + function __construct($id, $ds, $pageSize = 10, $pageNumber = -1) { |
|
| 31 | + global $_PAGE; // use view state object |
|
| 32 | + |
|
| 33 | + global $__DataSetPagerCnt; |
|
| 34 | + |
|
| 35 | + // set id |
|
| 36 | + $__DataSetPagerCnt++; |
|
| 37 | + $this->id = !empty($id) ? $id : "dsp" . $__DataSetPagerCnt; |
|
| 38 | + |
|
| 39 | + // get pagenumber |
|
| 40 | + // by setting pager to -1 cause pager to load it's last page number |
|
| 41 | + if($pageNumber == -1) { |
|
| 42 | + $pageNumber = 1; |
|
| 43 | + if(isset($_GET["dpgn" . $this->id])) { |
|
| 44 | + $pageNumber = $_GET["dpgn" . $this->id]; |
|
| 45 | + } elseif(isset($_PAGE['vs'][$id . '_dpgn'])) { |
|
| 46 | + $pageNumber = $_PAGE['vs'][$id . '_dpgn']; |
|
| 47 | + } |
|
| 48 | + } |
|
| 49 | + if(!is_numeric($pageNumber)) { |
|
| 50 | + $pageNumber = 1; |
|
| 51 | + } |
|
| 52 | + |
|
| 53 | + $this->ds = $ds; // datasource |
|
| 54 | + $this->pageSize = $pageSize; |
|
| 55 | + $this->pageNumber = $pageNumber; |
|
| 56 | + $this->rows = ''; |
|
| 57 | + $this->pager = ''; |
|
| 58 | + } |
|
| 59 | + |
|
| 60 | + function getRenderedPager() { |
|
| 61 | + return $this->pager; |
|
| 62 | + } |
|
| 63 | + |
|
| 64 | + function getRenderedRows() { |
|
| 65 | + return $this->rows; |
|
| 66 | + } |
|
| 67 | + |
|
| 68 | + function setDataSource($ds) { |
|
| 69 | + $this->ds = $ds; |
|
| 70 | + } |
|
| 71 | + |
|
| 72 | + function setPageSize($ps) { |
|
| 73 | + $this->pageSize = $ps; |
|
| 74 | + } |
|
| 75 | + |
|
| 76 | + function setRenderRowFnc($fncName, $args = "") { |
|
| 77 | + $this->renderRowFnc = &$fncName; |
|
| 78 | + $this->renderRowFncArgs = $args; // extra agruments |
|
| 79 | + |
|
| 80 | + |
|
| 81 | + } |
|
| 82 | + |
|
| 83 | + function setRenderPagerFnc($fncName, $args = "") { |
|
| 84 | + $this->renderPagerFnc = $fncName; |
|
| 85 | + $this->renderPagerFncArgs = $args; // extra agruments |
|
| 86 | + } |
|
| 87 | + |
|
| 88 | + function render() { |
|
| 89 | + global $modx, $_PAGE; |
|
| 90 | + |
|
| 91 | + $isDataset = $modx->db->isResult($this->ds); |
|
| 92 | + |
|
| 93 | + if(!$this->selPageStyle) { |
|
| 94 | + $this->selPageStyle = "font-weight:bold"; |
|
| 95 | + } |
|
| 96 | + |
|
| 97 | + // get total number of rows |
|
| 98 | + $tnr = ($isDataset) ? $modx->db->getRecordCount($this->ds) : count($this->ds); |
|
| 99 | + |
|
| 100 | + // render: no records found |
|
| 101 | + if($tnr <= 0) { |
|
| 102 | + $fnc = $this->renderRowFnc; |
|
| 103 | + $args = $this->renderRowFncArgs; |
|
| 104 | + if(isset($fnc)) { |
|
| 105 | + if($args != "") { |
|
| 106 | + $this->rows .= $fnc(0, null, $args); |
|
| 107 | + } // if agrs was specified then we will pass three params |
|
| 108 | + else { |
|
| 109 | + $this->rows .= $fnc(0, null); |
|
| 110 | + } // otherwise two will be passed |
|
| 111 | + } |
|
| 112 | + return; |
|
| 113 | + } |
|
| 114 | + |
|
| 115 | + // get total pages |
|
| 116 | + $tp = ceil($tnr / $this->pageSize); |
|
| 117 | + if($this->pageNumber > $tp) { |
|
| 118 | + $this->pageNumber = 1; |
|
| 119 | + } |
|
| 120 | + |
|
| 121 | + // get page number |
|
| 122 | + $p = $this->pageNumber; |
|
| 123 | + |
|
| 124 | + // save page number to view state if available |
|
| 125 | + if(isset($_PAGE['vs'])) { |
|
| 126 | + $_PAGE['vs'][$this->id . '_dpgn'] = $p; |
|
| 127 | + } |
|
| 128 | + |
|
| 129 | + // render pager : renderPagerFnc($cuurentPage,$pagerNumber,$arguments=""); |
|
| 130 | + if($tp > 1) { |
|
| 131 | + $fnc = $this->renderPagerFnc; |
|
| 132 | + $args = $this->renderPagerFncArgs; |
|
| 133 | + if(!isset($fnc)) { |
|
| 134 | + if($modx->isFrontend()) { |
|
| 135 | + $url = $modx->makeUrl($modx->documentIdentifier, '', '', 'full') . '?'; |
|
| 136 | + } else { |
|
| 137 | + $url = $_SERVER['PHP_SELF'] . '?'; |
|
| 138 | + } |
|
| 139 | + $i = 0; |
|
| 140 | + foreach($_GET as $n => $v) if($n != 'dpgn' . $this->id) { |
|
| 141 | + $i++; |
|
| 142 | + $url .= (($i > 1) ? "&" : "") . "$n=$v"; |
|
| 143 | + } |
|
| 144 | + if($i >= 1) { |
|
| 145 | + $url .= "&"; |
|
| 146 | + } |
|
| 147 | + } |
|
| 148 | + for($i = 1; $i <= $tp; $i++) { |
|
| 149 | + if(isset($fnc)) { |
|
| 150 | + if($args != "") { |
|
| 151 | + $this->pager .= $fnc($p, $i, $args); |
|
| 152 | + } else { |
|
| 153 | + $this->pager .= $fnc($p, $i); |
|
| 154 | + } |
|
| 155 | + } else { |
|
| 156 | + $this->pager .= ($p == $i) ? " <span class='" . $this->selPageClass . "' style='" . $this->selPageStyle . "'>$i</span> " : " <a href='" . $url . "dpgn" . $this->id . "=$i' class='" . $this->pageClass . "' style='" . $this->pageStyle . "'>$i</a> "; |
|
| 157 | + } |
|
| 158 | + } |
|
| 159 | + } |
|
| 160 | + |
|
| 161 | + // render row : renderRowFnc($rowNumber,$row,$arguments="") |
|
| 162 | + $fnc = $this->renderRowFnc; |
|
| 163 | + $args = $this->renderRowFncArgs; |
|
| 164 | + |
|
| 165 | + if(isset($fnc)) { |
|
| 166 | + $i = 1; |
|
| 167 | + $fncObject = is_object($fnc); |
|
| 168 | + $minitems = (($p - 1) * $this->pageSize) + 1; |
|
| 169 | + $maxitems = (($p - 1) * $this->pageSize) + $this->pageSize; |
|
| 170 | + while($i <= $maxitems && ($row = ($isDataset) ? $modx->db->getRow($this->ds) : $this->ds[$i - 1])) { |
|
| 171 | + if($i >= $minitems && $i <= $maxitems) { |
|
| 172 | + if($fncObject) { |
|
| 173 | + if($args != "") { |
|
| 174 | + $this->rows .= $fnc->RenderRowFnc($i, $row, $args); |
|
| 175 | + } else { |
|
| 176 | + $this->rows .= $fnc->RenderRowFnc($i, $row); |
|
| 177 | + } |
|
| 178 | + } else { |
|
| 179 | + if($args != "") { |
|
| 180 | + $this->rows .= $fnc($i, $row, $args); |
|
| 181 | + } // if agrs was specified then we wil pass three params |
|
| 182 | + else { |
|
| 183 | + $this->rows .= $fnc($i, $row); |
|
| 184 | + } // otherwise two will be passed |
|
| 185 | + } |
|
| 186 | + |
|
| 187 | + } |
|
| 188 | + $i++; |
|
| 189 | + } |
|
| 190 | + } |
|
| 191 | + } |
|
| 192 | 192 | } |
@@ -5,10 +5,10 @@ |
||
| 5 | 5 | $settings = array(); |
| 6 | 6 | if ($modx && count($modx->config)>0) $settings = $modx->config; |
| 7 | 7 | else{ |
| 8 | - $rs = $modx->db->select('setting_name, setting_value', $modx->getFullTableName('system_settings')); |
|
| 9 | - while ($row = $modx->db->getRow($rs)) { |
|
| 10 | - $settings[$row['setting_name']] = $row['setting_value']; |
|
| 11 | - } |
|
| 8 | + $rs = $modx->db->select('setting_name, setting_value', $modx->getFullTableName('system_settings')); |
|
| 9 | + while ($row = $modx->db->getRow($rs)) { |
|
| 10 | + $settings[$row['setting_name']] = $row['setting_value']; |
|
| 11 | + } |
|
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | extract($settings, EXTR_OVERWRITE); |
@@ -12,13 +12,13 @@ |
||
| 12 | 12 | $modx->invokeEvent('OnManagerPageInit'); |
| 13 | 13 | $ok = false; |
| 14 | 14 | if(isset($_SESSION['mgrToken']) && $_GET['tok'] == $_SESSION['mgrToken']) { |
| 15 | - $ok = true; |
|
| 16 | - $modx->updateValidatedUserSession(); |
|
| 15 | + $ok = true; |
|
| 16 | + $modx->updateValidatedUserSession(); |
|
| 17 | 17 | } |
| 18 | 18 | |
| 19 | 19 | header('Content-type: application/json'); |
| 20 | 20 | if($ok) { |
| 21 | 21 | echo '{"status":"ok"}'; |
| 22 | 22 | } else { |
| 23 | - echo '{"status":"null"}'; |
|
| 23 | + echo '{"status":"null"}'; |
|
| 24 | 24 | } |
@@ -363,10 +363,10 @@ |
||
| 363 | 363 | stopWorker(); |
| 364 | 364 | |
| 365 | 365 | <?php |
| 366 | - if (isset($_REQUEST['r']) && preg_match('@^[0-9]+$@', $_REQUEST['r'])) {
|
|
| 367 | - echo 'doRefresh(' . $_REQUEST['r'] . ");\n";
|
|
| 368 | - } |
|
| 369 | - ?> |
|
| 366 | + if (isset($_REQUEST['r']) && preg_match('@^[0-9]+$@', $_REQUEST['r'])) {
|
|
| 367 | + echo 'doRefresh(' . $_REQUEST['r'] . ");\n";
|
|
| 368 | + } |
|
| 369 | + ?> |
|
| 370 | 370 | |
| 371 | 371 | var actionButtons = document.getElementById('actions'), actionSelect = document.getElementById('stay');
|
| 372 | 372 | if (actionButtons !== null && actionSelect !== null) {
|
@@ -1,159 +1,159 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | // DISPLAY FORM ELEMENTS |
| 3 | 3 | function renderFormElement($field_type, $field_id, $default_text = '', $field_elements = '', $field_value = '', $field_style = '', $row = array(), $tvsArray = array()) { |
| 4 | - global $modx; |
|
| 5 | - global $_style; |
|
| 6 | - global $_lang; |
|
| 7 | - global $content; |
|
| 8 | - global $which_browser; |
|
| 4 | + global $modx; |
|
| 5 | + global $_style; |
|
| 6 | + global $_lang; |
|
| 7 | + global $content; |
|
| 8 | + global $which_browser; |
|
| 9 | 9 | |
| 10 | - if(substr($default_text, 0, 6) === '@@EVAL' && $field_value === $default_text) { |
|
| 11 | - $eval_str = trim(substr($default_text, 7)); |
|
| 12 | - $default_text = eval($eval_str); |
|
| 13 | - $field_value = $default_text; |
|
| 14 | - } |
|
| 10 | + if(substr($default_text, 0, 6) === '@@EVAL' && $field_value === $default_text) { |
|
| 11 | + $eval_str = trim(substr($default_text, 7)); |
|
| 12 | + $default_text = eval($eval_str); |
|
| 13 | + $field_value = $default_text; |
|
| 14 | + } |
|
| 15 | 15 | |
| 16 | - $field_html = ''; |
|
| 17 | - $cimode = strpos($field_type, ':'); |
|
| 18 | - if($cimode === false) { |
|
| 19 | - switch($field_type) { |
|
| 16 | + $field_html = ''; |
|
| 17 | + $cimode = strpos($field_type, ':'); |
|
| 18 | + if($cimode === false) { |
|
| 19 | + switch($field_type) { |
|
| 20 | 20 | |
| 21 | - case "text": // handler for regular text boxes |
|
| 22 | - case "rawtext"; // non-htmlentity converted text boxes |
|
| 23 | - $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" ' . $field_style . ' tvtype="' . $field_type . '" onchange="documentDirty=true;" style="width:100%" />'; |
|
| 24 | - break; |
|
| 25 | - case "email": // handles email input fields |
|
| 26 | - $field_html .= '<input type="email" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" ' . $field_style . ' tvtype="' . $field_type . '" onchange="documentDirty=true;" style="width:100%"/>'; |
|
| 27 | - break; |
|
| 28 | - case "number": // handles the input of numbers |
|
| 29 | - $field_html .= '<input type="number" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" ' . $field_style . ' tvtype="' . $field_type . '" onchange="documentDirty=true;" style="width:100%" onkeyup="this.value=this.value.replace(/[^\d-,.+]/,\'\')"/>'; |
|
| 30 | - break; |
|
| 31 | - case "textareamini": // handler for textarea mini boxes |
|
| 32 | - $field_html .= '<textarea id="tv' . $field_id . '" name="tv' . $field_id . '" cols="40" rows="5" onchange="documentDirty=true;" style="width:100%">' . $modx->htmlspecialchars($field_value) . '</textarea>'; |
|
| 33 | - break; |
|
| 34 | - case "textarea": // handler for textarea boxes |
|
| 35 | - case "rawtextarea": // non-htmlentity convertex textarea boxes |
|
| 36 | - case "htmlarea": // handler for textarea boxes (deprecated) |
|
| 37 | - case "richtext": // handler for textarea boxes |
|
| 38 | - $field_html .= '<textarea id="tv' . $field_id . '" name="tv' . $field_id . '" cols="40" rows="15" onchange="documentDirty=true;" style="width:100%">' . $modx->htmlspecialchars($field_value) . '</textarea>'; |
|
| 39 | - break; |
|
| 40 | - case "date": |
|
| 41 | - $field_id = str_replace(array( |
|
| 42 | - '-', |
|
| 43 | - '.' |
|
| 44 | - ), '_', urldecode($field_id)); |
|
| 45 | - if($field_value == '') { |
|
| 46 | - $field_value = 0; |
|
| 47 | - } |
|
| 48 | - $field_html .= '<input id="tv' . $field_id . '" name="tv' . $field_id . '" class="DatePicker" type="text" value="' . ($field_value == 0 || !isset($field_value) ? "" : $field_value) . '" onblur="documentDirty=true;" />'; |
|
| 49 | - $field_html .= ' <a onclick="document.forms[\'mutate\'].elements[\'tv' . $field_id . '\'].value=\'\';document.forms[\'mutate\'].elements[\'tv' . $field_id . '\'].onblur(); return true;" onmouseover="window.status=\'clear the date\'; return true;" onmouseout="window.status=\'\'; return true;" style="cursor:pointer; cursor:hand"><i class="' . $_style["actions_calendar_delete"] . '"></i></a>'; |
|
| 21 | + case "text": // handler for regular text boxes |
|
| 22 | + case "rawtext"; // non-htmlentity converted text boxes |
|
| 23 | + $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" ' . $field_style . ' tvtype="' . $field_type . '" onchange="documentDirty=true;" style="width:100%" />'; |
|
| 24 | + break; |
|
| 25 | + case "email": // handles email input fields |
|
| 26 | + $field_html .= '<input type="email" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" ' . $field_style . ' tvtype="' . $field_type . '" onchange="documentDirty=true;" style="width:100%"/>'; |
|
| 27 | + break; |
|
| 28 | + case "number": // handles the input of numbers |
|
| 29 | + $field_html .= '<input type="number" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" ' . $field_style . ' tvtype="' . $field_type . '" onchange="documentDirty=true;" style="width:100%" onkeyup="this.value=this.value.replace(/[^\d-,.+]/,\'\')"/>'; |
|
| 30 | + break; |
|
| 31 | + case "textareamini": // handler for textarea mini boxes |
|
| 32 | + $field_html .= '<textarea id="tv' . $field_id . '" name="tv' . $field_id . '" cols="40" rows="5" onchange="documentDirty=true;" style="width:100%">' . $modx->htmlspecialchars($field_value) . '</textarea>'; |
|
| 33 | + break; |
|
| 34 | + case "textarea": // handler for textarea boxes |
|
| 35 | + case "rawtextarea": // non-htmlentity convertex textarea boxes |
|
| 36 | + case "htmlarea": // handler for textarea boxes (deprecated) |
|
| 37 | + case "richtext": // handler for textarea boxes |
|
| 38 | + $field_html .= '<textarea id="tv' . $field_id . '" name="tv' . $field_id . '" cols="40" rows="15" onchange="documentDirty=true;" style="width:100%">' . $modx->htmlspecialchars($field_value) . '</textarea>'; |
|
| 39 | + break; |
|
| 40 | + case "date": |
|
| 41 | + $field_id = str_replace(array( |
|
| 42 | + '-', |
|
| 43 | + '.' |
|
| 44 | + ), '_', urldecode($field_id)); |
|
| 45 | + if($field_value == '') { |
|
| 46 | + $field_value = 0; |
|
| 47 | + } |
|
| 48 | + $field_html .= '<input id="tv' . $field_id . '" name="tv' . $field_id . '" class="DatePicker" type="text" value="' . ($field_value == 0 || !isset($field_value) ? "" : $field_value) . '" onblur="documentDirty=true;" />'; |
|
| 49 | + $field_html .= ' <a onclick="document.forms[\'mutate\'].elements[\'tv' . $field_id . '\'].value=\'\';document.forms[\'mutate\'].elements[\'tv' . $field_id . '\'].onblur(); return true;" onmouseover="window.status=\'clear the date\'; return true;" onmouseout="window.status=\'\'; return true;" style="cursor:pointer; cursor:hand"><i class="' . $_style["actions_calendar_delete"] . '"></i></a>'; |
|
| 50 | 50 | |
| 51 | - break; |
|
| 52 | - case "dropdown": // handler for select boxes |
|
| 53 | - $field_html .= '<select id="tv' . $field_id . '" name="tv' . $field_id . '" size="1" onchange="documentDirty=true;">'; |
|
| 54 | - $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 55 | - while(list($item, $itemvalue) = each($index_list)) { |
|
| 56 | - list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); |
|
| 57 | - if(strlen($itemvalue) == 0) { |
|
| 58 | - $itemvalue = $item; |
|
| 59 | - } |
|
| 60 | - $field_html .= '<option value="' . $modx->htmlspecialchars($itemvalue) . '"' . ($itemvalue == $field_value ? ' selected="selected"' : '') . '>' . $modx->htmlspecialchars($item) . '</option>'; |
|
| 61 | - } |
|
| 62 | - $field_html .= "</select>"; |
|
| 63 | - break; |
|
| 64 | - case "listbox": // handler for select boxes |
|
| 65 | - $field_html .= '<select id="tv' . $field_id . '" name="tv' . $field_id . '" onchange="documentDirty=true;" size="8">'; |
|
| 66 | - $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 67 | - while(list($item, $itemvalue) = each($index_list)) { |
|
| 68 | - list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); |
|
| 69 | - if(strlen($itemvalue) == 0) { |
|
| 70 | - $itemvalue = $item; |
|
| 71 | - } |
|
| 72 | - $field_html .= '<option value="' . $modx->htmlspecialchars($itemvalue) . '"' . ($itemvalue == $field_value ? ' selected="selected"' : '') . '>' . $modx->htmlspecialchars($item) . '</option>'; |
|
| 73 | - } |
|
| 74 | - $field_html .= "</select>"; |
|
| 75 | - break; |
|
| 76 | - case "listbox-multiple": // handler for select boxes where you can choose multiple items |
|
| 77 | - $field_value = explode("||", $field_value); |
|
| 78 | - $field_html .= '<select id="tv' . $field_id . '" name="tv' . $field_id . '[]" multiple="multiple" onchange="documentDirty=true;" size="8">'; |
|
| 79 | - $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 80 | - while(list($item, $itemvalue) = each($index_list)) { |
|
| 81 | - list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); |
|
| 82 | - if(strlen($itemvalue) == 0) { |
|
| 83 | - $itemvalue = $item; |
|
| 84 | - } |
|
| 85 | - $field_html .= '<option value="' . $modx->htmlspecialchars($itemvalue) . '"' . (in_array($itemvalue, $field_value) ? ' selected="selected"' : '') . '>' . $modx->htmlspecialchars($item) . '</option>'; |
|
| 86 | - } |
|
| 87 | - $field_html .= "</select>"; |
|
| 88 | - break; |
|
| 89 | - case "url": // handles url input fields |
|
| 90 | - $urls = array( |
|
| 91 | - '' => '--', |
|
| 92 | - 'http://' => 'http://', |
|
| 93 | - 'https://' => 'https://', |
|
| 94 | - 'ftp://' => 'ftp://', |
|
| 95 | - 'mailto:' => 'mailto:' |
|
| 96 | - ); |
|
| 97 | - $field_html = '<table border="0" cellspacing="0" cellpadding="0"><tr><td><select id="tv' . $field_id . '_prefix" name="tv' . $field_id . '_prefix" onchange="documentDirty=true;">'; |
|
| 98 | - foreach($urls as $k => $v) { |
|
| 99 | - if(strpos($field_value, $v) === false) { |
|
| 100 | - $field_html .= '<option value="' . $v . '">' . $k . '</option>'; |
|
| 101 | - } else { |
|
| 102 | - $field_value = str_replace($v, '', $field_value); |
|
| 103 | - $field_html .= '<option value="' . $v . '" selected="selected">' . $k . '</option>'; |
|
| 104 | - } |
|
| 105 | - } |
|
| 106 | - $field_html .= '</select></td><td>'; |
|
| 107 | - $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" width="100" ' . $field_style . ' onchange="documentDirty=true;" /></td></tr></table>'; |
|
| 108 | - break; |
|
| 109 | - case 'checkbox': // handles check boxes |
|
| 110 | - $values = !is_array($field_value) ? explode('||', $field_value) : $field_value; |
|
| 111 | - $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 112 | - $tpl = '<label class="checkbox"><input type="checkbox" value="%s" id="tv_%s" name="tv%s[]" %s onchange="documentDirty=true;" />%s</label><br />'; |
|
| 113 | - static $i = 0; |
|
| 114 | - $_ = array(); |
|
| 115 | - foreach($index_list as $c => $item) { |
|
| 116 | - if(is_array($item)) { |
|
| 117 | - $name = trim($item[0]); |
|
| 118 | - $value = isset($item[1]) ? $item[1] : $name; |
|
| 119 | - } else { |
|
| 120 | - $item = trim($item); |
|
| 121 | - list($name, $value) = (strpos($item, '==') !== false) ? explode('==', $item, 2) : array( |
|
| 122 | - $item, |
|
| 123 | - $item |
|
| 124 | - ); |
|
| 125 | - } |
|
| 126 | - $checked = in_array($value, $values) ? ' checked="checked"' : ''; |
|
| 127 | - $param = array( |
|
| 128 | - $modx->htmlspecialchars($value), |
|
| 129 | - $i, |
|
| 130 | - $field_id, |
|
| 131 | - $checked, |
|
| 132 | - $modx->htmlspecialchars($name) |
|
| 133 | - ); |
|
| 134 | - $_[] = vsprintf($tpl, $param); |
|
| 135 | - $i++; |
|
| 136 | - } |
|
| 137 | - $field_html = join("\n", $_); |
|
| 138 | - break; |
|
| 139 | - case "option": // handles radio buttons |
|
| 140 | - $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 141 | - static $i = 0; |
|
| 142 | - while(list($item, $itemvalue) = each($index_list)) { |
|
| 143 | - list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); |
|
| 144 | - if(strlen($itemvalue) == 0) { |
|
| 145 | - $itemvalue = $item; |
|
| 146 | - } |
|
| 147 | - $field_html .= '<input type="radio" value="' . $modx->htmlspecialchars($itemvalue) . '" id="tv_' . $i . '" name="tv' . $field_id . '" ' . ($itemvalue == $field_value ? 'checked="checked"' : '') . ' onchange="documentDirty=true;" /><label for="tv_' . $i . '" class="radio">' . $item . '</label><br />'; |
|
| 148 | - $i++; |
|
| 149 | - } |
|
| 150 | - break; |
|
| 151 | - case "image": // handles image fields using htmlarea image manager |
|
| 152 | - global $_lang; |
|
| 153 | - global $ResourceManagerLoaded; |
|
| 154 | - global $content, $use_editor, $which_editor; |
|
| 155 | - if(!$ResourceManagerLoaded && !(($content['richtext'] == 1 || $modx->manager->action == 4) && $use_editor == 1 && $which_editor == 3)) { |
|
| 156 | - $field_html .= " |
|
| 51 | + break; |
|
| 52 | + case "dropdown": // handler for select boxes |
|
| 53 | + $field_html .= '<select id="tv' . $field_id . '" name="tv' . $field_id . '" size="1" onchange="documentDirty=true;">'; |
|
| 54 | + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 55 | + while(list($item, $itemvalue) = each($index_list)) { |
|
| 56 | + list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); |
|
| 57 | + if(strlen($itemvalue) == 0) { |
|
| 58 | + $itemvalue = $item; |
|
| 59 | + } |
|
| 60 | + $field_html .= '<option value="' . $modx->htmlspecialchars($itemvalue) . '"' . ($itemvalue == $field_value ? ' selected="selected"' : '') . '>' . $modx->htmlspecialchars($item) . '</option>'; |
|
| 61 | + } |
|
| 62 | + $field_html .= "</select>"; |
|
| 63 | + break; |
|
| 64 | + case "listbox": // handler for select boxes |
|
| 65 | + $field_html .= '<select id="tv' . $field_id . '" name="tv' . $field_id . '" onchange="documentDirty=true;" size="8">'; |
|
| 66 | + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 67 | + while(list($item, $itemvalue) = each($index_list)) { |
|
| 68 | + list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); |
|
| 69 | + if(strlen($itemvalue) == 0) { |
|
| 70 | + $itemvalue = $item; |
|
| 71 | + } |
|
| 72 | + $field_html .= '<option value="' . $modx->htmlspecialchars($itemvalue) . '"' . ($itemvalue == $field_value ? ' selected="selected"' : '') . '>' . $modx->htmlspecialchars($item) . '</option>'; |
|
| 73 | + } |
|
| 74 | + $field_html .= "</select>"; |
|
| 75 | + break; |
|
| 76 | + case "listbox-multiple": // handler for select boxes where you can choose multiple items |
|
| 77 | + $field_value = explode("||", $field_value); |
|
| 78 | + $field_html .= '<select id="tv' . $field_id . '" name="tv' . $field_id . '[]" multiple="multiple" onchange="documentDirty=true;" size="8">'; |
|
| 79 | + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 80 | + while(list($item, $itemvalue) = each($index_list)) { |
|
| 81 | + list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); |
|
| 82 | + if(strlen($itemvalue) == 0) { |
|
| 83 | + $itemvalue = $item; |
|
| 84 | + } |
|
| 85 | + $field_html .= '<option value="' . $modx->htmlspecialchars($itemvalue) . '"' . (in_array($itemvalue, $field_value) ? ' selected="selected"' : '') . '>' . $modx->htmlspecialchars($item) . '</option>'; |
|
| 86 | + } |
|
| 87 | + $field_html .= "</select>"; |
|
| 88 | + break; |
|
| 89 | + case "url": // handles url input fields |
|
| 90 | + $urls = array( |
|
| 91 | + '' => '--', |
|
| 92 | + 'http://' => 'http://', |
|
| 93 | + 'https://' => 'https://', |
|
| 94 | + 'ftp://' => 'ftp://', |
|
| 95 | + 'mailto:' => 'mailto:' |
|
| 96 | + ); |
|
| 97 | + $field_html = '<table border="0" cellspacing="0" cellpadding="0"><tr><td><select id="tv' . $field_id . '_prefix" name="tv' . $field_id . '_prefix" onchange="documentDirty=true;">'; |
|
| 98 | + foreach($urls as $k => $v) { |
|
| 99 | + if(strpos($field_value, $v) === false) { |
|
| 100 | + $field_html .= '<option value="' . $v . '">' . $k . '</option>'; |
|
| 101 | + } else { |
|
| 102 | + $field_value = str_replace($v, '', $field_value); |
|
| 103 | + $field_html .= '<option value="' . $v . '" selected="selected">' . $k . '</option>'; |
|
| 104 | + } |
|
| 105 | + } |
|
| 106 | + $field_html .= '</select></td><td>'; |
|
| 107 | + $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" width="100" ' . $field_style . ' onchange="documentDirty=true;" /></td></tr></table>'; |
|
| 108 | + break; |
|
| 109 | + case 'checkbox': // handles check boxes |
|
| 110 | + $values = !is_array($field_value) ? explode('||', $field_value) : $field_value; |
|
| 111 | + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 112 | + $tpl = '<label class="checkbox"><input type="checkbox" value="%s" id="tv_%s" name="tv%s[]" %s onchange="documentDirty=true;" />%s</label><br />'; |
|
| 113 | + static $i = 0; |
|
| 114 | + $_ = array(); |
|
| 115 | + foreach($index_list as $c => $item) { |
|
| 116 | + if(is_array($item)) { |
|
| 117 | + $name = trim($item[0]); |
|
| 118 | + $value = isset($item[1]) ? $item[1] : $name; |
|
| 119 | + } else { |
|
| 120 | + $item = trim($item); |
|
| 121 | + list($name, $value) = (strpos($item, '==') !== false) ? explode('==', $item, 2) : array( |
|
| 122 | + $item, |
|
| 123 | + $item |
|
| 124 | + ); |
|
| 125 | + } |
|
| 126 | + $checked = in_array($value, $values) ? ' checked="checked"' : ''; |
|
| 127 | + $param = array( |
|
| 128 | + $modx->htmlspecialchars($value), |
|
| 129 | + $i, |
|
| 130 | + $field_id, |
|
| 131 | + $checked, |
|
| 132 | + $modx->htmlspecialchars($name) |
|
| 133 | + ); |
|
| 134 | + $_[] = vsprintf($tpl, $param); |
|
| 135 | + $i++; |
|
| 136 | + } |
|
| 137 | + $field_html = join("\n", $_); |
|
| 138 | + break; |
|
| 139 | + case "option": // handles radio buttons |
|
| 140 | + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); |
|
| 141 | + static $i = 0; |
|
| 142 | + while(list($item, $itemvalue) = each($index_list)) { |
|
| 143 | + list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); |
|
| 144 | + if(strlen($itemvalue) == 0) { |
|
| 145 | + $itemvalue = $item; |
|
| 146 | + } |
|
| 147 | + $field_html .= '<input type="radio" value="' . $modx->htmlspecialchars($itemvalue) . '" id="tv_' . $i . '" name="tv' . $field_id . '" ' . ($itemvalue == $field_value ? 'checked="checked"' : '') . ' onchange="documentDirty=true;" /><label for="tv_' . $i . '" class="radio">' . $item . '</label><br />'; |
|
| 148 | + $i++; |
|
| 149 | + } |
|
| 150 | + break; |
|
| 151 | + case "image": // handles image fields using htmlarea image manager |
|
| 152 | + global $_lang; |
|
| 153 | + global $ResourceManagerLoaded; |
|
| 154 | + global $content, $use_editor, $which_editor; |
|
| 155 | + if(!$ResourceManagerLoaded && !(($content['richtext'] == 1 || $modx->manager->action == 4) && $use_editor == 1 && $which_editor == 3)) { |
|
| 156 | + $field_html .= " |
|
| 157 | 157 | <script type=\"text/javascript\"> |
| 158 | 158 | /* <![CDATA[ */ |
| 159 | 159 | var lastImageCtrl; |
@@ -212,18 +212,18 @@ discard block |
||
| 212 | 212 | } |
| 213 | 213 | /* ]]> */ |
| 214 | 214 | </script>"; |
| 215 | - $ResourceManagerLoaded = true; |
|
| 216 | - } |
|
| 217 | - $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $field_value . '" ' . $field_style . ' onchange="documentDirty=true;" /><input type="button" value="' . $_lang['insert'] . '" onclick="BrowseServer(\'tv' . $field_id . '\')" />'; |
|
| 218 | - break; |
|
| 219 | - case "file": // handles the input of file uploads |
|
| 220 | - /* Modified by Timon for use with resource browser */ |
|
| 221 | - global $_lang; |
|
| 222 | - global $ResourceManagerLoaded; |
|
| 223 | - global $content, $use_editor, $which_editor; |
|
| 224 | - if(!$ResourceManagerLoaded && !(($content['richtext'] == 1 || $modx->manager->action == 4) && $use_editor == 1 && $which_editor == 3)) { |
|
| 225 | - /* I didn't understand the meaning of the condition above, so I left it untouched ;-) */ |
|
| 226 | - $field_html .= " |
|
| 215 | + $ResourceManagerLoaded = true; |
|
| 216 | + } |
|
| 217 | + $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $field_value . '" ' . $field_style . ' onchange="documentDirty=true;" /><input type="button" value="' . $_lang['insert'] . '" onclick="BrowseServer(\'tv' . $field_id . '\')" />'; |
|
| 218 | + break; |
|
| 219 | + case "file": // handles the input of file uploads |
|
| 220 | + /* Modified by Timon for use with resource browser */ |
|
| 221 | + global $_lang; |
|
| 222 | + global $ResourceManagerLoaded; |
|
| 223 | + global $content, $use_editor, $which_editor; |
|
| 224 | + if(!$ResourceManagerLoaded && !(($content['richtext'] == 1 || $modx->manager->action == 4) && $use_editor == 1 && $which_editor == 3)) { |
|
| 225 | + /* I didn't understand the meaning of the condition above, so I left it untouched ;-) */ |
|
| 226 | + $field_html .= " |
|
| 227 | 227 | <script type=\"text/javascript\"> |
| 228 | 228 | /* <![CDATA[ */ |
| 229 | 229 | var lastImageCtrl; |
@@ -282,101 +282,101 @@ discard block |
||
| 282 | 282 | } |
| 283 | 283 | /* ]]> */ |
| 284 | 284 | </script>"; |
| 285 | - $ResourceManagerLoaded = true; |
|
| 286 | - } |
|
| 287 | - $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $field_value . '" ' . $field_style . ' onchange="documentDirty=true;" /><input type="button" value="' . $_lang['insert'] . '" onclick="BrowseFileServer(\'tv' . $field_id . '\')" />'; |
|
| 285 | + $ResourceManagerLoaded = true; |
|
| 286 | + } |
|
| 287 | + $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $field_value . '" ' . $field_style . ' onchange="documentDirty=true;" /><input type="button" value="' . $_lang['insert'] . '" onclick="BrowseFileServer(\'tv' . $field_id . '\')" />'; |
|
| 288 | 288 | |
| 289 | - break; |
|
| 289 | + break; |
|
| 290 | 290 | |
| 291 | - case 'custom_tv': |
|
| 292 | - $custom_output = ''; |
|
| 293 | - /* If we are loading a file */ |
|
| 294 | - if(substr($field_elements, 0, 5) == "@FILE") { |
|
| 295 | - $file_name = MODX_BASE_PATH . trim(substr($field_elements, 6)); |
|
| 296 | - if(!file_exists($file_name)) { |
|
| 297 | - $custom_output = $file_name . ' does not exist'; |
|
| 298 | - } else { |
|
| 299 | - $custom_output = file_get_contents($file_name); |
|
| 300 | - } |
|
| 301 | - } elseif(substr($field_elements, 0, 8) == '@INCLUDE') { |
|
| 302 | - $file_name = MODX_BASE_PATH . trim(substr($field_elements, 9)); |
|
| 303 | - if(!file_exists($file_name)) { |
|
| 304 | - $custom_output = $file_name . ' does not exist'; |
|
| 305 | - } else { |
|
| 306 | - ob_start(); |
|
| 307 | - include $file_name; |
|
| 308 | - $custom_output = ob_get_contents(); |
|
| 309 | - ob_end_clean(); |
|
| 310 | - } |
|
| 311 | - } elseif(substr($field_elements, 0, 6) == "@CHUNK") { |
|
| 312 | - $chunk_name = trim(substr($field_elements, 7)); |
|
| 313 | - $chunk_body = $modx->getChunk($chunk_name); |
|
| 314 | - if($chunk_body == false) { |
|
| 315 | - $custom_output = $_lang['chunk_no_exist'] . '(' . $_lang['htmlsnippet_name'] . ':' . $chunk_name . ')'; |
|
| 316 | - } else { |
|
| 317 | - $custom_output = $chunk_body; |
|
| 318 | - } |
|
| 319 | - } elseif(substr($field_elements, 0, 5) == "@EVAL") { |
|
| 320 | - $eval_str = trim(substr($field_elements, 6)); |
|
| 321 | - $custom_output = eval($eval_str); |
|
| 322 | - } else { |
|
| 323 | - $custom_output = $field_elements; |
|
| 324 | - } |
|
| 325 | - $replacements = array( |
|
| 326 | - '[+field_type+]' => $field_type, |
|
| 327 | - '[+field_id+]' => $field_id, |
|
| 328 | - '[+default_text+]' => $default_text, |
|
| 329 | - '[+field_value+]' => $modx->htmlspecialchars($field_value), |
|
| 330 | - '[+field_style+]' => $field_style, |
|
| 331 | - ); |
|
| 332 | - $custom_output = str_replace(array_keys($replacements), $replacements, $custom_output); |
|
| 333 | - $modx->documentObject = $content; |
|
| 334 | - $modx->documentIdentifier = $content['id']; |
|
| 335 | - $custom_output = $modx->parseDocumentSource($custom_output); |
|
| 336 | - $field_html .= $custom_output; |
|
| 337 | - break; |
|
| 291 | + case 'custom_tv': |
|
| 292 | + $custom_output = ''; |
|
| 293 | + /* If we are loading a file */ |
|
| 294 | + if(substr($field_elements, 0, 5) == "@FILE") { |
|
| 295 | + $file_name = MODX_BASE_PATH . trim(substr($field_elements, 6)); |
|
| 296 | + if(!file_exists($file_name)) { |
|
| 297 | + $custom_output = $file_name . ' does not exist'; |
|
| 298 | + } else { |
|
| 299 | + $custom_output = file_get_contents($file_name); |
|
| 300 | + } |
|
| 301 | + } elseif(substr($field_elements, 0, 8) == '@INCLUDE') { |
|
| 302 | + $file_name = MODX_BASE_PATH . trim(substr($field_elements, 9)); |
|
| 303 | + if(!file_exists($file_name)) { |
|
| 304 | + $custom_output = $file_name . ' does not exist'; |
|
| 305 | + } else { |
|
| 306 | + ob_start(); |
|
| 307 | + include $file_name; |
|
| 308 | + $custom_output = ob_get_contents(); |
|
| 309 | + ob_end_clean(); |
|
| 310 | + } |
|
| 311 | + } elseif(substr($field_elements, 0, 6) == "@CHUNK") { |
|
| 312 | + $chunk_name = trim(substr($field_elements, 7)); |
|
| 313 | + $chunk_body = $modx->getChunk($chunk_name); |
|
| 314 | + if($chunk_body == false) { |
|
| 315 | + $custom_output = $_lang['chunk_no_exist'] . '(' . $_lang['htmlsnippet_name'] . ':' . $chunk_name . ')'; |
|
| 316 | + } else { |
|
| 317 | + $custom_output = $chunk_body; |
|
| 318 | + } |
|
| 319 | + } elseif(substr($field_elements, 0, 5) == "@EVAL") { |
|
| 320 | + $eval_str = trim(substr($field_elements, 6)); |
|
| 321 | + $custom_output = eval($eval_str); |
|
| 322 | + } else { |
|
| 323 | + $custom_output = $field_elements; |
|
| 324 | + } |
|
| 325 | + $replacements = array( |
|
| 326 | + '[+field_type+]' => $field_type, |
|
| 327 | + '[+field_id+]' => $field_id, |
|
| 328 | + '[+default_text+]' => $default_text, |
|
| 329 | + '[+field_value+]' => $modx->htmlspecialchars($field_value), |
|
| 330 | + '[+field_style+]' => $field_style, |
|
| 331 | + ); |
|
| 332 | + $custom_output = str_replace(array_keys($replacements), $replacements, $custom_output); |
|
| 333 | + $modx->documentObject = $content; |
|
| 334 | + $modx->documentIdentifier = $content['id']; |
|
| 335 | + $custom_output = $modx->parseDocumentSource($custom_output); |
|
| 336 | + $field_html .= $custom_output; |
|
| 337 | + break; |
|
| 338 | 338 | |
| 339 | - default: // the default handler -- for errors, mostly |
|
| 340 | - $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" ' . $field_style . ' onchange="documentDirty=true;" />'; |
|
| 339 | + default: // the default handler -- for errors, mostly |
|
| 340 | + $field_html .= '<input type="text" id="tv' . $field_id . '" name="tv' . $field_id . '" value="' . $modx->htmlspecialchars($field_value) . '" ' . $field_style . ' onchange="documentDirty=true;" />'; |
|
| 341 | 341 | |
| 342 | - } // end switch statement |
|
| 343 | - } else { |
|
| 344 | - $custom = explode(":", $field_type); |
|
| 345 | - $custom_output = ''; |
|
| 346 | - $file_name = MODX_BASE_PATH . 'assets/tvs/' . $custom['1'] . '/' . $custom['1'] . '.customtv.php'; |
|
| 347 | - if(!file_exists($file_name)) { |
|
| 348 | - $custom_output = $file_name . ' does not exist'; |
|
| 349 | - } else { |
|
| 350 | - ob_start(); |
|
| 351 | - include $file_name; |
|
| 352 | - $custom_output = ob_get_contents(); |
|
| 353 | - ob_end_clean(); |
|
| 354 | - } |
|
| 355 | - $replacements = array( |
|
| 356 | - '[+field_type+]' => $field_type, |
|
| 357 | - '[+field_id+]' => $field_id, |
|
| 358 | - '[+default_text+]' => $default_text, |
|
| 359 | - '[+field_value+]' => $modx->htmlspecialchars($field_value), |
|
| 360 | - '[+field_style+]' => $field_style, |
|
| 361 | - ); |
|
| 362 | - $custom_output = str_replace(array_keys($replacements), $replacements, $custom_output); |
|
| 363 | - $modx->documentObject = $content; |
|
| 364 | - $custom_output = $modx->parseDocumentSource($custom_output); |
|
| 365 | - $field_html .= $custom_output; |
|
| 366 | - } |
|
| 342 | + } // end switch statement |
|
| 343 | + } else { |
|
| 344 | + $custom = explode(":", $field_type); |
|
| 345 | + $custom_output = ''; |
|
| 346 | + $file_name = MODX_BASE_PATH . 'assets/tvs/' . $custom['1'] . '/' . $custom['1'] . '.customtv.php'; |
|
| 347 | + if(!file_exists($file_name)) { |
|
| 348 | + $custom_output = $file_name . ' does not exist'; |
|
| 349 | + } else { |
|
| 350 | + ob_start(); |
|
| 351 | + include $file_name; |
|
| 352 | + $custom_output = ob_get_contents(); |
|
| 353 | + ob_end_clean(); |
|
| 354 | + } |
|
| 355 | + $replacements = array( |
|
| 356 | + '[+field_type+]' => $field_type, |
|
| 357 | + '[+field_id+]' => $field_id, |
|
| 358 | + '[+default_text+]' => $default_text, |
|
| 359 | + '[+field_value+]' => $modx->htmlspecialchars($field_value), |
|
| 360 | + '[+field_style+]' => $field_style, |
|
| 361 | + ); |
|
| 362 | + $custom_output = str_replace(array_keys($replacements), $replacements, $custom_output); |
|
| 363 | + $modx->documentObject = $content; |
|
| 364 | + $custom_output = $modx->parseDocumentSource($custom_output); |
|
| 365 | + $field_html .= $custom_output; |
|
| 366 | + } |
|
| 367 | 367 | |
| 368 | - return $field_html; |
|
| 368 | + return $field_html; |
|
| 369 | 369 | } // end renderFormElement function |
| 370 | 370 | |
| 371 | 371 | function ParseIntputOptions($v) { |
| 372 | - global $modx; |
|
| 373 | - $a = array(); |
|
| 374 | - if(is_array($v)) { |
|
| 375 | - return $v; |
|
| 376 | - } else if($modx->db->isResult($v)) { |
|
| 377 | - while($cols = $modx->db->getRow($v, 'num')) $a[] = $cols; |
|
| 378 | - } else { |
|
| 379 | - $a = explode("||", $v); |
|
| 380 | - } |
|
| 381 | - return $a; |
|
| 372 | + global $modx; |
|
| 373 | + $a = array(); |
|
| 374 | + if(is_array($v)) { |
|
| 375 | + return $v; |
|
| 376 | + } else if($modx->db->isResult($v)) { |
|
| 377 | + while($cols = $modx->db->getRow($v, 'num')) $a[] = $cols; |
|
| 378 | + } else { |
|
| 379 | + $a = explode("||", $v); |
|
| 380 | + } |
|
| 381 | + return $a; |
|
| 382 | 382 | } |
@@ -19,60 +19,60 @@ |
||
| 19 | 19 | </head><body> |
| 20 | 20 | "; |
| 21 | 21 | if($is_error) { |
| 22 | - $parsedMessageString .= "<h3 style='color:red;background:#e0e0e0;padding:2px;'> MODX Parse Error </h3> |
|
| 22 | + $parsedMessageString .= "<h3 style='color:red;background:#e0e0e0;padding:2px;'> MODX Parse Error </h3> |
|
| 23 | 23 | <table border='0' cellpadding='1' cellspacing='0'> |
| 24 | 24 | <tr><td colspan='3'>MODX encountered the following error while attempting to parse the requested resource:</td></tr> |
| 25 | 25 | <tr><td colspan='3'><b style='color:red;'>« $msg »</b></td></tr>"; |
| 26 | 26 | } else { |
| 27 | - $parsedMessageString .= "<h3 style='color:#003399; background:#eeeeee;padding:2px;'> MODX Debug/ stop message </h3> |
|
| 27 | + $parsedMessageString .= "<h3 style='color:#003399; background:#eeeeee;padding:2px;'> MODX Debug/ stop message </h3> |
|
| 28 | 28 | <table border='0' cellpadding='1' cellspacing='0'> |
| 29 | 29 | <tr><td colspan='3'>The MODX parser recieved the following debug/ stop message:</td></tr> |
| 30 | 30 | <tr><td colspan='3'><b style='color:#003399;'>« $msg »</b></td></tr>"; |
| 31 | 31 | } |
| 32 | 32 | |
| 33 | 33 | if(!empty($query)) { |
| 34 | - $parsedMessageString .= "<tr><td colspan='3'><hr size='1' width='98%' style='color:#e0e0e0'/><b style='color:#999;font-size: 9px;border-left:1px solid #c0c0c0; margin-left:10px;'> SQL: <span id='sqlHolder'>$query</span></b><hr size='1' width='98%' style='color:#e0e0e0'/> |
|
| 34 | + $parsedMessageString .= "<tr><td colspan='3'><hr size='1' width='98%' style='color:#e0e0e0'/><b style='color:#999;font-size: 9px;border-left:1px solid #c0c0c0; margin-left:10px;'> SQL: <span id='sqlHolder'>$query</span></b><hr size='1' width='98%' style='color:#e0e0e0'/> |
|
| 35 | 35 | <a href='javascript:copyToClip();' style='color:#821517;font-size: 9px; text-decoration: none'>[Copy SQL to ClipBoard]</a><textarea id='holdtext' style='display:none;'></textarea></td></tr>"; |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | 38 | if($text!='') { |
| 39 | 39 | |
| 40 | - $errortype = array ( |
|
| 41 | - E_ERROR => "Error", |
|
| 42 | - E_WARNING => "Warning", |
|
| 43 | - E_PARSE => "Parsing Error", |
|
| 44 | - E_NOTICE => "Notice", |
|
| 45 | - E_CORE_ERROR => "Core Error", |
|
| 46 | - E_CORE_WARNING => "Core Warning", |
|
| 47 | - E_COMPILE_ERROR => "Compile Error", |
|
| 48 | - E_COMPILE_WARNING => "Compile Warning", |
|
| 49 | - E_USER_ERROR => "User Error", |
|
| 50 | - E_USER_WARNING => "User Warning", |
|
| 51 | - E_USER_NOTICE => "User Notice", |
|
| 52 | - ); |
|
| 40 | + $errortype = array ( |
|
| 41 | + E_ERROR => "Error", |
|
| 42 | + E_WARNING => "Warning", |
|
| 43 | + E_PARSE => "Parsing Error", |
|
| 44 | + E_NOTICE => "Notice", |
|
| 45 | + E_CORE_ERROR => "Core Error", |
|
| 46 | + E_CORE_WARNING => "Core Warning", |
|
| 47 | + E_COMPILE_ERROR => "Compile Error", |
|
| 48 | + E_COMPILE_WARNING => "Compile Warning", |
|
| 49 | + E_USER_ERROR => "User Error", |
|
| 50 | + E_USER_WARNING => "User Warning", |
|
| 51 | + E_USER_NOTICE => "User Notice", |
|
| 52 | + ); |
|
| 53 | 53 | |
| 54 | - $parsedMessageString .= "<tr><td> </td></tr><tr><td colspan='3'><b>PHP error debug</b></td></tr>"; |
|
| 54 | + $parsedMessageString .= "<tr><td> </td></tr><tr><td colspan='3'><b>PHP error debug</b></td></tr>"; |
|
| 55 | 55 | |
| 56 | - $parsedMessageString .= "<tr><td valign='top'> Error: </td>"; |
|
| 57 | - $parsedMessageString .= "<td colspan='2'>$text</td><td> </td>"; |
|
| 58 | - $parsedMessageString .= "</tr>"; |
|
| 56 | + $parsedMessageString .= "<tr><td valign='top'> Error: </td>"; |
|
| 57 | + $parsedMessageString .= "<td colspan='2'>$text</td><td> </td>"; |
|
| 58 | + $parsedMessageString .= "</tr>"; |
|
| 59 | 59 | |
| 60 | - $parsedMessageString .= "<tr><td valign='top'> Error type/ Nr.: </td>"; |
|
| 61 | - $parsedMessageString .= "<td colspan='2'>".$errortype[$nr]." - $nr</b></td><td> </td>"; |
|
| 62 | - $parsedMessageString .= "</tr>"; |
|
| 60 | + $parsedMessageString .= "<tr><td valign='top'> Error type/ Nr.: </td>"; |
|
| 61 | + $parsedMessageString .= "<td colspan='2'>".$errortype[$nr]." - $nr</b></td><td> </td>"; |
|
| 62 | + $parsedMessageString .= "</tr>"; |
|
| 63 | 63 | |
| 64 | - $parsedMessageString .= "<tr><td> File: </td>"; |
|
| 65 | - $parsedMessageString .= "<td colspan='2'>$file</td><td> </td>"; |
|
| 66 | - $parsedMessageString .= "</tr>"; |
|
| 64 | + $parsedMessageString .= "<tr><td> File: </td>"; |
|
| 65 | + $parsedMessageString .= "<td colspan='2'>$file</td><td> </td>"; |
|
| 66 | + $parsedMessageString .= "</tr>"; |
|
| 67 | 67 | |
| 68 | - $parsedMessageString .= "<tr><td> Line: </td>"; |
|
| 69 | - $parsedMessageString .= "<td colspan='2'>$line</td><td> </td>"; |
|
| 70 | - $parsedMessageString .= "</tr>"; |
|
| 71 | - if($source!='') { |
|
| 72 | - $parsedMessageString .= "<tr><td valign='top'> Line $line source: </td>"; |
|
| 73 | - $parsedMessageString .= "<td colspan='2'>$source</td><td> </td>"; |
|
| 74 | - $parsedMessageString .= "</tr>"; |
|
| 75 | - } |
|
| 68 | + $parsedMessageString .= "<tr><td> Line: </td>"; |
|
| 69 | + $parsedMessageString .= "<td colspan='2'>$line</td><td> </td>"; |
|
| 70 | + $parsedMessageString .= "</tr>"; |
|
| 71 | + if($source!='') { |
|
| 72 | + $parsedMessageString .= "<tr><td valign='top'> Line $line source: </td>"; |
|
| 73 | + $parsedMessageString .= "<td colspan='2'>$source</td><td> </td>"; |
|
| 74 | + $parsedMessageString .= "</tr>"; |
|
| 75 | + } |
|
| 76 | 76 | } |
| 77 | 77 | |
| 78 | 78 | $parsedMessageString .= "<tr><td> </td></tr><tr><td colspan='3'><b>Parser timing</b></td></tr>"; |