Changeset 3297657
- Timestamp:
- 05/20/2025 09:31:42 PM (11 months ago)
- Location:
- radas
- Files:
-
- 170 added
- 7 edited
-
tags/0.2.0 (added)
-
tags/0.2.0/admin (added)
-
tags/0.2.0/admin/assets (added)
-
tags/0.2.0/admin/assets/admin-scripts-rds.php (added)
-
tags/0.2.0/admin/assets/admin-styles-rds.php (added)
-
tags/0.2.0/admin/assets/css (added)
-
tags/0.2.0/admin/assets/css/fieldbox.css (added)
-
tags/0.2.0/admin/assets/css/fieldbox.min.css (added)
-
tags/0.2.0/admin/assets/css/option-page-cpt.css (added)
-
tags/0.2.0/admin/assets/css/option-page-cpt.min.css (added)
-
tags/0.2.0/admin/assets/css/style.css (added)
-
tags/0.2.0/admin/assets/css/style.min.css (added)
-
tags/0.2.0/admin/assets/js (added)
-
tags/0.2.0/admin/assets/js/m-fieldbox.js (added)
-
tags/0.2.0/admin/assets/js/m-fieldbox.min.js (added)
-
tags/0.2.0/admin/assets/js/m-option-page-cpt-page.js (added)
-
tags/0.2.0/admin/assets/js/m-option-page-cpt-page.min.js (added)
-
tags/0.2.0/admin/assets/js/m-option-page-cpt-table.js (added)
-
tags/0.2.0/admin/assets/js/m-option-page-cpt-table.min.js (added)
-
tags/0.2.0/admin/assets/js/m-option-page-cpt.js (added)
-
tags/0.2.0/admin/assets/js/m-option-page-cpt.min.js (added)
-
tags/0.2.0/admin/assets/js/m-option-page.js (added)
-
tags/0.2.0/admin/assets/js/m-option-page.min.js (added)
-
tags/0.2.0/admin/index.php (added)
-
tags/0.2.0/admin/option-page-cpt.php (added)
-
tags/0.2.0/admin/option-page.php (added)
-
tags/0.2.0/admin/rest (added)
-
tags/0.2.0/admin/rest/cpt (added)
-
tags/0.2.0/admin/rest/cpt/rest-option-page.php (added)
-
tags/0.2.0/inc (added)
-
tags/0.2.0/inc/autoloader.php (added)
-
tags/0.2.0/inc/plugin.php (added)
-
tags/0.2.0/index.php (added)
-
tags/0.2.0/lib (added)
-
tags/0.2.0/lib/assets (added)
-
tags/0.2.0/lib/assets/admin-scripts-lib.php (added)
-
tags/0.2.0/lib/assets/admin-styles-lib.php (added)
-
tags/0.2.0/lib/assets/css (added)
-
tags/0.2.0/lib/assets/css/common (added)
-
tags/0.2.0/lib/assets/css/common/_border-desktop.css (added)
-
tags/0.2.0/lib/assets/css/common/_border-general.css (added)
-
tags/0.2.0/lib/assets/css/common/_border-mobile.css (added)
-
tags/0.2.0/lib/assets/css/common/_flex-desktop.css (added)
-
tags/0.2.0/lib/assets/css/common/_flex-general.css (added)
-
tags/0.2.0/lib/assets/css/common/_flex-mobile.css (added)
-
tags/0.2.0/lib/assets/css/common/_spacing-desktop.css (added)
-
tags/0.2.0/lib/assets/css/common/_spacing-general.css (added)
-
tags/0.2.0/lib/assets/css/common/_spacing-mobile.css (added)
-
tags/0.2.0/lib/assets/css/common/_width-general.css (added)
-
tags/0.2.0/lib/assets/css/common/style.css (added)
-
tags/0.2.0/lib/assets/css/common/style.min.css (added)
-
tags/0.2.0/lib/assets/css/datatables.css (added)
-
tags/0.2.0/lib/assets/css/datatables.min.css (added)
-
tags/0.2.0/lib/assets/css/iconbox.css (added)
-
tags/0.2.0/lib/assets/css/iconbox.min.css (added)
-
tags/0.2.0/lib/assets/css/page.css (added)
-
tags/0.2.0/lib/assets/css/page.min.css (added)
-
tags/0.2.0/lib/assets/js (added)
-
tags/0.2.0/lib/assets/js/datatables.js (added)
-
tags/0.2.0/lib/assets/js/datatables.min.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox (added)
-
tags/0.2.0/lib/assets/js/fieldbox/fieldbox.css (added)
-
tags/0.2.0/lib/assets/js/fieldbox/fieldbox.min.css (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-dialog.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-dialog.min.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-fboxlist.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-fboxlist.min.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-fieldbox.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-fieldbox.min.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-functions.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-functions.min.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-sortable.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-sortable.min.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-types.js (added)
-
tags/0.2.0/lib/assets/js/fieldbox/m-types.min.js (added)
-
tags/0.2.0/lib/assets/js/general (added)
-
tags/0.2.0/lib/assets/js/general/dialogbox.css (added)
-
tags/0.2.0/lib/assets/js/general/dialogbox.min.css (added)
-
tags/0.2.0/lib/assets/js/general/m-general.js (added)
-
tags/0.2.0/lib/assets/js/general/m-general.min.js (added)
-
tags/0.2.0/lib/assets/js/general/spinner.css (added)
-
tags/0.2.0/lib/assets/js/general/spinner.min.css (added)
-
tags/0.2.0/lib/assets/js/iconbox (added)
-
tags/0.2.0/lib/assets/js/iconbox/iconbox.css (added)
-
tags/0.2.0/lib/assets/js/iconbox/iconbox.min.css (added)
-
tags/0.2.0/lib/assets/js/iconbox/m-iconbox.js (added)
-
tags/0.2.0/lib/assets/js/iconbox/m-iconbox.min.js (added)
-
tags/0.2.0/lib/assets/js/m-admin.js (added)
-
tags/0.2.0/lib/assets/js/m-admin.min.js (added)
-
tags/0.2.0/lib/assets/js/m-general.min.js (added)
-
tags/0.2.0/lib/assets/js/m-iconbox.min.js (added)
-
tags/0.2.0/lib/assets/js/m-public.js (added)
-
tags/0.2.0/lib/assets/js/m-public.min.js (added)
-
tags/0.2.0/lib/assets/js/m-utils.js (added)
-
tags/0.2.0/lib/assets/js/m-utils.min.js (added)
-
tags/0.2.0/lib/assets/js/media-box.js (added)
-
tags/0.2.0/lib/assets/js/media-box.min.js (added)
-
tags/0.2.0/lib/assets/js/page.js (added)
-
tags/0.2.0/lib/assets/js/page.min.js (added)
-
tags/0.2.0/lib/assets/js/tabs.js (added)
-
tags/0.2.0/lib/assets/js/tabs.min.js (added)
-
tags/0.2.0/lib/bd (added)
-
tags/0.2.0/lib/bd/dynamic-data (added)
-
tags/0.2.0/lib/bd/dynamic-data/opt-image-field.php (added)
-
tags/0.2.0/lib/bd/dynamic-data/opt-string-field.php (added)
-
tags/0.2.0/lib/bd/dynamic-data/opt-url-field.php (added)
-
tags/0.2.0/lib/bd/dynamic-data/register-field.php (added)
-
tags/0.2.0/lib/classes (added)
-
tags/0.2.0/lib/classes/abstracts (added)
-
tags/0.2.0/lib/classes/abstracts/element.php (added)
-
tags/0.2.0/lib/classes/abstracts/field.php (added)
-
tags/0.2.0/lib/classes/abstracts/index.php (added)
-
tags/0.2.0/lib/classes/abstracts/page.php (added)
-
tags/0.2.0/lib/classes/abstracts/scripts.php (added)
-
tags/0.2.0/lib/classes/abstracts/styles.php (added)
-
tags/0.2.0/lib/classes/abstracts/wrapper.php (added)
-
tags/0.2.0/lib/classes/index.php (added)
-
tags/0.2.0/lib/classes/interfaces (added)
-
tags/0.2.0/lib/classes/interfaces/element-interface.php (added)
-
tags/0.2.0/lib/classes/interfaces/index.php (added)
-
tags/0.2.0/lib/classes/trait (added)
-
tags/0.2.0/lib/classes/trait/arrayaccess-skeleton.php (added)
-
tags/0.2.0/lib/classes/trait/element-skeleton.php (added)
-
tags/0.2.0/lib/classes/trait/index.php (added)
-
tags/0.2.0/lib/classes/trait/singleton.php (added)
-
tags/0.2.0/lib/elements (added)
-
tags/0.2.0/lib/elements/container.php (added)
-
tags/0.2.0/lib/elements/fields (added)
-
tags/0.2.0/lib/elements/fields/checkbox-field.php (added)
-
tags/0.2.0/lib/elements/fields/checkboxes-field.php (added)
-
tags/0.2.0/lib/elements/fields/color-field.php (added)
-
tags/0.2.0/lib/elements/fields/date-field.php (added)
-
tags/0.2.0/lib/elements/fields/editor-field.php (added)
-
tags/0.2.0/lib/elements/fields/email-field.php (added)
-
tags/0.2.0/lib/elements/fields/field-group.php (added)
-
tags/0.2.0/lib/elements/fields/file-field.php (added)
-
tags/0.2.0/lib/elements/fields/group-field.php (added)
-
tags/0.2.0/lib/elements/fields/hidden-field.php (added)
-
tags/0.2.0/lib/elements/fields/index.php (added)
-
tags/0.2.0/lib/elements/fields/media-field.php (added)
-
tags/0.2.0/lib/elements/fields/number-field.php (added)
-
tags/0.2.0/lib/elements/fields/password-field.php (added)
-
tags/0.2.0/lib/elements/fields/phone-field.php (added)
-
tags/0.2.0/lib/elements/fields/radio-field.php (added)
-
tags/0.2.0/lib/elements/fields/select-field.php (added)
-
tags/0.2.0/lib/elements/fields/text-field.php (added)
-
tags/0.2.0/lib/elements/fields/textarea-field.php (added)
-
tags/0.2.0/lib/elements/fields/url-field.php (added)
-
tags/0.2.0/lib/elements/form-table.php (added)
-
tags/0.2.0/lib/elements/tab.php (added)
-
tags/0.2.0/lib/elements/tabs.php (added)
-
tags/0.2.0/lib/factories (added)
-
tags/0.2.0/lib/factories/element-factory.php (added)
-
tags/0.2.0/lib/factories/index.php (added)
-
tags/0.2.0/lib/helper (added)
-
tags/0.2.0/lib/helper/index.php (added)
-
tags/0.2.0/lib/helper/util.php (added)
-
tags/0.2.0/lib/html-templates (added)
-
tags/0.2.0/lib/html-templates/field-box-template.php (added)
-
tags/0.2.0/lib/html-templates/index.php (added)
-
tags/0.2.0/lib/index.php (added)
-
tags/0.2.0/lib/plugin.php (added)
-
tags/0.2.0/radas.php (added)
-
tags/0.2.0/readme.txt (added)
-
trunk/admin/option-page.php (modified) (7 diffs)
-
trunk/lib/bd (added)
-
trunk/lib/bd/dynamic-data (added)
-
trunk/lib/bd/dynamic-data/opt-image-field.php (added)
-
trunk/lib/bd/dynamic-data/opt-string-field.php (added)
-
trunk/lib/bd/dynamic-data/opt-url-field.php (added)
-
trunk/lib/bd/dynamic-data/register-field.php (added)
-
trunk/lib/elements/fields/color-field.php (modified) (1 diff)
-
trunk/lib/elements/fields/media-field.php (modified) (1 diff)
-
trunk/lib/elements/fields/password-field.php (modified) (1 diff)
-
trunk/lib/helper/util.php (modified) (1 diff)
-
trunk/radas.php (modified) (1 diff)
-
trunk/readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
radas/trunk/admin/option-page.php
r3156010 r3297657 4 4 use Radas\Admin\Assets\Admin_Scripts_Rds; 5 5 use Radas\Lib\Assets\Admin_Styles_Lib; 6 use Radas\Lib\BD\Dynamic_Data\Opt_Image_Field; 7 use Radas\Lib\BD\Dynamic_Data\Opt_String_Field; 8 use Radas\Lib\BD\Dynamic_Data\Opt_URL_Field; 6 9 use Radas\Lib\Classes\Abstracts\Element; 7 10 use Radas\Lib\Classes\Abstracts\Field; … … 21 24 protected $option_values; 22 25 protected $fields; 26 protected $option_name; 27 protected $is_wpml_active; 28 protected $is_breakdance_active; 23 29 24 30 public function __construct($post_id){ 25 31 $this->page = json_decode(get_post_meta($post_id, 'op_json', true), true); 32 33 $this->option_name = $this->page['slug']; 34 $this->is_wpml_active = Util::is_wpml_active(); 35 $this->is_breakdance_active = Util::is_breakdance_active(); 36 26 37 if($this->page){ 27 38 $this->elements = Element_Factory::getInstance()($this->page['fields'][0]); … … 73 84 add_action('rest_api_init', [$this, 'register_rest']); 74 85 75 add_shortcode( $this->page['slug'], [$this, 'create_shortcode'] ); 86 add_shortcode( $this->page['slug'], [$this, 'create_shortcode'] ); 87 88 if($this->is_breakdance_active) { 89 foreach($this->fields as $field){ 90 $this->create_bd_dynamic_data($field); 91 } 92 } 93 94 if($this->is_wpml_active) { 95 $this->wpml_setup_string(); 96 } 76 97 } 77 98 … … 154 175 $sanitized_values = $this->sanitize_values($params); 155 176 156 if(!get_option($this-> page['slug'])){157 $result = add_option($this-> page['slug'], $sanitized_values);177 if(!get_option($this->option_name )){ 178 $result = add_option($this->option_name , $sanitized_values); 158 179 } else { 159 $result = update_option($this->page['slug'], $sanitized_values); 160 } 161 162 // if(!$result) { 163 // return Util::rest_response( 164 // code: 'failed', 165 // message: "Something wrong, please check your params", 166 // data: [ 167 // 'params' => $params 168 // ] , 169 // status: 500 170 // ); 171 // } 180 $result = update_option($this->option_name , $sanitized_values); 181 } 182 183 if($this->is_wpml_active) { 184 $this->register_wpml_string(); 185 } 172 186 173 187 return Util::rest_response( 174 188 code: 'success', 175 189 message: __('Your data has been successfully updated', 'radas'), 176 data: get_option($this-> page['slug'], null),190 data: get_option($this->option_name , null), 177 191 status: 200 178 192 ); … … 188 202 } 189 203 190 /** get options value ana insert to fields */ 204 return $this->get_value($atts['field'], $atts); 205 206 /** get options value and insert to fields */ 191 207 $this->get_option_values(); 192 208 … … 300 316 protected function get_option_values(){ 301 317 if (!$this->option_values) { 302 $option = get_option($this-> page['slug'], null);318 $option = get_option($this->option_name , null); 303 319 if(is_array($option)){ 304 320 $this->option_values = $this->sanitize_values($option); … … 307 323 return $this->option_values; 308 324 } 325 326 protected function create_bd_dynamic_data(Field $field){ 327 $field_data = [ 328 'type' => $field->type, 329 'label' => $field->label, 330 'slug' => $this->page['slug'] . '-' . $field->id, 331 'category' => 'Radas', 332 'sub_category' => $this->page['title'] . ' Options', 333 'shortcode' => $this->page['slug'], 334 'field' => $field->id, 335 ]; 336 337 \Breakdance\DynamicData\registerField(new Opt_String_Field($field_data)); 338 339 if($field->type == 'media'){ 340 $field_data['slug'] = $this->page['slug'] . '-' . $field->id . '-img'; 341 \Breakdance\DynamicData\registerField(new Opt_Image_Field($field_data)); 342 } 343 344 if(in_array($field->type, ['email', 'tel', 'media']) ){ 345 $field_data['slug'] = $this->page['slug'] . '-' . $field->id . '-url'; 346 \Breakdance\DynamicData\registerField(new Opt_URL_Field($field_data)); 347 } 348 } 349 350 protected function wpml_setup_string(){ 351 add_filter( 'wpml_active_string_package_kinds', function( $kinds ) { 352 $kinds[ $this->page['slug'] ] = [ 353 'title' => $this->page['title'], 354 'slug' => $this->page['slug'], 355 'plural' => $this->page['title'], 356 ]; 357 return $kinds; 358 }); 359 } 360 361 protected function register_wpml_string(){ 362 /* 363 checkbox 364 checkboxes 365 color 366 date 367 editor 368 email 369 file 370 hidden 371 media 372 number 373 password 374 tel 375 radio 376 select 377 text 378 textarea 379 url 380 */ 381 382 /** @var Field $field */ 383 foreach($this->fields as $field){ 384 if(!in_array($field->type, $this->get_wpml_non_translated_field_type())) { 385 $type = 'LINE'; 386 if($field->type == 'editor'){ 387 $type = 'VISUAL'; 388 } 389 390 if($field->type == 'textarea'){ 391 $type = 'AREA'; 392 } 393 394 do_action( 'wpml_register_string', $field->get_sanitized_value(), $field->id, $this->get_wpml_package_kind(), $field->label, $type ); 395 } 396 } 397 } 398 399 protected function get_wpml_package_kind(){ 400 return [ 401 'kind' => $this->page['title'], 402 'kind_slug' => $this->page['slug'], 403 'name' => $this->page['slug'], 404 'title' => $this->page['title'], 405 ]; 406 } 407 408 protected function get_wpml_non_translated_field_type(){ 409 return ['date', 'email', 'media', 'password', 'tel', 'url']; 410 } 411 412 public function get_value(string $field_name, array $args = []){ 413 414 if( !array_key_exists( $field_name, $this->fields ) ){ 415 return null; 416 } 417 418 $defaults = [ 419 /** General 420 * value: url (email, tel, media), id (media), text (select, radio), human (date) 421 */ 422 'format' => '', 423 424 /** Media */ 425 'size' => 'thumbnail', 426 'width' => '', 427 'height' => '', 428 'format' => '', 429 ]; 430 431 $args = array_merge($defaults, $args); 432 433 /** get options value ana insert to fields */ 434 $this->get_option_values(); 435 436 /** @var Field $field */ 437 $field = $this->fields[$field_name]; 438 439 $value = $field->get_sanitized_value(); 440 441 if( $this->is_wpml_active && !in_array( $field->type, $this->get_wpml_non_translated_field_type() ) ) { 442 $value = apply_filters( 'wpml_translate_string', $value , $field->id, $this->get_wpml_package_kind() ); 443 } 444 445 if( array_key_exists('format', $args) && $args['format'] == 'raw' ){ 446 return $value ; 447 } 448 449 // if($field->type == 'media' && $field->attributes['data-media-type'] == 'image'){ 450 if($field->type == 'media'){ // default attachment image thumbnail 451 if($args['format'] == 'id') { 452 return $value ; 453 } 454 455 if($args['format'] == 'url') { 456 return wp_get_attachment_url($value ); 457 } 458 459 $ar_size = []; 460 if($args['width']) { 461 array_push($ar_size, $args['width']); 462 if($args['height']) { 463 array_push($ar_size, $args['height']); 464 } 465 return wp_get_attachment_image($value , $ar_size); 466 } 467 468 if($args['size']) { 469 return wp_get_attachment_image($value , $args['size']); 470 } 471 } 472 473 if($field->type == 'email'){ 474 if($args['format'] == 'url') { 475 return esc_url('mailto:' . $value ); 476 } 477 } 478 479 if($field->type == 'tel'){ 480 if($args['format'] == 'url') { 481 return esc_url('tel:' . $value ); 482 } 483 } 484 485 if($field->type == 'date'){ 486 $date = date_create($value ); 487 488 if($args['format'] == '') { 489 return date_format($date, get_option( 'date_format' )); 490 } 491 492 if($args['format'] == 'human') { 493 return human_time_diff(strtotime(date_format($date, 'Y-m-d h:i:s'))); 494 } 495 496 return date_format($date, $args['format']); 497 } 498 499 if($field->type == 'select' || $field->type == 'radio'){ 500 if($args['format'] == '') { 501 return $value ; 502 } 503 504 if($args['format'] == 'text') { 505 return esc_html($field->options[$value ]); 506 } 507 } 508 509 return $value ; 510 } 309 511 } -
radas/trunk/lib/elements/fields/color-field.php
r3156010 r3297657 23 23 */ 24 24 public function __construct($id) { 25 $this->type = 'c heckbox';25 $this->type = 'color'; 26 26 parent::__construct($id); 27 27 } -
radas/trunk/lib/elements/fields/media-field.php
r3156010 r3297657 67 67 */ 68 68 public function render_input() { 69 add_filter('upload_mimes', function ($mime){70 $mime_types['svg'] = 'image/svg+xml'; //Adding svg extension71 // $mime_types['psd'] = 'image/vnd.adobe.photoshop'; //Adding photoshop files72 return $mime_types;73 }, 1, 1);69 // add_filter('upload_mimes', function ($mime){ 70 // $mime_types['svg'] = 'image/svg+xml'; //Adding svg extension 71 // // $mime_types['psd'] = 'image/vnd.adobe.photoshop'; //Adding photoshop files 72 // return $mime_types; 73 // }, 1, 1); 74 74 wp_enqueue_media(); 75 75 Admin_Scripts_Lib::enqueue('rds-media-box'); -
radas/trunk/lib/elements/fields/password-field.php
r3156010 r3297657 24 24 */ 25 25 public function __construct(string $id) { 26 $this->type = ' text';26 $this->type = 'password'; 27 27 parent::__construct($id); 28 28 } -
radas/trunk/lib/helper/util.php
r3156010 r3297657 172 172 return new \WP_REST_Response($response, $status); 173 173 } 174 175 public static function is_breakdance_active() { 176 if (!function_exists('is_plugin_active')) { 177 require_once ABSPATH . 'wp-admin/includes/plugin.php'; 178 } 179 180 return is_plugin_active('breakdance/plugin.php'); 181 } 182 183 public static function is_wpml_active() { 184 if (!function_exists('is_plugin_active')) { 185 require_once ABSPATH . 'wp-admin/includes/plugin.php'; 186 } 187 188 return is_plugin_active('sitepress-multilingual-cms/sitepress.php'); 189 } 190 191 public static function get_lang() { 192 return apply_filters( 'wpml_current_language', null ); 193 } 174 194 } -
radas/trunk/radas.php
r3156917 r3297657 4 4 * Plugin URI: https://wpradas.com 5 5 * Description: The Lightweight WordPress Plugin for Effortless Options Page Creation 6 * Version: 0. 0.26 * Version: 0.2.0 7 7 * Requires at least: 6.5 8 8 * Requires PHP: 8.0 -
radas/trunk/readme.txt
r3159519 r3297657 2 2 Contributors: vaksin 3 3 Donate link: https://paypal.me/akah 4 Tags: options page, admin page4 Tags: Breakdance, WPML, options page, admin page 5 5 Requires at least: 6.5 6 Tested up to: 6. 6.27 Stable tag: 0. 0.26 Tested up to: 6.8.1 7 Stable tag: 0.2.0 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 14 14 15 15 Create form to save data in the wp_options table, This allows the data to be displayed on any page throughout the website using shortcode, making it a great option for header and footer data. 16 17 Integrated with WPML and Breakdance seamlessly 16 18 17 19 = Lightweight and Fast = … … 65 67 = 0.0.2 = 66 68 69 * Breakdance integration 70 * WPML integration 71 72 = 0.0.2 = 73 67 74 * Fix popup code 68 75 * Remove header buttons in mobile
Note: See TracChangeset
for help on using the changeset viewer.