PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/classes/class-pronamic-cookies-admin.php

https://github.com/wp-plugins/pronamic-cookies
PHP | 327 lines | 281 code | 44 blank | 2 comment | 9 complexity | 5af45e5fe5afa7bb56164bf5fa611d2a MD5 | raw file
  1. <?php
  2. class Pronamic_Cookies_Admin {
  3. public function __construct() {
  4. add_action( 'admin_menu', array( $this, 'admin_menu' ) );
  5. add_action( 'admin_init', array( $this, 'register_settings' ) );
  6. add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) );
  7. }
  8. public function scripts() {
  9. wp_register_script( 'pronamic_cookie_admin_js', plugins_url( 'assets/pronamic-cookie-law-admin.js', PRONAMIC_CL_FILE ), array( 'jquery', 'wp-color-picker' ) );
  10. wp_enqueue_script( 'pronamic_cookie_admin_js' );
  11. }
  12. public function admin_menu() {
  13. add_submenu_page(
  14. 'options-general.php',
  15. __( 'Pronamic Cookies', 'pronamic-cookies' ),
  16. __( 'Pronamic Cookies', 'pronamic-cookies' ),
  17. 'manage_options',
  18. 'pronamic_cookie_options_page',
  19. array( $this, 'display_options_page' )
  20. );
  21. }
  22. public function display_options_page() {
  23. pronamic_cookie_view( 'views/admin/display_options_page' );
  24. }
  25. public function register_settings() {
  26. add_settings_section(
  27. 'pronamic_cookie_options_advanced',
  28. __( 'Cookie Settings', 'pronamic-cookies' ),
  29. array( $this, 'settings_section' ),
  30. 'pronamic_cookie_options_advanced_page'
  31. );
  32. add_settings_field(
  33. 'pronamic_cookie_options_advanced_path',
  34. __( 'Path', 'pronamic-cookies' ),
  35. array( $this, 'text' ),
  36. 'pronamic_cookie_options_advanced_page',
  37. 'pronamic_cookie_options_advanced',
  38. array(
  39. 'label_for' => 'pronamic_cookie_options_advanced_path'
  40. )
  41. );
  42. add_settings_field(
  43. 'pronamic_cookie_options_advanced_expires',
  44. __( 'Expires', 'pronamic-cookies' ),
  45. array( $this, 'text' ),
  46. 'pronamic_cookie_options_advanced_page',
  47. 'pronamic_cookie_options_advanced',
  48. array(
  49. 'label_for' => 'pronamic_cookie_options_advanced_expires',
  50. 'description' => __( 'Use a string that would go in <a href="http://php.net/manual/en/function.strtotime.php">strtotime</a>', 'pronamic-cookies' )
  51. )
  52. );
  53. register_setting( 'pronamic_cookie_options_advanced', 'pronamic_cookie_options_advanced_path' );
  54. register_setting( 'pronamic_cookie_options_advanced', 'pronamic_cookie_options_advanced_expires' );
  55. // Base Settings
  56. add_settings_section(
  57. 'pronamic_cookie_options',
  58. __( 'Bar', 'pronamic-cookies' ),
  59. array( $this, 'settings_section' ),
  60. 'pronamic_cookie_options_page'
  61. );
  62. add_settings_field(
  63. 'pronamic_cookie_base_active',
  64. __( 'Active?', 'pronamic-cookies' ),
  65. array( $this, 'select' ),
  66. 'pronamic_cookie_options_page',
  67. 'pronamic_cookie_options',
  68. array(
  69. 'label_for' => 'pronamic_cookie_base_active',
  70. 'options' => array(
  71. array(
  72. 'label_for' => __( 'Yes', 'pronamic-cookies' ),
  73. 'value' => 1
  74. ),
  75. array(
  76. 'label_for' => __( 'No', 'pronamic-cookies' ),
  77. 'value' => 0
  78. )
  79. )
  80. )
  81. );
  82. add_settings_field(
  83. 'pronamic_cookie_location',
  84. __( 'Location', 'pronamic-cookies' ),
  85. array( $this, 'select' ),
  86. 'pronamic_cookie_options_page',
  87. 'pronamic_cookie_options',
  88. array(
  89. 'label_for' => 'pronamic_cookie_location',
  90. 'options' => array(
  91. array(
  92. 'label_for' => __( 'Top', 'pronamic-cookies' ),
  93. 'value' => 'top'
  94. ),
  95. array(
  96. 'label_for' => __( 'Bottom', 'pronamic-cookies' ),
  97. 'value' => 'bottom'
  98. )
  99. )
  100. )
  101. );
  102. add_settings_field(
  103. 'pronamic_cookie_text',
  104. __( 'Text', 'pronamic-cookies' ),
  105. array( $this, 'text' ),
  106. 'pronamic_cookie_options_page',
  107. 'pronamic_cookie_options',
  108. array( 'label_for' => 'pronamic_cookie_text' )
  109. );
  110. add_settings_field(
  111. 'pronamic_cookie_link',
  112. __( 'Link', 'pronamic-cookies' ),
  113. array( $this, 'text' ),
  114. 'pronamic_cookie_options_page',
  115. 'pronamic_cookie_options',
  116. array( 'label_for' => 'pronamic_cookie_link' )
  117. );
  118. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_base_active' );
  119. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_location' );
  120. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_text' );
  121. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_link', array( $this, 'verifiy_url' ) );
  122. // Blocker Settings
  123. add_settings_section(
  124. 'pronamic_cookie_blocker_options',
  125. __( 'Wall', 'pronamic-cookies' ),
  126. array( $this, 'settings_section' ),
  127. 'pronamic_cookie_options_page'
  128. );
  129. add_settings_field(
  130. 'pronamic_cookie_blocker_active',
  131. __( 'Active?', 'pronamic-cookies' ),
  132. array( $this, 'select' ),
  133. 'pronamic_cookie_options_page',
  134. 'pronamic_cookie_blocker_options',
  135. array(
  136. 'label_for' => 'pronamic_cookie_blocker_active',
  137. 'options' => array(
  138. array(
  139. 'label_for' => __( 'Yes', 'pronamic-cookies' ),
  140. 'value' => 1
  141. ),
  142. array(
  143. 'label_for' => __( 'No', 'pronamic-cookies' ),
  144. 'value' => 0
  145. )
  146. )
  147. )
  148. );
  149. add_settings_field(
  150. 'pronamic_cookie_blocker_title',
  151. __( 'Title', 'pronamic-cookies' ),
  152. array( $this, 'text' ),
  153. 'pronamic_cookie_options_page',
  154. 'pronamic_cookie_blocker_options',
  155. array( 'label_for' => 'pronamic_cookie_blocker_title' )
  156. );
  157. add_settings_field(
  158. 'pronamic_cookie_blocker_text',
  159. __( 'Text', 'pronamic-cookies' ),
  160. array( $this, 'editor' ),
  161. 'pronamic_cookie_options_page',
  162. 'pronamic_cookie_blocker_options',
  163. array( 'label_for' => 'pronamic_cookie_blocker_text' )
  164. );
  165. add_settings_field(
  166. 'pronamic_cookie_blocker_show_link',
  167. __( 'Show link?', 'pronamic-cookies' ),
  168. array( $this, 'select' ),
  169. 'pronamic_cookie_options_page',
  170. 'pronamic_cookie_blocker_options',
  171. array(
  172. 'label_for' => 'pronamic_cookie_blocker_show_link',
  173. 'options' => array(
  174. array(
  175. 'label_for' => __( 'Yes', 'pronamic-cookies' ),
  176. 'value' => 1,
  177. ),
  178. array(
  179. 'label_for' => __( 'No', 'pronamic-cookies' ),
  180. 'value' => 0
  181. )
  182. )
  183. )
  184. );
  185. add_settings_field(
  186. 'pronamic_cookie_blocker_image',
  187. __( 'Background Image', 'pronamic-cookies' ),
  188. array( $this, 'uploader' ),
  189. 'pronamic_cookie_options_page',
  190. 'pronamic_cookie_blocker_options',
  191. array( 'label_for' => 'pronamic_cookie_blocker_image' )
  192. );
  193. add_settings_field(
  194. 'pronamic_cookie_blocker_bgcolor',
  195. __( 'Background Color', 'pronamic-cookies' ),
  196. array( $this, 'colorpicker' ),
  197. 'pronamic_cookie_options_page',
  198. 'pronamic_cookie_blocker_options',
  199. array( 'label_for' => 'pronamic_cookie_blocker_bgcolor' )
  200. );
  201. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_blocker_active' );
  202. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_blocker_title' );
  203. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_blocker_text' );
  204. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_blocker_show_link' );
  205. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_blocker_image' );
  206. register_setting( 'pronamic_cookie_options', 'pronamic_cookie_blocker_bgcolor' );
  207. }
  208. public function settings_section() {}
  209. public function text( $args ) {
  210. printf(
  211. '<input name="%s" id="%s" type="text" value="%s" class="%s" />',
  212. esc_attr( $args['label_for'] ),
  213. esc_attr( $args['label_for'] ),
  214. esc_attr( get_option( $args['label_for'] ) ),
  215. 'regular-text code'
  216. );
  217. if ( isset( $args['description'] ) ) {
  218. printf(
  219. '<p>%s</p>' ,
  220. $args['description']
  221. );
  222. }
  223. }
  224. public function select( $args ) {
  225. $chosen = get_option( $args['label_for'] );
  226. $html = "<select name='{$args['label_for']}'>";
  227. foreach ( $args['options'] as $option ) {
  228. if ( $chosen == $option['value'] ) {
  229. $html .= "<option value='{$option['value']}' selected='selected'>{$option['label_for']}</option>";
  230. }
  231. else {
  232. $html .= "<option value='{$option['value']}'>{$option['label_for']}</option>";
  233. }
  234. }
  235. $html .= '</select>';
  236. echo $html;
  237. }
  238. public function textarea( $args ) {
  239. printf(
  240. '<textarea name="%s" id="%s" class="%s">%s</textarea>',
  241. esc_attr( $args['label_for'] ),
  242. esc_attr( $args['label_for'] ),
  243. 'regular-text code',
  244. esc_attr( get_option( $args['label_for'] ) )
  245. );
  246. }
  247. public function editor( $args ) {
  248. wp_editor( get_option( $args['label_for'] ), $args['label_for'] );
  249. }
  250. public function uploader( $args ) {
  251. wp_enqueue_media();
  252. $string = '<div class="uploader">' .
  253. '<input type="text" name="%s" id="%s" value="%s" class="widefat"/>' .
  254. '<input type="button" class="button button-secondary jMediaUploader" name="%s_button" id="%s_button" value="%s" />' .
  255. '</div>';
  256. printf(
  257. $string,
  258. esc_attr( $args['label_for'] ),
  259. esc_attr( $args['label_for'] ),
  260. get_option( $args['label_for'] ),
  261. esc_attr( $args['label_for'] ),
  262. esc_attr( $args['label_for'] ),
  263. __( 'Upload' )
  264. );
  265. }
  266. public function colorpicker( $args ) {
  267. wp_enqueue_style( 'wp-color-picker' );
  268. printf(
  269. '<input type="text" class="jColorPicker" name="%s" value="%s"/>',
  270. esc_attr( $args['label_for'] ),
  271. get_option( $args['label_for'] )
  272. );
  273. }
  274. public function verifiy_url( $raw_url ) {
  275. if ( empty( $raw_url) || 'http://' == $raw_url )
  276. return;
  277. $url = parse_url( $raw_url );
  278. if ( ! $url || ! isset( $url['scheme'] ) ) {
  279. $raw_url = 'http://' . $raw_url;
  280. }
  281. return filter_var( $raw_url, FILTER_VALIDATE_URL );
  282. }
  283. }