PageRenderTime 25ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 1ms

/wp-content/themes/bridge/plugins/js_composer/js_composer/include/params/param_group/param_group.php

https://gitlab.com/juanito.abelo/nlmobile
PHP | 217 lines | 98 code | 30 blank | 89 comment | 2 complexity | 60563968eec5476f2761b9e0efa05581 MD5 | raw file
  1. <?php
  2. require_once vc_path_dir( 'EDITORS_DIR', 'class-vc-edit-form-fields.php' );
  3. /**
  4. * Class Vc_ParamGroup_Edit_Form_Fields
  5. * @since 4.4
  6. */
  7. class Vc_ParamGroup_Edit_Form_Fields extends Vc_Edit_Form_Fields {
  8. /**
  9. * @since 4.4
  10. *
  11. * @param $settings
  12. */
  13. public function __construct( $settings ) {
  14. $this->setSettings( $settings );
  15. }
  16. /**
  17. * @param $param
  18. * @param $value
  19. *
  20. * @since 4.4
  21. * @return mixed|void
  22. */
  23. public function renderField( $param, $value ) {
  24. return parent::renderField( $param, $value );
  25. }
  26. }
  27. /**
  28. * Class Vc_ParamGroup
  29. * @since 4.4
  30. */
  31. class Vc_ParamGroup {
  32. /**
  33. * @since 4.4
  34. * @var
  35. */
  36. protected $settings;
  37. /**
  38. * @since 4.4
  39. * @var array|mixed
  40. */
  41. protected $value;
  42. /**
  43. * @since 4.4
  44. * @var
  45. */
  46. protected $map;
  47. /**
  48. * @since 4.4
  49. * @var
  50. */
  51. protected $atts;
  52. /**
  53. * @param $settings
  54. * @param $value
  55. * @param $tag
  56. *
  57. * @since 4.4
  58. */
  59. public function __construct( $settings, $value, $tag ) {
  60. $this->settings = $settings;
  61. $this->settings['base'] = $tag;
  62. $this->value = vc_param_group_parse_atts( $value );
  63. $this->unparsed_value = $value;
  64. }
  65. /**
  66. * @param $param_name
  67. * @param $arr
  68. *
  69. * @since 4.4
  70. * @return array
  71. */
  72. public function params_to_arr( $param_name, $arr ) {
  73. $data = array();
  74. foreach ( $arr as $param ) {
  75. $data[ $param_name . '_' . $param['param_name'] ] = $param['type'];
  76. }
  77. return $data;
  78. }
  79. /**
  80. * @since 4.4
  81. * @return mixed|string
  82. */
  83. public function render() {
  84. $output = "";
  85. $edit_form = new Vc_ParamGroup_Edit_Form_Fields( $this->settings );
  86. $settings = $this->settings;
  87. $output .= '<ul class="vc_param_group-list" data-settings="' . htmlentities( json_encode( $settings ), ENT_QUOTES, "utf-8" ) . '">';
  88. $template = vc_include_template( 'params/param_group/content.tpl.php' );
  89. // Parsing values
  90. if ( ! empty( $this->value ) ) {
  91. foreach ( $this->value as $values ) {
  92. $output .= $template;
  93. $value_block = "<div class='vc_param_group-wrapper vc_clearfix'>";
  94. $data = $values;
  95. foreach ( $this->settings['params'] as $param ) {
  96. $param['param_name'] = $this->settings['param_name'] . '_' . $param['param_name'];
  97. $param_value = isset( $data[ $param['param_name'] ]['value'] ) ? $data[ $param['param_name'] ]['value'] : "";
  98. $value_block .= $edit_form->renderField( $param, $param_value );
  99. }
  100. $value_block .= "</div>";
  101. $output = str_replace( '%content%', $value_block, $output );
  102. }
  103. } else {
  104. $output .= $template;
  105. }
  106. // Empty fields wrapper and Add new fields wrapper
  107. $content = "<div class='vc_param_group-wrapper vc_clearfix'>";
  108. foreach ( $this->settings['params'] as $param ) {
  109. $param['param_name'] = $this->settings['param_name'] . '_' . $param['param_name'];
  110. $content .= $edit_form->renderField( $param, "" );
  111. }
  112. $content .= "</div>";
  113. $output = str_replace( '%content%', $content, $output );
  114. // And button on bottom
  115. $output .= '<li class="wpb_column_container vc_container_for_children vc_param_group-add_content vc_empty-container"></li></ul>';
  116. $add_template = vc_include_template( 'params/param_group/add.tpl.php' );
  117. $add_template = str_replace( '%add_content%', $content, $add_template );
  118. $output .= '<script type="text/html" class="vc_param_group-template">' . json_encode( $add_template ) . '</script>';
  119. $output .= '<input name="' . $this->settings['param_name'] . '" class="wpb_vc_param_value ' . $this->settings['param_name'] . ' ' . $this->settings['type'] . '_field" type="hidden" value="' . $this->unparsed_value . '" />';
  120. return $output;
  121. }
  122. }
  123. /**
  124. * Function for rendering param in edit form (add element)
  125. * Parse settings from vc_map and entered values.
  126. *
  127. * @param $param_settings
  128. * @param $param_value
  129. * @param $tag
  130. *
  131. * @since 4.4
  132. *
  133. * vc_filter: vc_param_group_render_filter
  134. *
  135. * @return mixed|void rendered template for params in edit form
  136. */
  137. function vc_param_group_form_field( $param_settings, $param_value, $tag ) {
  138. //print_r($param_settings);
  139. $param_group = new Vc_ParamGroup( $param_settings, $param_value, $tag );
  140. return apply_filters( 'vc_param_group_render_filter', $param_group->render() );
  141. }
  142. add_action( 'wp_ajax_vc_param_group_clone', 'vc_param_group_clone' );
  143. /**
  144. * @since 4.4
  145. */
  146. function vc_param_group_clone() {
  147. $param = vc_post_param( 'param' );
  148. $value = vc_post_param( 'value' );
  149. $tag = vc_post_param( 'shortcode' );
  150. die( vc_param_group_clone_by_data( $tag, json_decode( urldecode( $param ), true ), json_decode( urldecode( $value ), true ) ) );
  151. }
  152. /**
  153. * @param $tag
  154. * @param $params
  155. * @param $data
  156. *
  157. * @since 4.4
  158. * @return mixed|string
  159. */
  160. function vc_param_group_clone_by_data( $tag, $params, $data ) {
  161. $output = "";
  162. $params['base'] = $tag;
  163. $edit_form = new Vc_ParamGroup_Edit_Form_Fields( $params );
  164. $edit_form->loadDefaultParams();
  165. $template = vc_include_template( 'params/param_group/content.tpl.php' );
  166. $output .= $template;
  167. $value_block = "<div class='vc_param_group-wrapper vc_clearfix'>";
  168. $data = $data[0];
  169. foreach ( $params['params'] as $param ) {
  170. $param['param_name'] = $params['param_name'] . '_' . $param['param_name'];
  171. $param_data = isset( $data[ $param['param_name'] ]['value'] ) ? $data[ $param['param_name'] ]['value'] : "";
  172. $value_block .= $edit_form->renderField( $param, $param_data );
  173. }
  174. $value_block .= "</div>";
  175. $output = str_replace( '%content%', $value_block, $output );
  176. return $output;
  177. }
  178. /**
  179. * @param $atts_string
  180. *
  181. * @since 4.4
  182. * @return array|mixed
  183. */
  184. function vc_param_group_parse_atts( $atts_string ) {
  185. $array = json_decode( urldecode( $atts_string ), true );
  186. return $array;
  187. }