/wp-content/plugins/types/embedded/includes/fields/checkboxes.php

https://bitbucket.org/cisash/fananeen · PHP · 261 lines · 224 code · 12 blank · 25 comment · 65 complexity · c5542bf4c4fef21969876d3c1db5b531 MD5 · raw file

  1. <?php
  2. /**
  3. * Register data (called automatically).
  4. *
  5. * @return type
  6. */
  7. function wpcf_fields_checkboxes() {
  8. return array(
  9. 'id' => 'wpcf-checkboxes',
  10. 'title' => __('Checkboxes', 'wpcf'),
  11. 'description' => __('Checkboxes', 'wpcf'),
  12. // 'validate' => array('required'),
  13. 'meta_key_type' => 'BINARY',
  14. );
  15. }
  16. /**
  17. * Form data for post edit page.
  18. *
  19. * @param type $field
  20. */
  21. function wpcf_fields_checkboxes_meta_box_form($field, $data) {
  22. $options = array();
  23. if (!empty($field['data']['options'])) {
  24. global $pagenow;
  25. foreach ($field['data']['options'] as $option_key => $option) {
  26. // Set value
  27. $options[$option_key] = array(
  28. '#value' => $option['set_value'],
  29. '#title' => wpcf_translate('field ' . $field['id'] . ' option '
  30. . $option_key . ' title', $option['title']),
  31. '#default_value' => (!empty($data['#value'][$option_key])// Also check new post
  32. || ($pagenow == 'post-new.php' && !empty($option['checked']))) ? 1 : 0,
  33. '#name' => 'wpcf[' . $field['id'] . '][' . $option_key . ']',
  34. '#id' => $option_key . '_'
  35. . wpcf_unique_id(serialize($field) . serialize($data)),
  36. );
  37. }
  38. }
  39. return array(
  40. '#type' => 'checkboxes',
  41. '#options' => $options,
  42. );
  43. }
  44. /**
  45. * Editor callback form.
  46. */
  47. function wpcf_fields_checkboxes_editor_callback() {
  48. $form = array();
  49. $form['#form']['callback'] = 'wpcf_fields_checkboxes_editor_submit';
  50. $form['display'] = array(
  51. '#type' => 'radios',
  52. '#default_value' => 'display_all',
  53. '#name' => 'display',
  54. '#options' => array(
  55. 'display_from_db' => array(
  56. '#title' => __('Display the value of this field from the database',
  57. 'wpcf'),
  58. '#name' => 'display',
  59. '#value' => 'db',
  60. '#inline' => true,
  61. '#after' => '<br />'
  62. ),
  63. 'display_all' => array(
  64. '#title' => __('Display all values with separator', 'wpcf'),
  65. '#name' => 'display',
  66. '#value' => 'display_all',
  67. '#inline' => true,
  68. '#after' => '&nbsp;' . wpcf_form_simple(array('separator' => array(
  69. '#type' => 'textfield',
  70. '#name' => 'separator',
  71. '#value' => ', ',
  72. // '#title' => __('Separator', 'wpcf'),
  73. '#inline' => true,
  74. ))) . '<br />'
  75. ),
  76. 'display_values' => array(
  77. '#title' => __('Show one of these two values:', 'wpcf'),
  78. '#name' => 'display',
  79. '#value' => 'value',
  80. ),
  81. ),
  82. '#inline' => true,
  83. );
  84. if (isset($_GET['field_id'])) {
  85. $field = wpcf_admin_fields_get_field($_GET['field_id']);
  86. if (!empty($field['data']['options'])) {
  87. foreach ($field['data']['options'] as $option_key => $option) {
  88. $form[$option_key . '-markup'] = array(
  89. '#type' => 'markup',
  90. '#markup' => '<h3>' . $option['title'] . '</h3>',
  91. );
  92. $form[$option_key . '-display-value-1'] = array(
  93. '#type' => 'textfield',
  94. '#title' => '<td style="text-align:right;">'
  95. . __('Not selected:', 'wpcf') . '</td><td>',
  96. '#name' => 'options[' . $option_key . '][display_value_not_selected]',
  97. '#value' => $option['display_value_not_selected'],
  98. '#inline' => true,
  99. '#before' => '<table><tr>',
  100. '#after' => '</td></tr>',
  101. );
  102. $form[$option_key . '-display-value-2'] = array(
  103. '#type' => 'textfield',
  104. '#title' => '<td style="text-align:right;">'
  105. . __('Selected:', 'wpcf') . '</td><td>',
  106. '#name' => 'options[' . $option_key . '][display_value_selected]',
  107. '#value' => $option['display_value_selected'],
  108. '#after' => '</tr></table>'
  109. );
  110. }
  111. }
  112. }
  113. $form['submit'] = array(
  114. '#type' => 'submit',
  115. '#name' => 'submit',
  116. '#value' => __('Save Changes'),
  117. '#attributes' => array('class' => 'button-primary'),
  118. );
  119. $f = wpcf_form('wpcf-form', $form);
  120. wpcf_admin_ajax_head('Insert checkbox', 'wpcf');
  121. echo '<form method="post" action="">';
  122. echo $f->renderForm();
  123. echo '</form>';
  124. wpcf_admin_ajax_footer();
  125. }
  126. /**
  127. * Editor callback form submit.
  128. */
  129. function wpcf_fields_checkboxes_editor_submit() {
  130. $add = '';
  131. $field = wpcf_admin_fields_get_field($_GET['field_id']);
  132. $shortcode = '';
  133. if (!empty($field)) {
  134. if (!empty($_POST['options'])) {
  135. if ($_POST['display'] == 'display_all') {
  136. $separator = !empty($_POST['separator']) ? $_POST['separator'] : '';
  137. $shortcode .= '[types field="' . $field['slug'] . '" separator="'
  138. . $separator . '"]' . '[/types] ';
  139. } else {
  140. $i = 0;
  141. foreach ($_POST['options'] as $option_key => $option) {
  142. if ($_POST['display'] == 'value') {
  143. $shortcode .= '[types field="' . $field['slug'] . '" option="'
  144. . $i . '" state="checked"]'
  145. . $option['display_value_selected']
  146. . '[/types] ';
  147. $shortcode .= '[types field="' . $field['slug'] . '" option="'
  148. . $i . '" state="unchecked"]'
  149. . $option['display_value_not_selected']
  150. . '[/types] ';
  151. } else {
  152. $add = ' option="' . $i . '"';
  153. $shortcode .= wpcf_fields_get_shortcode($field, $add) . ' ';
  154. }
  155. $i++;
  156. }
  157. }
  158. }
  159. echo editor_admin_popup_insert_shortcode_js($shortcode);
  160. die();
  161. }
  162. }
  163. /**
  164. * View function.
  165. *
  166. * @param type $params
  167. */
  168. function wpcf_fields_checkboxes_view($params) {
  169. $option = array();
  170. if (empty($params['field']['data']['options'])) {
  171. return '__wpcf_skip_empty';
  172. }
  173. // If no option specified, display all of them
  174. if (!isset($params['option'])) {
  175. $separator = isset($params['separator']) ? $params['separator'] : ', ';
  176. foreach ($params['field_value'] as $name => &$value) {
  177. if (isset($params['field']['data']['options'][$name])) {
  178. $option = $params['field']['data']['options'][$name];
  179. } else {
  180. unset($params['field_value'][$name]);
  181. continue;
  182. }
  183. if ($option['display'] == 'db'
  184. && !empty($option['set_value']) && !empty($value)) {
  185. $value = $option['set_value'];
  186. $value = wpcf_translate('field ' . $params['field']['id'] . ' option ' . $name . ' value',
  187. $value);
  188. } else if ($option['display'] == 'value') {
  189. if (isset($option['display_value_selected']) && !empty($value)) {
  190. $value = $option['display_value_selected'];
  191. $value = wpcf_translate('field ' . $params['field']['id'] . ' option ' . $name . ' display value selected',
  192. $value);
  193. } else {
  194. $value = $option['display_value_not_selected'];
  195. $value = wpcf_translate('field ' . $params['field']['id'] . ' option ' . $name . ' display value not selected',
  196. $value);
  197. }
  198. } else {
  199. unset($params['field_value'][$name]);
  200. }
  201. }
  202. $output = implode(array_values($params['field_value']), $separator);
  203. return $output;
  204. }
  205. $i = 0;
  206. foreach ($params['field']['data']['options'] as $option_key => $option_value) {
  207. if (intval($params['option']) == $i) {
  208. $option['key'] = $option_key;
  209. $option['data'] = $option_value;
  210. $option['value'] = !empty($params['field_value'][$option_key]) ? $params['field_value'][$option_key] : '__wpcf_unchecked';
  211. break;
  212. }
  213. $i++;
  214. }
  215. $output = '';
  216. if (isset($params['state']) && $params['state'] == 'unchecked' && $option['value'] == '__wpcf_unchecked') {
  217. return htmlspecialchars_decode($params['#content']);
  218. } else if (isset($params['state']) && $params['state'] == 'unchecked') {
  219. return '__wpcf_skip_empty';
  220. }
  221. if (isset($params['state']) && $params['state'] == 'checked' && $option['value'] != '__wpcf_unchecked') {
  222. return htmlspecialchars_decode($params['#content']);
  223. } else if (isset($params['state']) && $params['state'] == 'checked') {
  224. return '__wpcf_skip_empty';
  225. }
  226. if ($option['data']['display'] == 'db'
  227. && !empty($option['data']['set_value']) && $option['value'] != '__wpcf_unchecked') {
  228. $output = $option['data']['set_value'];
  229. $output = wpcf_translate('field ' . $params['field']['id'] . ' option ' . $option['key'] . ' value',
  230. $output);
  231. } else if ($option['data']['display'] == 'value'
  232. && $option['value'] != '__wpcf_unchecked') {
  233. if (isset($option['data']['display_value_selected'])) {
  234. $output = $option['data']['display_value_selected'];
  235. $output = wpcf_translate('field ' . $params['field']['id'] . ' option ' . $option['key'] . ' display value selected',
  236. $output);
  237. }
  238. } else if ($option['data']['display'] == 'value') {
  239. if (isset($option['data']['display_value_not_selected'])) {
  240. $output = $option['data']['display_value_not_selected'];
  241. $output = wpcf_translate('field ' . $params['field']['id'] . ' option ' . $option['key'] . ' display value not selected',
  242. $output);
  243. }
  244. }
  245. if (empty($output)) {
  246. return '__wpcf_skip_empty';
  247. }
  248. return $output;
  249. }