PageRenderTime 43ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/designthemes-core-features/page-builder/functions.php

https://gitlab.com/Suhailgit/Project
PHP | 817 lines | 563 code | 203 blank | 51 comment | 139 complexity | 69cca917261ba86c562f0125f5bf9e3c MD5 | raw file
  1. <?php
  2. /**
  3. * A function to get modules menu list
  4. */
  5. if ( ! function_exists('dt_get_modules_menu') ){
  6. function dt_get_modules_menu($show){
  7. global $dtthemes_columns, $dtthemes_sample_layouts, $post, $postid, $theme_name, $dtthemes_modules, $dt_module_titles, $dt_widget_titles, $dt_widgets;
  8. if(isset($dtthemes_columns) && $show): ?><a href="#" class="dt_add_element dt_add_column"><?php esc_html_e('Columns', 'dt_themes'); ?></a><?php endif;
  9. foreach($dt_module_titles as $dt_mod_key => $dt_module_title) {
  10. if(isset($dtthemes_modules[$dt_mod_key])) {
  11. ?>
  12. <a href="#" class="dt_add_element <?php echo 'dt_add_'.$dt_mod_key ; ?>"><?php echo $dt_module_title; ?></a>
  13. <?php
  14. }
  15. }
  16. foreach($dt_widget_titles as $dt_mod_key => $dt_widget_title) {
  17. $i = 0;
  18. foreach ( $dt_widgets as $module_key => $module_settings ){
  19. if ($dt_widget_title['search_key'] != '*' && strpos($module_key, $dt_widget_title['search_key']) !== false) $i++; elseif ($dt_widget_title['search_key'] == '*') $i++;
  20. }
  21. if($i > 0) {
  22. ?>
  23. <a href="#" class="dt_add_element <?php echo 'dt_add_'.$dt_mod_key ; ?>"><?php echo $dt_widget_title['name']; ?></a>
  24. <?php
  25. }
  26. }
  27. if(isset($dtthemes_sample_layouts) && $show): ?><a href="#" class="dt_add_element dt_add_sample_layout"><?php esc_html_e('Sample Layouts', 'dt_themes'); ?></a><?php endif;
  28. ?>
  29. <?php
  30. }
  31. }
  32. /**
  33. * A function to get complete modules list
  34. */
  35. if ( ! function_exists('dt_get_modules_list') ){
  36. function dt_get_modules_list($modid){
  37. global $dtthemes_columns, $dtthemes_sample_layouts, $post, $postid, $theme_name, $dt_module_titles, $dtthemes_modules, $dt_widget_titles, $dt_widgets;
  38. $mid = '';
  39. if(isset($modid) && $modid != '') $mid = "id='".$modid."'";
  40. // Columns
  41. if(isset($dtthemes_columns)):
  42. foreach ( $dtthemes_columns as $column_key => $column_settings ){
  43. if($column_settings['type'] != 'section') {
  44. if($column_key != 'resizable') $extra_cls = 'dt_disable_resize'; else $extra_cls = '';
  45. echo "<div ".$mid." data-placeholder='" . esc_attr( $column_settings['name'] ) . "' data-name='" . esc_attr( $column_key ) . "' class='" . esc_attr( "dt_module dt_m_column {$extra_cls} dt_m_column_{$column_key}" ) . "'>" .
  46. '<div class="dt_module_controls">
  47. <span class="dt_module_name dt_column_name">' . esc_html( $column_settings['name'] ) . '</span>
  48. <span class="dt_move"></span>
  49. <div class="dt_module_options">
  50. <span class="dt_delete_column" title="Delete"></span>
  51. <span class="dt_clone_column" title="Clone"></span>
  52. <span class="dt_settings_arrow_column" title="Settings"></span>
  53. <span class="dt_add_module_column" title="Add Module" style="display:none;">A</span>
  54. </div>
  55. <div class="dt_columndata_settings"></div>
  56. </div><div class="dt_modules_container"></div>
  57. </div>';
  58. } else {
  59. echo "<div".$mid." data-placeholder='" . esc_attr( $column_settings['name'] ) . "' data-name='".$column_key."' class='" . esc_attr( "dt_module dt_disable_resize dt_fullwidth_section {$column_key}" ) . "'>" .
  60. '<div class="dt_module_controls">
  61. <span class="dt_module_name dt_column_name">'.$column_settings['name'].'</span>
  62. <span class="dt_move"></span>
  63. <div class="dt_module_options">
  64. <span class="dt_delete_column" title="Delete"></span>
  65. <span class="dt_clone_column" title="Clone"></span>
  66. <span class="dt_settings_arrow_fullwidth" title="Settings"></span>
  67. <span class="dt_add_module_column" title="Add Module" style="display:none;">A</span>
  68. </div>
  69. <div class="dt_fullwidthsection_data_settings"></div>
  70. </div><div class="dt_fullwidth_section_container"></div>
  71. </div>';
  72. }
  73. }
  74. endif;
  75. // Modules
  76. foreach($dt_module_titles as $dt_mod_key => $dt_module_title) {
  77. if(isset($dtthemes_modules[$dt_mod_key])) {
  78. foreach ( $dtthemes_modules[$dt_mod_key] as $module_key => $module_settings ) {
  79. $class = "dt_module dt_m_{$module_key} dt_module_".$dt_mod_key;
  80. if(isset($module_settings['disable_resize'])) $class .= " dt_disable_resize";
  81. if(isset($module_settings['full_width']) && $module_settings['full_width']) $class .= ' dt_full_width';
  82. if(isset($module_settings['tooltip'])) $tooltip = $module_settings['tooltip']; else $tooltip = $module_settings['name'];
  83. if(isset($module_settings['width'])) $spacer_width = " data-width='" . esc_attr( $module_settings['width'] ) . "'"; else $spacer_width = '';
  84. echo "<div ".$mid." data-placeholder='" . esc_attr( $module_settings['name'] ) . "' data-name='" . esc_attr( $module_key ) . "' class='" . esc_attr( $class ) . " dt-sc-tooltip' title='" . $tooltip . "' " . $spacer_width . ">" .
  85. '<span class="' . esc_html( $module_settings['icon_class'] ) . ' dt_icon"></span>
  86. <span class="dt_module_name">' . esc_html( $module_settings['name'] ) . '</span>';
  87. echo '<div class="dt_module_options">';
  88. if(!isset($module_settings['disable_resize'])) echo '<span class="dt_move"></span>';
  89. echo '<span class="dt_showorhide dt_show" title="Show"></span>
  90. <span class="dt_delete" title="Delete"></span>
  91. <span class="dt_clone_module" title="Clone"></span>';
  92. if(isset($module_settings['options'])): echo '<span class="dt_settings_arrow_module" title="Settings"></span>'; endif;
  93. echo '</div>
  94. <div class="dt_preview"></div>
  95. <div class="dt_module_settings"></div>
  96. </div>';
  97. }
  98. }
  99. }
  100. // Widgets
  101. $srch_arr = $wdkeys = array();
  102. foreach($dt_widget_titles as $wd_title) { if($wd_title['search_key'] != '*') $wdkeys[] = $wd_title['search_key']; }
  103. foreach($dt_widget_titles as $dt_key => $dt_widget_title) {
  104. foreach ( $dt_widgets as $module_key => $module_settings ){
  105. if ($dt_widget_title['search_key'] != '*' && strpos($module_key, $dt_widget_title['search_key']) !== false) {
  106. $ico_class = explode('-', $module_settings['wpid']);
  107. $class = "dt_module dt_m_widget dt_m_{$module_key} dt_".$dt_key;
  108. if(isset( $module_settings['tooltip'])) $tooltip = $module_settings['tooltip']; else $tooltip = $module_settings['name'];
  109. echo "<div ".$mid." data-placeholder='" . esc_attr( $module_settings['name'] ) . "' data-wpid='" . esc_attr( $module_settings['wpid'] ) . "' data-wpname='" . esc_attr( $module_settings['wpname'] ) . "' data-name='" . esc_attr( $module_key ) . "' data-attr='" . esc_attr( $module_key ) . "' class='" . esc_attr( $class ) . " dt-sc-tooltip' title='" . $tooltip . "'>" .
  110. '<span class="ico-' . $ico_class[0] . ' dt_icon"></span>
  111. <span class="dt_module_name">' . esc_html( $module_settings['name'] ) . '</span>
  112. <div class="dt_module_options">
  113. <span class="dt_move"></span>
  114. <span class="dt_showorhide dt_show" title="Show"></span>
  115. <span class="dt_delete" title="Delete"></span>
  116. <span class="dt_clone_module" title="Clone"></span>';
  117. if(isset($module_settings['form'])): echo '<span class="dt_settings_arrow_widget" title="Settings"></span>'; endif;
  118. echo '</div>
  119. <div class="dt_preview"></div>
  120. <div class="dt_module_settings"></div>
  121. </div>';
  122. } elseif ($dt_widget_title['search_key'] == '*' && !in_array(substr($module_key, 0, 2), $wdkeys)) {
  123. $ico_class = explode('-', $module_settings['wpid']);
  124. $class = "dt_module dt_m_widget dt_m_{$module_key} dt_".$dt_key;
  125. if(isset( $module_settings['tooltip'])) $tooltip = $module_settings['tooltip']; else $tooltip = $module_settings['name'];
  126. echo "<div ".$mid." data-placeholder='" . esc_attr( $module_settings['name'] ) . "' data-wpid='" . esc_attr( $module_settings['wpid'] ) . "' data-wpname='" . esc_attr( $module_settings['wpname'] ) . "' data-name='" . esc_attr( $module_key ) . "' data-attr='" . esc_attr( $module_key ) . "' class='" . esc_attr( $class ) . " dt-sc-tooltip' title='" . $tooltip . "'>" .
  127. '<span class="ico-' . $ico_class[0] . ' dt_icon"></span>
  128. <span class="dt_module_name">' . esc_html( $module_settings['name'] ) . '</span>
  129. <div class="dt_module_options">
  130. <span class="dt_move"></span>
  131. <span class="dt_showorhide dt_show" title="Show"></span>
  132. <span class="dt_delete" title="Delete"></span>
  133. <span class="dt_clone_module" title="Clone"></span>';
  134. if(isset($module_settings['form'])): echo '<span class="dt_settings_arrow_widget" title="Settings"></span>'; endif;
  135. echo '</div>
  136. <div class="dt_preview"></div>
  137. <div class="dt_module_settings"></div>
  138. </div>';
  139. }
  140. }
  141. }
  142. if(isset($dtthemes_sample_layouts)):
  143. foreach ( $dtthemes_sample_layouts as $layout_key => $layout_settings ){
  144. $is_user_sample_layout = isset( $layout_settings['is_user_sample_layout'] ) && $layout_settings['is_user_sample_layout'];
  145. echo "<div ".$mid." data-placeholder='" . esc_attr( $layout_settings['name'] ) . "' data-name='" . esc_attr( $layout_key ) . "' class='" . esc_attr( "dt_module dt_sample_layout" ) . "'>" .
  146. '<span class="dt_module_name">' . esc_html( $layout_settings['name'] ) . '</span>' .
  147. '<span class="dt_move"></span>' . ( $is_user_sample_layout ? '<span class="dt_user_layout_delete">x</span>' : '' ) . '</div>';
  148. }
  149. endif;
  150. }
  151. }
  152. /**
  153. * A action hook to save layout
  154. */
  155. add_action( 'wp_ajax_dt_save_layout', 'dt_new_save_layout' );
  156. function dt_new_save_layout(){
  157. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  158. $dt_convertible_settings = array();
  159. $dt_convertible_settings['layout_html'] = trim( $_POST['dt_layout_html'] );
  160. $dt_convertible_settings['layout_shortcode'] = $_POST['dt_layout_shortcode'];
  161. $dt_post_id = (int) $_POST['dt_post_id'];
  162. if ( get_post_meta( $dt_post_id, '_dt_builder_settings', true ) ) update_post_meta( $dt_post_id, '_dt_builder_settings', $dt_convertible_settings );
  163. else add_post_meta( $dt_post_id, '_dt_builder_settings', $dt_convertible_settings, true );
  164. die();
  165. }
  166. /**
  167. * A action hook to create sample layout
  168. */
  169. add_action( 'wp_ajax_dt_create_new_sample_layout', 'dt_create_new_sample_layout' );
  170. function dt_create_new_sample_layout(){
  171. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  172. $dt_layout_html = trim( $_POST['dt_layout_html'] );
  173. $dt_new_layout_name = sanitize_text_field( $_POST['dt_new_layout_name'] );
  174. $dtthemes_settings = get_option( 'dtthemes_settings' );
  175. $custom_layouts = isset( $dtthemes_settings['custom_sample_layouts'] ) ? $dtthemes_settings['custom_sample_layouts'] : array();
  176. $custom_layouts[] = array( 'name' => $dt_new_layout_name, 'content' => $dt_layout_html, 'is_user_sample_layout' => true );
  177. $dtthemes_settings['custom_sample_layouts'] = $custom_layouts;
  178. update_option( 'dtthemes_settings', $dtthemes_settings );
  179. die();
  180. }
  181. /**
  182. * A action hook to delete sample layout
  183. */
  184. add_action( 'wp_ajax_dt_delete_sample_layout', 'dt_delete_sample_layout' );
  185. function dt_delete_sample_layout(){
  186. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  187. $dt_layout_key = (int) $_POST['dt_layout_key'];
  188. $dtthemes_settings = get_option( 'dtthemes_settings' );
  189. if ( isset( $dtthemes_settings['custom_sample_layouts'][$dt_layout_key] ) ){
  190. unset( $dtthemes_settings['custom_sample_layouts'][$dt_layout_key] );
  191. $dtthemes_settings['custom_sample_layouts'] = array_values( $dtthemes_settings['custom_sample_layouts'] );
  192. update_option( 'dtthemes_settings', $dtthemes_settings );
  193. }
  194. die();
  195. }
  196. /**
  197. * A action hook to append sample layout to existing layout
  198. */
  199. add_action( 'wp_ajax_dt_append_layout', 'dt_new_append_layout' );
  200. function dt_new_append_layout(){
  201. global $dtthemes_sample_layouts;
  202. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  203. $layout_name = $_POST['dt_layout_name'];
  204. if ( isset( $dtthemes_sample_layouts[$layout_name] ) ) echo stripslashes( $dtthemes_sample_layouts[$layout_name]['content'] );
  205. die();
  206. }
  207. /**
  208. * A action hook and funtion to get modules data
  209. */
  210. add_action( 'wp_ajax_dt_get_module_data', 'dt_get_module_data' );
  211. function dt_get_module_data(){
  212. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  213. $module_name = $module_type = $matches = $module_class = $dt_module_exact_name = '';
  214. $module_window = 0;
  215. $module_class = $_POST['dt_module_class'];
  216. $dt_module_exact_name = $_POST['dt_module_exact_name'];
  217. $module_window = (int) $_POST['dt_modal_window'];
  218. $cors_mod = explode(' ', $module_class);
  219. foreach($cors_mod as $cmod) {
  220. if (strpos($cmod, 'dt_module_') !== false) $module_type = str_replace('dt_module_', '', $cmod);
  221. }
  222. preg_match_all( '/dt_m_([^\s])+/', $module_class, $matches );
  223. $module_name = str_replace( 'dt_m_', '', $matches[0][0] );
  224. dt_generate_module_datas( $module_name, $dt_module_exact_name, $module_type );
  225. die();
  226. }
  227. if ( ! function_exists('dt_generate_module_datas') ){
  228. function dt_generate_module_datas( $module_name, $dt_module_exact_name, $module_type ){
  229. global $dtthemes_modules;
  230. $dtthemes_modules_new = $dtthemes_modules;
  231. if(isset($dtthemes_modules_new[$module_type][$module_name]['options'])):
  232. $out = '<div class="dt_module_settings">';
  233. foreach ( $dtthemes_modules_new[$module_type][$module_name]['options'] as $option_slug => $option_settings ){
  234. $content_class = $opt_name = $opt_content = '';
  235. $opt_name = esc_attr( $option_slug );
  236. if(isset( $option_settings['is_content'] )):
  237. if(isset($option_settings['default_value'])) $opt_content = $option_settings['default_value'];
  238. else $opt_content = '';
  239. $content_class = isset( $option_settings['is_content'] ) ? 'dtthemes_module_content ' : '';
  240. else:
  241. $default_value = isset( $option_settings['default_value'] ) ? $option_settings['default_value'] : '';
  242. if(is_array($default_value)):
  243. $opt_content = implode(',', $default_value);
  244. else:
  245. $opt_content = ('' != $default_value) ? esc_attr( $default_value ) : '';
  246. endif;
  247. endif;
  248. $out .= '<div data-option_name="' . $opt_name . '" class="' . $content_class . $opt_name . ' dt_module_setting">' . $opt_content . '</div>';
  249. }
  250. $out .= '</div>';
  251. echo $out;
  252. else:
  253. echo '<div class="dt_module_settings"></div>';
  254. endif;
  255. }
  256. }
  257. /**
  258. * A action hook and funtion to show module options
  259. */
  260. add_action( 'wp_ajax_dt_show_module_options', 'dt_new_show_module_options' );
  261. function dt_new_show_module_options(){
  262. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  263. $module_name = $module_type = $matches = $paste_to_editor_id = '';
  264. $module_window = 0;
  265. $module_class = $_POST['dt_module_class'];
  266. $dt_module_exact_name = $_POST['dt_module_exact_name'];
  267. $module_window = (int) $_POST['dt_modal_window'];
  268. $cors_mod = explode(' ', $module_class);
  269. foreach($cors_mod as $cmod) {
  270. if (strpos($cmod, 'dt_module_') !== false && $cmod != 'dt_module_resizable') $module_type = str_replace('dt_module_', '', $cmod);
  271. }
  272. preg_match_all( '/dt_m_([^\s])+/', $module_class, $matches );
  273. $module_name = str_replace( 'dt_m_', '', $matches[0][0] );
  274. $paste_to_editor_id = isset( $_POST['dt_paste_to_editor_id'] ) ? $_POST['dt_paste_to_editor_id'] : '';
  275. dt_generate_module_options( $module_name, $module_window, $paste_to_editor_id, $dt_module_exact_name, $module_type );
  276. die();
  277. }
  278. if ( ! function_exists('dt_generate_module_options') ){
  279. function dt_generate_module_options( $module_name, $module_window, $paste_to_editor_id, $dt_module_exact_name, $module_type ){
  280. global $dtthemes_modules;
  281. $dtthemes_modules_new = $dtthemes_modules;
  282. $i = 1;
  283. $form_id = ( 0 == $module_window ) ? 'dt_module_settings' : 'dt_dialog_settings';
  284. echo '<form id="' . esc_attr( $form_id ) . '">';
  285. echo '<div class="dt_settings_title">' . esc_html( $dt_module_exact_name . ' ' . __('Settings', 'dt_themes') ) . '</div>';
  286. if ( 0 == $module_window ) echo '<a href="#" id="dt_close_module_settings"></a>';
  287. else echo '<a href="#" id="dt_close_dialog_settings"></a>';
  288. if(isset($dtthemes_modules_new[$module_type][$module_name]['options'])):
  289. foreach ( $dtthemes_modules_new[$module_type][$module_name]['options'] as $option_slug => $option_settings ){
  290. $content_class = isset( $option_settings['is_content'] ) ? ' dtthemes_module_content' : '';
  291. echo '<p>';
  292. if($option_slug == 'info'): echo '<p>'.$option_settings.'</p>';
  293. elseif ( isset( $option_settings['title'] ) ): echo "<label><span class='dt_module_option_number'>{$i}</span>. {$option_settings['title']}</label>"; endif;
  294. if ( 1 == $module_window ) $option_slug = 'dt_dialog_' . $option_slug;
  295. switch ( $option_settings['type'] ) {
  296. case 'wp_editor':
  297. $opt_content = isset($option_settings['default_value']) ? $option_settings['default_value'] : '';
  298. wp_editor( $opt_content, $option_slug, array( 'editor_class' => 'dtthemes_wp_editor dtthemes_option ' . $content_class ) );
  299. break;
  300. case 'select':
  301. $default_value = isset( $option_settings['default_value'] ) ? $option_settings['default_value'] : array();
  302. if(isset($option_settings['multiple']) && $option_settings['multiple'] == 1) { $multi_str = 'multiple="multiple"'; $content_class .= ' dt_multiselect'; } else { $multi_str = ''; }
  303. echo
  304. '<span class="selection-box"><select name="' . esc_attr( $option_slug ) . '" id="' . esc_attr( $option_slug ) . '" class="dtthemes_option' . $content_class . '" '.$multi_str.'>'
  305. . '<option value=""> ' . esc_html__('Select', 'dt_themes') . ' </option>';
  306. foreach ( $option_settings['options'] as $setting_key => $setting_value ){
  307. $sel_value = isset($setting_key) ? $setting_key : $setting_value;
  308. $sel_res = in_array($sel_value, $default_value) ? ' selected="selected"' : '';
  309. echo '<option value="' . esc_attr( $sel_value ) . '"' . $sel_res . '>' . esc_html( $setting_value ) . '</option>';
  310. }
  311. echo '</select></span>';
  312. break;
  313. case 'text':
  314. $default_value = isset( $option_settings['default_value'] ) ? $option_settings['default_value'] : '';
  315. echo '<input name="' . esc_attr( $option_slug ) . '" type="text" id="' . esc_attr( $option_slug ) . '" value="'.$default_value.'" class="regular-text dtthemes_option' . $content_class . '" />';
  316. break;
  317. case 'checkbox':
  318. if(isset($option_settings['default_value']) && $option_settings['default_value'] == $option_settings['returnval']) $chk = checked('checked'); else $chk = '';
  319. $defval = isset( $option_settings['returnval'] ) ? $option_settings['returnval'] : esc_attr( $option_slug );
  320. echo '<input name="' . esc_attr( $option_slug ) . '" value="' . $defval . '" type="checkbox" id="' . esc_attr( $option_slug ) . '" class="dtthemes_option' . $content_class . '" '.$chk.' />';
  321. break;
  322. case 'upload':
  323. echo '<input name="' . esc_attr( $option_slug ) . '" type="text" id="' . esc_attr( $option_slug ) . '" value="" class="regular-text dtthemes_option dtthemes_upload_field' . $content_class . '" />' . '<a href="#" class="dtthemes_upload_button">' . esc_html__('Upload', 'dt_themes') . '</a>';
  324. break;
  325. case 'colorpicker':
  326. dtthemes_color_picker(esc_attr( $option_slug ), '#');
  327. break;
  328. }
  329. echo '</p>';
  330. ++$i;
  331. }
  332. else:
  333. echo '<p>This module don\'t have any attribute to set, just click save changes button to add shortcode.</p>';
  334. endif;
  335. echo '<span id="dt_save_data" class="dt_button dt_save_text">'.__('Save Changes', 'dt_themes').'</span>';
  336. echo '<input type="hidden" id="dt_saved_module_name" value="' . esc_attr( $module_name ) . '" />';
  337. if(isset($dtthemes_modules_new[$module_type][$module_name]['disable_resize'])) $dis_resize = $dtthemes_modules_new[$module_type][$module_name]['disable_resize'];
  338. else $dis_resize = '';
  339. echo '<input type="hidden" id="dt_disable_resize" value="' . $dis_resize . '" />';
  340. if ( '' != $paste_to_editor_id ) echo '<input type="hidden" id="dt_paste_to_editor_id" value="' . esc_attr( $paste_to_editor_id ) . '" />';
  341. echo '</form>';
  342. }
  343. }
  344. /**
  345. * A action hook and funtion to show widget options
  346. */
  347. add_action( 'wp_ajax_dt_show_widget_options', 'dt_new_show_widget_options' );
  348. function dt_new_show_widget_options(){
  349. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  350. $module_name = $module_type = $matches = $paste_to_editor_id = '';
  351. $module_window = 0;
  352. $module_class = $_POST['dt_module_class'];
  353. $dt_module_exact_name = $_POST['dt_module_exact_name'];
  354. $paste_to_editor_id = isset( $_POST['dt_paste_to_editor_id'] ) ? $_POST['dt_paste_to_editor_id'] : '';
  355. $module_window = (int) $_POST['dt_modal_window'];
  356. preg_match_all( '/dt_m_([^\s])+/', $module_class, $matches );
  357. $module_name = str_replace( 'dt_m_', '', $matches[0][1] );
  358. dt_generate_widget_options( $module_name, $dt_module_exact_name, $paste_to_editor_id, $module_window );
  359. die();
  360. }
  361. if ( ! function_exists('dt_generate_widget_options') ){
  362. function dt_generate_widget_options( $module_name, $dt_module_exact_name, $paste_to_editor_id, $module_window ){
  363. global $dt_widgets;
  364. if(isset($dt_widgets[$module_name]['form'])):
  365. $form_id = ( 0 == $module_window ) ? 'dt_widget_settings' : 'dt_dialog_settings';
  366. if($form_id == 'dt_dialog_settings') $form_cls = ' class="dt_widget_popup"'; else $form_cls = '';
  367. echo '<form id="'.$form_id.'" '.$form_cls.'>';
  368. echo '<div class="dt_settings_title">' . esc_html( $dt_module_exact_name . ' ' . __('Settings', 'dt_themes') ) . '</div>';
  369. if ( 0 == $module_window ) echo '<a href="#" id="dt_close_widget_settings"></a>';
  370. else echo '<a href="#" id="dt_close_dialog_settings"></a>';
  371. echo $dt_widgets[$module_name]['form'];
  372. echo '<span id="dt_save_data" class="dt_button dt_save_text">'.__('Save Changes', 'dt_themes').'</span>';
  373. echo '<input type="hidden" id="dt_widget_module_name" value="' . esc_attr( $module_name ) . '" />';
  374. echo '<input type="hidden" id="dt_widget_module_wpname" value="' . esc_attr( $dt_widgets[$module_name]['wpname'] ) . '" />';
  375. echo '<input type="hidden" id="dt_widget_module_wpid" value="' . esc_attr( $dt_widgets[$module_name]['wpid'] ) . '" />';
  376. echo '<input type="hidden" id="dt_widget_module_optionname" value="' . esc_attr( strtolower ($dt_widgets[$module_name]['name']) ) . '" />';
  377. echo '<input type="hidden" id="dt_module_type" value="widget" />';
  378. if ( '' != $paste_to_editor_id ) echo '<input type="hidden" id="dt_paste_to_editor_id" value="' . esc_attr( $paste_to_editor_id ) . '" />';
  379. echo '</form>';
  380. else:
  381. echo '<p>This module don\'t have any attribute to set</p>';
  382. endif;
  383. }
  384. }
  385. /**
  386. * A action hook and funtion to show column options
  387. */
  388. add_action( 'wp_ajax_dt_show_column_options', 'dt_new_show_column_options' );
  389. function dt_new_show_column_options(){
  390. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  391. $module_class = $_POST['dt_module_class'];
  392. preg_match( '/dt_m_column_([^\s])+/', $module_class, $matches );
  393. $module_name = str_replace( 'dt_m_column_', '', $matches[0] );
  394. $paste_to_editor_id = isset( $_POST['dt_paste_to_editor_id'] ) ? $_POST['dt_paste_to_editor_id'] : '';
  395. dt_generate_column_options( $module_name, $paste_to_editor_id );
  396. die();
  397. }
  398. if ( ! function_exists('dt_generate_column_options') ){
  399. function dt_generate_column_options( $column_name, $paste_to_editor_id ){
  400. global $dtthemes_columns;
  401. $module_name = $dtthemes_columns[$column_name]['name'];
  402. echo '<form id="dt_dialog_settings">'
  403. . '<div class="dt_settings_title">' . esc_html( ucfirst( $module_name ) . ' ' . __('Settings', 'dt_themes') ) . '</div>'
  404. . '<a href="#" id="dt_close_dialog_settings"></a>';
  405. if ( 'resizable' == $column_name ) echo '<p><label>' . esc_html__('Column width (%)', 'dt_themes') . ':</label> <input name="dt_dialog_width" type="text" id="dt_dialog_width" value="100" class="regular-text dtthemes_option" /></p>';
  406. echo '<p><input type="checkbox" id="dt_dialog_first" name="dt_dialog_first" value="" class="dtthemes_option" /> ' . esc_html__('This is the first column in the row', 'dt_themes') . '</p>';
  407. echo '<span id="dt_save_data" class="dt_button dt_save_text">'.__('Save Changes', 'dt_themes').'</span>';
  408. echo '<input type="hidden" id="dt_saved_module_name" value="' . esc_attr( "{$column_name}" ) . '" />';
  409. echo '<input type="hidden" id="dt_module_type" value="column" />';
  410. if ( '' != $paste_to_editor_id ) echo '<input type="hidden" id="dt_paste_to_editor_id" value="' . esc_attr( $paste_to_editor_id ) . '" />';
  411. echo '</form>';
  412. }
  413. }
  414. /**
  415. * A action hook and funtion to show column additional options
  416. */
  417. add_action( 'wp_ajax_dt_show_columoptions_panel', 'dt_show_columoptions_panel' );
  418. function dt_show_columoptions_panel(){
  419. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  420. $dt_column_type = isset($_POST['dt_column_type']) ? $_POST['dt_column_type'] : '';
  421. $dt_column_id = isset($_POST['dt_column_id']) ? $_POST['dt_column_id'] : '';
  422. $dt_column_css = isset($_POST['dt_column_css']) ? $_POST['dt_column_css'] : '';
  423. $dt_column_animation_type = isset($_POST['dt_column_animation_type']) ? $_POST['dt_column_animation_type'] : '';
  424. $dt_column_animation_delay = isset($_POST['dt_column_animation_delay']) ? $_POST['dt_column_animation_delay'] : '';
  425. dt_generate_columnoptions_panel($dt_column_type, $dt_column_id, $dt_column_css, $dt_column_animation_type, $dt_column_animation_delay);
  426. die();
  427. }
  428. if ( ! function_exists('dt_generate_columnoptions_panel') ){
  429. function dt_generate_columnoptions_panel( $dt_column_type, $dt_column_id, $dt_column_css, $dt_column_animation_type, $dt_column_animation_delay ){
  430. global $dt_animation_types, $default_animation_type, $default_animation_delay, $enable_animation_effects;
  431. echo '<div class="dt_dialog_handle">' . esc_html( __('Additional Column Options', 'dt_themes') ) . '</div><a href="#" id="dt_close_dialog_settings"></a>';
  432. echo '<form id="dt_column_settings">'
  433. . '<a href="#" id="dt_close_column_settings"></a>'
  434. . '<p><label>Id</label><input type="text" class="regular-text dtthemes_option" name="dt_column_id" id="dt_column_id" value="'.$dt_column_id.'" /></p>'
  435. . '<p><label>Custom Class</label><input type="text" class="regular-text dtthemes_option" name="dt_column_css" id="dt_column_css" value="'.$dt_column_css.'" /></p>';
  436. echo
  437. '<p><label>Type</label><span class="selection-box"><select name="dt_column_type" id="dt_column_type" >'
  438. . '<option value="None"> ' . esc_html__('Select', 'dt_themes') . ' </option>';
  439. echo '<option value="type1" ' . selected( $dt_column_type, 'type1', false ) . '>' . esc_html__('Type 1', 'dt_themes') . ' </option>';
  440. echo '<option value="type2" ' . selected( $dt_column_type, 'type2', false ) . '>' . esc_html__('Type 2', 'dt_themes') . ' </option>';
  441. echo '</select></span></p>';
  442. $dt_animation_types = !empty( $dt_animation_types ) ? $dt_animation_types : '';
  443. if($enable_animation_effects && $dt_animation_types != '') {
  444. $sel_value = !empty($dt_column_animation_type) ? $dt_column_animation_type : $default_animation_type;
  445. echo
  446. '<p><label>Custom Animation Type</label><span class="selection-box"><select name="dt_column_animation_type" id="dt_column_animation_type" >'
  447. . '<option value="None"> ' . esc_html__('Select', 'dt_themes') . ' </option>';
  448. foreach ( $dt_animation_types as $type ){
  449. echo '<option value="' . esc_attr( $type ) . '" ' . selected( $sel_value, $type, false ) . '>' . esc_html( $type ) . '</option>';
  450. }
  451. echo '</select></span></p>';
  452. $dt_column_animation_delay = !empty($dt_column_animation_delay) ? $dt_column_animation_delay : $default_animation_delay;
  453. echo
  454. '<p><label>Custom Animation Delay</label><input type="number" class="regular-text dtthemes_option" name="dt_column_animation_delay" id="dt_column_animation_delay" value="'.$dt_column_animation_delay.'" /></p>';
  455. }
  456. echo '<span id="save_columnoptions" class="dt_button save_columnoptions">'.__('Save Changes', 'dt_themes').'</span>';
  457. echo '</form>';
  458. }
  459. }
  460. /**
  461. * A action hook and funtion to show fullwidth section options
  462. */
  463. add_action( 'wp_ajax_dt_show_fullwidthsection_options', 'dt_show_fullwidthsection_options' );
  464. function dt_show_fullwidthsection_options(){
  465. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  466. $dt_section_key = $_POST['dt_section_key'];
  467. dt_generate_fullwidthsection_options($dt_section_key);
  468. die();
  469. }
  470. if ( ! function_exists('dt_generate_fullwidthsection_options') ){
  471. function dt_generate_fullwidthsection_options( $dt_section_key ){
  472. global $dtthemes_columns;
  473. echo '<div class="dt_dialog_handle">' . esc_html( __('Fullwidth Section Options', 'dt_themes') ) . '</div><a href="#" id="dt_close_sections_settings"></a>';
  474. echo '<form id="dt_fullwidth_section_settings">';
  475. foreach($dtthemes_columns[$dt_section_key]['options'] as $field_key => $field_settings) {
  476. $content_class = isset( $field_settings['is_content'] ) ? ' dtthemes_module_content' : '';
  477. switch ( $field_settings['type'] ) {
  478. case 'select':
  479. $default_value = isset( $field_settings['default_value'] ) ? array($field_settings['default_value']) : array();
  480. if(isset($field_settings['multiple']) && $field_settings['multiple'] == 1) { $multi_str = 'multiple="multiple"'; $content_class .= ' dt_multiselect'; } else { $multi_str = $content_class = ''; }
  481. echo '<p><label>'.$field_settings['title'].'</label> ';
  482. echo
  483. '<span class="selection-box"><select name="' . esc_attr( $field_key ) . '" id="' . esc_attr( $field_key ) . '" class="dtthemes_fws_option' . $content_class . '" '.$multi_str.'>'
  484. . '<option value=""> ' . esc_html__('Select', 'dt_themes') . ' </option>';
  485. foreach ( $field_settings['options'] as $setting_key => $setting_value ){
  486. $sel_value = isset($setting_key) ? $setting_key : $setting_value;
  487. $sel_res = in_array($sel_value, $default_value) ? ' selected="selected"' : '';
  488. echo '<option value="' . esc_attr( $sel_value ) . '"' . $sel_res . '>' . esc_html( $setting_value ) . '</option>';
  489. }
  490. echo '</select></span>';
  491. echo '</p>';
  492. break;
  493. case 'text':
  494. $default_value = isset( $field_settings['default_value'] ) ? $field_settings['default_value'] : '';
  495. echo '<p><label>'.$field_settings['title'].'</label> ';
  496. echo '<input name="' . esc_attr( $field_key ) . '" type="text" id="' . esc_attr( $field_key ) . '" value="'.$default_value.'" class="regular-text dtthemes_fws_option' . $content_class . '" />';
  497. echo '</p>';
  498. break;
  499. case 'checkbox':
  500. if(isset($field_settings['default_value']) && $field_settings['default_value'] == $field_settings['returnval']) $chk = checked('checked'); else $chk = '';
  501. $defval = isset( $field_settings['returnval'] ) ? $field_settings['returnval'] : esc_attr( $field_key );
  502. echo '<p><label>'.$field_settings['title'].'</label> ';
  503. echo '<input name="' . esc_attr( $field_key ) . '" value="' . $defval . '" type="checkbox" id="' . esc_attr( $field_key ) . '" class="dtthemes_fws_option' . $content_class . '" '.$chk.' />';
  504. echo '</p>';
  505. break;
  506. case 'upload':
  507. echo '<p><label>'.$field_settings['title'].'</label> ';
  508. echo '<input name="' . esc_attr( $field_key ) . '" type="text" id="' . esc_attr( $field_key ) . '" value="" class="regular-text dtthemes_fws_option dtthemes_upload_field' . $content_class . '" />' . '<a href="#" class="dtthemes_upload_button">' . esc_html__('Upload', 'dt_themes') . '</a>';
  509. echo '</p>';
  510. break;
  511. case 'colorpicker':
  512. echo '<p><label>'.$field_settings['title'].'</label> ';
  513. echo "<input type='text' class='dtthemes_fws_option dt-color-field ".$field_key." medium' name='".$field_key."' id='".$field_key."' />";
  514. echo '</p>';
  515. echo '<script type="text/javascript">
  516. jQuery(document).ready(function($){
  517. var color_val = jQuery(".dt_active_section .dt_fullwidthsection_data_settings .'.$field_key.'").html();
  518. jQuery("#'.$field_key.'").val( color_val );
  519. jQuery("#'.$field_key.'").wpColorPicker();
  520. });
  521. </script>';
  522. break;
  523. }
  524. }
  525. echo '<span id="save_fullwidthoptions" class="dt_button save_fullwidthoptions">'.__('Save Changes', 'dt_themes').'</span>';
  526. echo '</form>';
  527. }
  528. }
  529. /**
  530. * A action hook and funtion to show modules in pop up panel
  531. */
  532. add_action( 'wp_ajax_dt_show_modules_panel', 'dt_show_modules_panel' );
  533. function dt_show_modules_panel(){
  534. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  535. dt_generate_modules_panel();
  536. die();
  537. }
  538. if ( ! function_exists('dt_generate_modules_panel') ){
  539. function dt_generate_modules_panel( ){
  540. global $dtthemes_modules, $default_widgets;
  541. echo '<div class="dt_dialog_handle">' . esc_html( __('Add Modules', 'dt_themes') ) . '</div><a href="#" id="dt_close_dialog_settings"></a>';
  542. echo '<form id="dt_popup_modules">'
  543. . '<a href="#" id="dt_close_popup_modules"></a>';
  544. dt_get_modules_menu(false);
  545. dt_get_modules_list('dt_popup_module');
  546. echo '</form>';
  547. }
  548. }
  549. /**
  550. * A action hook and funtion to show custom css options
  551. */
  552. add_action( 'wp_ajax_dt_show_customcss_panel', 'dt_show_customcss_panel' );
  553. function dt_show_customcss_panel(){
  554. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  555. $dt_post_id = (int) $_POST['dt_post_id'];
  556. $dt_customcss_data = isset($_POST['dt_customcss_data']) ? $_POST['dt_customcss_data'] : '';
  557. if($dt_customcss_data == '') $dt_customcss_data = get_post_meta( $dt_post_id, '_dt_customcss_data', true );
  558. dt_generate_customcss_options( $dt_customcss_data );
  559. die();
  560. }
  561. if ( ! function_exists('dt_generate_customcss_options') ){
  562. function dt_generate_customcss_options( $cssdata ){
  563. echo '<div class="dt_dialog_handle">' . esc_html( __('Add Custom CSS', 'dt_themes') ) . '</div><a href="#" id="dt_close_dialog_settings"></a>';
  564. echo '<form id="dt_customcss_settings">'
  565. . '<a href="#" id="dt_close_customcss_settings"></a>'
  566. . '<p><textarea cols="70" rows="10" name="dt_customcss_data" id="dt_customcss_data" class="text">'.$cssdata.'</textarea></p>'
  567. . '<span id="save_customcss" class="dt_button save_customcss">'.__('Save Changes', 'dt_themes').'</span>';
  568. echo '</form>';
  569. }
  570. }
  571. /**
  572. * A action hook to save custom css data
  573. */
  574. add_action( 'wp_ajax_dt_save_customcss_data', 'dt_save_customcss_data' );
  575. function dt_save_customcss_data(){
  576. if ( ! wp_verify_nonce( $_POST['dt_load_nonce'], 'dt_load_nonce' ) ) die(-1);
  577. $dt_post_id = (int) $_POST['dt_post_id'];
  578. $dt_customcss_data = isset($_POST['dt_customcss_data']) ? $_POST['dt_customcss_data'] : '';
  579. update_post_meta( $dt_post_id, '_dt_customcss_data', $dt_customcss_data );
  580. die();
  581. }
  582. /**
  583. * A action hook to display custom css data in corresponding pages
  584. */
  585. add_action('wp_head', 'dtthemes_add_customcss', 9);
  586. function dtthemes_add_customcss() {
  587. if(get_post() != '') {
  588. $builder_enable = get_post_meta( get_the_ID(), '_dt_enable_builder', true );
  589. if($builder_enable == 1):
  590. $dt_post_id = get_the_ID();
  591. $output = get_post_meta( $dt_post_id, '_dt_customcss_data', true );;
  592. if (!empty($output)) :
  593. $output = "\r".'<style type="text/css">'."\r".$output."\r".'</style>'."\r";
  594. echo $output;
  595. endif;
  596. endif;
  597. }
  598. }
  599. function dtthemes_color_picker($name, $value) {
  600. global $wp_version;
  601. $output = "";
  602. if (( float ) $wp_version >= 3.5) :
  603. $output .= "<input type='text' class='dtthemes_option color-field medium' name='{$name}' id='{$name}' value='{$value}' />";
  604. else :
  605. $output .= "<input type='text' class='medium color_picker_element' name='{$name}' id='{$name}' value='{$value}' />";
  606. $output .= "<div class='color_picker'></div>";
  607. endif;
  608. echo $output;
  609. }
  610. add_filter( 'wp_default_editor', 'dt_force_tmce_editor' );
  611. function dt_force_tmce_editor( $editor_mode ) {
  612. return 'tinymce';
  613. }
  614. ?>