PageRenderTime 40ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/assets/modules/docmanager/tv.ajax.php

https://github.com/good-web-master/modx.evo.custom
PHP | 285 lines | 250 code | 29 blank | 6 comment | 43 complexity | 1643c13489024a581acd9e174670c97c MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-1.0, GPL-2.0, MIT, BSD-3-Clause
  1. <?php
  2. /**
  3. * This file includes slightly modified code from the MODx core distribution.
  4. */
  5. require_once '../../../manager/includes/protect.inc.php';
  6. include_once ('../../../manager/includes/config.inc.php');
  7. include_once (MODX_BASE_PATH.'manager/includes/document.parser.class.inc.php');
  8. include_once (MODX_BASE_PATH.'assets/modules/docmanager/classes/docmanager.class.php');
  9. $modx = new DocumentParser;
  10. $modx->getSettings();
  11. $dm = new DocManager($modx);
  12. $dm->getLang();
  13. $dm->getTheme();
  14. $output = '';
  15. if(isset($_POST['tplID']) && is_numeric($_POST['tplID'])) {
  16. $sql = "SELECT * FROM ".$modx->getFullTableName('site_tmplvars')." tv LEFT JOIN ".$modx->getFullTableName('site_tmplvar_templates')." ON tv.id = ".$modx->getFullTableName('site_tmplvar_templates').".tmplvarid WHERE ".$modx->getFullTableName('site_tmplvar_templates').".templateid ='". $_POST['tplID']."'";
  17. $rs = $modx->db->query($sql);
  18. $limit = $modx->db->getRecordCount($rs);
  19. if ($limit > 0) {
  20. require (MODX_BASE_PATH.'/manager/includes/tmplvars.commands.inc.php');
  21. $output.= "<table style='position:relative' border='0' cellspacing='0' cellpadding='3' width='96%'>";
  22. for ($i=0; $i<$limit; $i++) {
  23. $row = $modx->db->getRow($rs);
  24. if($i>0 && $i<$limit) $output .= '<tr><td colspan="2"><div class="split"></div></td></tr>';
  25. $output.='<tr style="height: 24px;">
  26. <td align="left" valign="top" width="200">
  27. <span class=\'warning\'><input type=\'checkbox\' name=\'update_tv_' . $row['id'] . '\' id=\'cb_update_tv_' . $row['id'] . '\' value=\'yes\' />&nbsp;'.$row['caption'].'</span><br /><span class=\'comment\'>'.$row['description'].'</span>
  28. </td>
  29. <td valign="top" style="position:relative">';
  30. $base_url = str_replace("assets/modules/docmanager/", "", MODX_BASE_URL);
  31. $output.= renderFormElement($row['type'], $row['id'], $row['default_text'], $row['elements'], $row['value'], ' style="width:300px;"');
  32. $output.= '</td></tr>';
  33. }
  34. $output.='</table>';
  35. //$output.= '<br />'.$dm->lang['DM_tv_ignore_tv'].' <input type="text" id="ignoreTV" name="ignoreTV" size="50" value="" />';
  36. } else {
  37. print $dm->lang['DM_tv_no_tv'];
  38. }
  39. print $output;
  40. } else {
  41. print '';
  42. }
  43. function renderFormElement($field_type, $field_id, $default_text, $field_elements, $field_value, $field_style='') {
  44. global $modx;
  45. global $dm;
  46. global $base_url;
  47. global $rb_base_url;
  48. $field_html ='';
  49. $field_value = ($field_value!="" ? $field_value : $default_text);
  50. switch ($field_type) {
  51. case "text": // handler for regular text boxes
  52. case "rawtext"; // non-htmlentity converted text boxes
  53. case "email": // handles email input fields
  54. case "number": // handles the input of numbers
  55. $field_html .= '<input type="text" id="tv'.$field_id.'" name="tv'.$field_id.'" value="'.htmlspecialchars($field_value).'" '.$field_style.' tvtype="'.$field_type.'" onchange="documentDirty=true;" style="width:100%" />';
  56. break;
  57. case "textareamini": // handler for textarea mini boxes
  58. $field_html .= '<textarea id="tv'.$field_id.'" name="tv'.$field_id.'" cols="40" rows="5" onchange="documentDirty=true;" style="width:100%">' . htmlspecialchars($field_value) .'</textarea>';
  59. break;
  60. case "textarea": // handler for textarea boxes
  61. case "rawtextarea": // non-htmlentity convertex textarea boxes
  62. case "htmlarea": // handler for textarea boxes (deprecated)
  63. case "richtext": // handler for textarea boxes
  64. $field_html .= '<textarea id="tv'.$field_id.'" name="tv'.$field_id.'" cols="40" rows="15" onchange="documentDirty=true;" style="width:100%;">' . htmlspecialchars($field_value) .'</textarea>';
  65. break;
  66. case "date":
  67. $field_id = str_replace(array('-', '.'),'_', urldecode($field_id));
  68. if($field_value=='') $field_value=0;
  69. $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;" />';
  70. $field_html .= ' <a onclick="document.forms[\'templatevariables\'].elements[\'tv'.$field_id.'\'].value=\'\';document.forms[\'templatevariables\'].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"><img src="media/style/'.(!empty($dm->theme) ? $dm->theme."/":"").'images/icons/cal_nodate.gif" width="16" height="16" border="0" alt="No date"></a>';
  71. $field_html .= '<script type="text/javascript">';
  72. $field_html .= ' new DatePicker($(\'tv'.$field_id.'\'), {\'yearOffset\' : '.$modx->config['datepicker_offset']. ", 'format' : " . "'" . $modx->config['datetime_format'] . ' hh:mm:00\'' . '});';
  73. $field_html .= '</script>';
  74. break;
  75. case "dropdown": // handler for select boxes
  76. $field_html .= '<select id="tv'.$field_id.'" name="tv'.$field_id.'" size="1" onchange="documentDirty=true;">';
  77. $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id));
  78. while (list($item, $itemvalue) = each ($index_list))
  79. {
  80. list($item,$itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==",$itemvalue);
  81. if (strlen($itemvalue)==0) $itemvalue = $item;
  82. $field_html .= '<option value="'.htmlspecialchars($itemvalue).'"'.($itemvalue==$field_value ?' selected="selected"':'').'>'.htmlspecialchars($item).'</option>';
  83. }
  84. $field_html .= "</select>";
  85. break;
  86. case "listbox": // handler for select boxes
  87. $field_html .= '<select id="tv'.$field_id.'" name="tv'.$field_id.'" onchange="documentDirty=true;" size="8">';
  88. $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id));
  89. while (list($item, $itemvalue) = each ($index_list))
  90. {
  91. list($item,$itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==",$itemvalue);
  92. if (strlen($itemvalue)==0) $itemvalue = $item;
  93. $field_html .= '<option value="'.htmlspecialchars($itemvalue).'"'.($itemvalue==$field_value ?' selected="selected"':'').'>'.htmlspecialchars($item).'</option>';
  94. }
  95. $field_html .= "</select>";
  96. break;
  97. case "listbox-multiple": // handler for select boxes where you can choose multiple items
  98. $field_value = explode("||",$field_value);
  99. $field_html .= '<select id="tv'.$field_id.'[]" name="tv'.$field_id.'[]" multiple="multiple" onchange="documentDirty=true;" size="8">';
  100. $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id));
  101. while (list($item, $itemvalue) = each ($index_list))
  102. {
  103. list($item,$itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==",$itemvalue);
  104. if (strlen($itemvalue)==0) $itemvalue = $item;
  105. $field_html .= '<option value="'.htmlspecialchars($itemvalue).'"'.(in_array($itemvalue,$field_value) ?' selected="selected"':'').'>'.htmlspecialchars($item).'</option>';
  106. }
  107. $field_html .= "</select>";
  108. break;
  109. case "url": // handles url input fields
  110. $urls= array(''=>'--', 'http://'=>'http://', 'https://'=>'https://', 'ftp://'=>'ftp://', 'mailto:'=>'mailto:');
  111. $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;">';
  112. foreach($urls as $k => $v){
  113. if(strpos($field_value,$v)===false) $field_html.='<option value="'.$v.'">'.$k.'</option>';
  114. else{
  115. $field_value = str_replace($v,'',$field_value);
  116. $field_html.='<option value="'.$v.'" selected="selected">'.$k.'</option>';
  117. }
  118. }
  119. $field_html .='</select></td><td>';
  120. $field_html .= '<input type="text" id="tv'.$field_id.'" name="tv'.$field_id.'" value="'.htmlspecialchars($field_value).'" width="100" '.$field_style.' onchange="documentDirty=true;" /></td></tr></table>';
  121. break;
  122. case "checkbox": // handles check boxes
  123. $field_value = !is_array($field_value) ? explode("||",$field_value) : $field_value;
  124. $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id));
  125. static $i=0;
  126. while (list($item, $itemvalue) = each ($index_list))
  127. {
  128. list($item,$itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==",$itemvalue);
  129. if (strlen($itemvalue)==0) $itemvalue = $item;
  130. $field_html .= '<input type="checkbox" value="'.htmlspecialchars($itemvalue).'" id="tv_'.$i.'" name="tv'.$field_id.'[]" '. (in_array($itemvalue,$field_value)?" checked='checked'":"").' onchange="documentDirty=true;" /><label for="tv_'.$i.'">'.$item.'</label><br />';
  131. $i++;
  132. }
  133. break;
  134. case "option": // handles radio buttons
  135. $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id));
  136. while (list($item, $itemvalue) = each ($index_list))
  137. {
  138. list($item,$itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==",$itemvalue);
  139. if (strlen($itemvalue)==0) $itemvalue = $item;
  140. $field_html .= '<input type="radio" value="'.htmlspecialchars($itemvalue).'" name="tv'.$field_id.'" '.($itemvalue==$field_value ?'checked="checked"':'').' onchange="documentDirty=true;" />'.$item.'<br />';
  141. }
  142. break;
  143. case "image": // handles image fields using htmlarea image manager
  144. global $ResourceManagerLoaded;
  145. global $content,$use_editor,$which_editor;
  146. if (!$ResourceManagerLoaded && !(($content['richtext']==1 || $_GET['a']==4) && $use_editor==1 && $which_editor==3)){
  147. $field_html .="
  148. <script type=\"text/javascript\">
  149. var lastImageCtrl;
  150. var lastFileCtrl;
  151. function OpenServerBrowser(url, width, height ) {
  152. var iLeft = (screen.width - width) / 2 ;
  153. var iTop = (screen.height - height) / 2 ;
  154. var sOptions = 'toolbar=no,status=no,resizable=yes,dependent=yes' ;
  155. sOptions += ',width=' + width ;
  156. sOptions += ',height=' + height ;
  157. sOptions += ',left=' + iLeft ;
  158. sOptions += ',top=' + iTop ;
  159. var oWindow = window.open( url, 'FCKBrowseWindow', sOptions ) ;
  160. }
  161. function BrowseServer(ctrl) {
  162. lastImageCtrl = ctrl;
  163. var w = screen.width * 0.7;
  164. var h = screen.height * 0.7;
  165. OpenServerBrowser('".$base_url."manager/media/browser/mcpuk/browser.html?Type=images&Connector=".$base_url."manager/media/browser/mcpuk/connectors/php/connector.php&ServerPath=".$base_url."', w, h);
  166. }
  167. function BrowseFileServer(ctrl) {
  168. lastFileCtrl = ctrl;
  169. var w = screen.width * 0.7;
  170. var h = screen.height * 0.7;
  171. OpenServerBrowser('".$base_url."manager/media/browser/mcpuk/browser.html?Type=files&Connector=".$base_url."manager/media/browser/mcpuk/connectors/php/connector.php&ServerPath=".$base_url."', w, h);
  172. }
  173. function SetUrl(url, width, height, alt){
  174. if(lastFileCtrl) {
  175. var c = document.templatevariables[lastFileCtrl];
  176. if(c) c.value = url;
  177. lastFileCtrl = '';
  178. } else if(lastImageCtrl) {
  179. var c = document.templatevariables[lastImageCtrl];
  180. if(c) c.value = url;
  181. lastImageCtrl = '';
  182. } else {
  183. return;
  184. }
  185. }
  186. </script>";
  187. $ResourceManagerLoaded = true;
  188. }
  189. $field_html .='<input type="text" id="tv'.$field_id.'" name="tv'.$field_id.'" value="'.$field_value .'" '.$field_style.' onchange="documentDirty=true;" />&nbsp;<input type="button" value="'.$dm->lang['insert'].'" onclick="BrowseServer(\'tv'.$field_id.'\')" />';
  190. break;
  191. case "file": // handles the input of file uploads
  192. /* Modified by Timon for use with resource browser */
  193. global $ResourceManagerLoaded;
  194. global $content,$use_editor,$which_editor;
  195. if (!$ResourceManagerLoaded && !(($content['richtext']==1 || $_GET['a']==4) && $use_editor==1 && $which_editor==3)){
  196. /* I didn't understand the meaning of the condition above, so I left it untouched ;-) */
  197. $field_html .="
  198. <script type=\"text/javascript\">
  199. var lastImageCtrl;
  200. var lastFileCtrl;
  201. function OpenServerBrowser(url, width, height ) {
  202. var iLeft = (screen.width - width) / 2 ;
  203. var iTop = (screen.height - height) / 2 ;
  204. var sOptions = 'toolbar=no,status=no,resizable=yes,dependent=yes' ;
  205. sOptions += ',width=' + width ;
  206. sOptions += ',height=' + height ;
  207. sOptions += ',left=' + iLeft ;
  208. sOptions += ',top=' + iTop ;
  209. var oWindow = window.open( url, 'FCKBrowseWindow', sOptions ) ;
  210. }
  211. function BrowseServer(ctrl) {
  212. lastImageCtrl = ctrl;
  213. var w = screen.width * 0.7;
  214. var h = screen.height * 0.7;
  215. OpenServerBrowser('".$base_url."manager/media/browser/mcpuk/browser.html?Type=images&Connector=".$base_url."manager/media/browser/mcpuk/connectors/php/connector.php&ServerPath=".$base_url."', w, h);
  216. }
  217. function BrowseFileServer(ctrl) {
  218. lastFileCtrl = ctrl;
  219. var w = screen.width * 0.7;
  220. var h = screen.height * 0.7;
  221. OpenServerBrowser('".$base_url."manager/media/browser/mcpuk/browser.html?Type=files&Connector=".$base_url."manager/media/browser/mcpuk/connectors/php/connector.php&ServerPath=".$base_url."', w, h);
  222. }
  223. function SetUrl(url, width, height, alt){
  224. if(lastFileCtrl) {
  225. var c = document.templatevariables[lastFileCtrl];
  226. if(c) c.value = url;
  227. lastFileCtrl = '';
  228. } else if(lastImageCtrl) {
  229. var c = document.templatevariables[lastImageCtrl];
  230. if(c) c.value = url;
  231. lastImageCtrl = '';
  232. } else {
  233. return;
  234. }
  235. }
  236. </script>";
  237. $ResourceManagerLoaded = true;
  238. }
  239. $field_html .='<input type="text" id="tv'.$field_id.'" name="tv'.$field_id.'" value="'.$field_value .'" '.$field_style.' onchange="documentDirty=true;" />&nbsp;<input type="button" value="'.$dm->lang['insert'].'" onclick="BrowseFileServer(\'tv'.$field_id.'\')" />';
  240. break;
  241. default: // the default handler -- for errors, mostly
  242. $field_html .= '<input type="text" id="tv'.$field_id.'" name="tv'.$field_id.'" value="'.htmlspecialchars($field_value).'" '.$field_style.' onchange="documentDirty=true;" />';
  243. } // end switch statement
  244. return $field_html;
  245. } // end renderFormElement function
  246. function ParseIntputOptions($v) {
  247. $a = array();
  248. if(is_array($v)) return $v;
  249. else if(is_resource($v)) {
  250. while ($cols = mysql_fetch_row($v)) $a[] = $cols;
  251. }
  252. else $a = explode("||", $v);
  253. return $a;
  254. }
  255. ?>