Plugin Directory

Changeset 3304101


Ignore:
Timestamp:
06/01/2025 02:03:43 AM (10 months ago)
Author:
vaksin
Message:

0.2.3

  • Add Radas Breadcrumbs element for Breakdance
  • add radas_get_option API function
  • add radas_option_page_load_json API function
  • optimize code
Location:
radas
Files:
194 added
9 edited

Legend:

Unmodified
Added
Removed
  • radas/trunk/admin/assets/js/m-option-page-cpt-page.js

    r3156917 r3304101  
    6262    const shortCode = `[${page.slug} field=${fBox.name}]`
    6363    dialog.appendContent(elShortcode('sc', 'WordPress Shortcode:', `[${page.slug} field=${fBox.name}]`));
    64     dialog.appendContent(elShortcode('go', 'PHP:', `get_option("${page.slug}")["${fBox.name}"]`));
     64    dialog.appendContent(elShortcode('go', 'PHP:', `radas_get_option( "${page.slug}", "${fBox.name}" )`));
    6565    dialog.addButton('Close');
    6666    dialog.addEventListener('buttonClick', (e)=>{
  • radas/trunk/admin/assets/js/m-option-page-cpt-page.min.js

    r3156917 r3304101  
    1 import{fBoxList as e,createFBox as t}from"../../../lib/assets/js/fieldbox/m-fieldbox.min.js?v=1727180045";import{iconBox as s}from"../../../lib/assets/js/iconbox/m-iconbox.min.js?v=1727180045";import{setErrorMessage as i}from"../../../lib/assets/js/m-utils.min.js?v=1727180045";import{elBinder as a,showSpinner as n,popupAlert as d,dialogBox as o,getFormValue as l}from"../../../lib/assets/js/general/m-general.min.js?v=1727180045";import{adminFlashNotice as r}from"../../../lib/assets/js/m-admin.min.js?v=1727180045";window.fBoxList=e;const c=jQuery,p=new s("iconbox");class h extends a{node;#e=document.querySelector("form");constructor(){super();const t=this;this.node=document.getElementById("rds-form"),this.node.querySelectorAll("[data-handle]").forEach((e=>{this._bind(e,e.getAttribute("data-handle"))})),this.addEventListener("input",(e=>{const s=e.detail.handle;if("post_id"==s&&(t.post_id?(c(".btn-save-page").html("Update"),t.elBinded("slug").readOnly=!0):(c(".btn-save-page").html("Create"),t.elBinded("slug").readOnly=!1)),"type"==s){const s="menu"==e.detail.value;t.elBinded("parent_menu").closest("tr").classList.toggle("hide",s),t.elBinded("menu_title").closest("tr").classList.toggle("hide",!s),t.elBinded("page_icon").closest("tr").classList.toggle("hide",!s)}"page_icon"==s&&(t.elBinded("btn_icon").removeAttribute("class"),t.elBinded("btn_icon").setAttribute("class","button button-secondary dashicons-before "+t.page_icon))})),this.addEventListener("buttonClick",(e=>{"btn_icon"==e.detail.handle&&p.open()})),this.addEventListener("saved",(s=>{t.post_id=s.detail.id,Object.values(e.list).forEach((e=>{t.#t(e),t.#s(e)})),t.setLastData()})),this.elBinded("slug").setAttribute("data-valid-handle","page_slug"),this.#i(),this.#e.addEventListener("input",this.#a),c(".btn-save-page").on("click",(()=>{t.saveData()}))}#n;setLastData(){this.#n=l(this.#e)}saveData(){const t=this;if(n(!0),c(".rds-input:visible").each((function(){u(this)})),Object.values(e.list).forEach((e=>{if(!e.node.classList.contains("expanded")){e.node.classList.add("expanded");const t=c(e.node);t.find(".rds-input:visible").each((function(){u(this)})),0==t.find(".rds-error-message:visible").length&&e.node.classList.remove("expanded")}})),0!=c(".rds-error-message:visible").length)return d("Data Validation","Save failed, please check your input!"),void n(!1);const s={title:this.title,slug:this.slug,description:this.description,capability:this.capability,type:this.type,parent:this.parent_menu,menu_title:this.menu_title,icon:this.page_icon,position:this.position,fields:[{type:"form_table",name:this.slug+"_aft",fields:e.getValues()}]},i=wpApiSettings.root+this.#e.getAttribute("data-endpoint")+(this.post_id?"/"+this.post_id:""),a=this.post_id?"put":"post";c.ajax({url:i,method:a,data:JSON.stringify(s),dataType:"json",contentType:"application/json; charset=utf-8",beforeSend:e=>{e.setRequestHeader("X-WP-Nonce",wpApiSettings.nonce)},success:e=>{t.dispatchEvent(new CustomEvent("saved",{detail:{id:e.data.id,json:s}})),n(!1),r("success",e.message)},error:e=>{n(!1),e.hasOwnProperty("responseJSON")&&e.responseJSON.hasOwnProperty("message")?d("Save Failed",e.responseJSON.message):r("error",e.responseText,1e4)}})}fillData(e,s){try{this.post_id=e,this.title=s.title,this.slug=s.slug,this.description=s.description,this.capability=s.capability,this.type=s.type,this.parent_menu=s.parent,this.menu_title=s.menu_title,this.page_icon=s.icon,this.position=s.position,s.fields[0].fields.forEach((e=>{t(e,0,{after:e=>{this.post_id&&(this.#t(e),this.#s(e))}})}))}catch(e){console.error(e.message)}}#t(e){e.elBinded("btn_shortcode").disabled&&(e.elBinded("btn_shortcode").disabled=!1,e.addEventListener("buttonClick",(t=>{"btn_shortcode"==t.detail.handle&&(e=>{const t=new o("dlg-shortcode"),s=(e,t,s)=>{const i=document.createElement("div"),a=document.createElement("div"),n=document.createElement("input"),d=document.createElement("label"),o=document.createElement("button");return d.textContent=t,d.setAttribute("for",e),n.id=e,n.value=s,n.setAttribute("style","width: 320px;"),n.setAttribute("type","text"),n.readOnly=!0,o.setAttribute("class","no-button dashicons dashicons-clipboard"),o.addEventListener("click",(async e=>{n.select(),n.setSelectionRange(0,99999);try{await navigator.clipboard.writeText(n.value)}catch(e){document.execCommand("copy")}r("success","Copied the text: "+n.value)})),a.setAttribute("style","display: flex;align-items: center;column-gap: 4px;"),a.append(n),a.append(o),i.setAttribute("style","display: flex; flex-direction: column; row-gap: 4px; padding: 8px 0;"),i.append(d),i.append(a),i};return t.title="Code for "+e.elBinded("fbox_title").innerHTML+" field",m.slug,e.name,t.appendContent(s("sc","WordPress Shortcode:",`[${m.slug} field=${e.name}]`)),t.appendContent(s("go","PHP:",`get_option("${m.slug}")["${e.name}"]`)),t.addButton("Close"),t.addEventListener("buttonClick",(e=>{e.target.close()})),t.addEventListener("close",(t=>{t.target.node.remove(),e.elBinded("btn_shortcode").focus()})),t})(e).open()})))}#s(e,t=!0){e.elBinded("type").disabled=t,e.elBinded("type").classList.toggle("rds-bold",t),e.elBinded("btn_generate_id").classList.toggle("hide",t),e.elBinded("name").readOnly=t}#i(){const e=this;p.addEventListener("open",(t=>{e.page_icon&&t.target.elBinded(e.page_icon).focus()})),p.addEventListener("close",(t=>{e.elBinded("btn_icon").focus()})),p.addEventListener("iconClick",(t=>{e.page_icon=t.detail.icon,t.target.close()}))}#a(e){u(e.target)}clear(){this.post_id="",this.title="",this.slug="",this.description="",this.capability="manage_options",this.type="menu",this.parent_menu="",this.menu_title="",this.page_icon="dashicons-admin-generic",this.position="",this.slug="",Object.keys(e.list).forEach((t=>{e.remove(t)})),c(".rds-error-message").html("")}show(){c("#rds-form").removeClass("hide"),c(".btn-warpper-header").removeClass("hide"),this.elBinded("title").focus(),this.setLastData()}#d(){const e=new o("dlg-close-page");return e.title="Close Confirmation",e.content="Are you sure that you want to close the current page? The changes that you made won't be saved.",e.addButton(["Yes","No"]),e.addEventListener("buttonClick",(e=>{"Yes"==e.detail.text&&(c("#rds-list").removeClass("hide"),c(".btn-add-page").removeClass("hide"),c("#rds-form").addClass("hide"),c(".btn-warpper-header").addClass("hide")),e.target.close()})),e.addEventListener("close",(e=>{e.target.node.remove()})),e}close(){this.#n!=l(this.#e)?this.#d().open():(c("#rds-list").removeClass("hide"),c(".btn-add-page").removeClass("hide"),c("#rds-form").addClass("hide"),c(".btn-warpper-header").addClass("hide"))}}const u=e=>{i(e);const t=e.getAttribute("data-valid-handle");if("page_slug"==t){let t=/^\w+$/;if(""!=e.value&&!t.test(e.value))return i(e,"This field may only contain letters, numbers, and underscores"),!1}if("field_name"==t){e.setAttribute("data-val",e.value);let s=/^\w+$/;if(""!=e.value&&!s.test(e.value))return i(e,"This field may only contain letters, numbers, and underscores"),!1;const a=document.querySelectorAll('[data-valid-handle="'+t+'"][data-val="'+e.value+'"]');if(a.length>1)return a.forEach((t=>{t.setAttribute("data-duplicate",e.value),i(t,"This field cannot be duplicates")})),!1;{const s=e.getAttribute("data-duplicate");if(s){e.removeAttribute("data-duplicate");const a=document.querySelectorAll('[data-valid-handle="'+t+'"][data-val="'+s+'"]');1==a.length&&a.forEach((e=>{e.removeAttribute("data-duplicate"),i(e)}))}}}e.checkValidity()||i(e,e.validationMessage)},m=new h;export{h as optPage,m as page};
     1import{fBoxList as e,createFBox as t}from"../../../lib/assets/js/fieldbox/m-fieldbox.min.js?v=1727180045";import{iconBox as s}from"../../../lib/assets/js/iconbox/m-iconbox.min.js?v=1727180045";import{setErrorMessage as i}from"../../../lib/assets/js/m-utils.min.js?v=1727180045";import{elBinder as a,showSpinner as n,popupAlert as d,dialogBox as o,getFormValue as l}from"../../../lib/assets/js/general/m-general.min.js?v=1727180045";import{adminFlashNotice as r}from"../../../lib/assets/js/m-admin.min.js?v=1727180045";window.fBoxList=e;const c=jQuery,p=new s("iconbox");class h extends a{node;#e=document.querySelector("form");constructor(){super();const t=this;this.node=document.getElementById("rds-form"),this.node.querySelectorAll("[data-handle]").forEach((e=>{this._bind(e,e.getAttribute("data-handle"))})),this.addEventListener("input",(e=>{const s=e.detail.handle;if("post_id"==s&&(t.post_id?(c(".btn-save-page").html("Update"),t.elBinded("slug").readOnly=!0):(c(".btn-save-page").html("Create"),t.elBinded("slug").readOnly=!1)),"type"==s){const s="menu"==e.detail.value;t.elBinded("parent_menu").closest("tr").classList.toggle("hide",s),t.elBinded("menu_title").closest("tr").classList.toggle("hide",!s),t.elBinded("page_icon").closest("tr").classList.toggle("hide",!s)}"page_icon"==s&&(t.elBinded("btn_icon").removeAttribute("class"),t.elBinded("btn_icon").setAttribute("class","button button-secondary dashicons-before "+t.page_icon))})),this.addEventListener("buttonClick",(e=>{"btn_icon"==e.detail.handle&&p.open()})),this.addEventListener("saved",(s=>{t.post_id=s.detail.id,Object.values(e.list).forEach((e=>{t.#t(e),t.#s(e)})),t.setLastData()})),this.elBinded("slug").setAttribute("data-valid-handle","page_slug"),this.#i(),this.#e.addEventListener("input",this.#a),c(".btn-save-page").on("click",(()=>{t.saveData()}))}#n;setLastData(){this.#n=l(this.#e)}saveData(){const t=this;if(n(!0),c(".rds-input:visible").each((function(){u(this)})),Object.values(e.list).forEach((e=>{if(!e.node.classList.contains("expanded")){e.node.classList.add("expanded");const t=c(e.node);t.find(".rds-input:visible").each((function(){u(this)})),0==t.find(".rds-error-message:visible").length&&e.node.classList.remove("expanded")}})),0!=c(".rds-error-message:visible").length)return d("Data Validation","Save failed, please check your input!"),void n(!1);const s={title:this.title,slug:this.slug,description:this.description,capability:this.capability,type:this.type,parent:this.parent_menu,menu_title:this.menu_title,icon:this.page_icon,position:this.position,fields:[{type:"form_table",name:this.slug+"_aft",fields:e.getValues()}]},i=wpApiSettings.root+this.#e.getAttribute("data-endpoint")+(this.post_id?"/"+this.post_id:""),a=this.post_id?"put":"post";c.ajax({url:i,method:a,data:JSON.stringify(s),dataType:"json",contentType:"application/json; charset=utf-8",beforeSend:e=>{e.setRequestHeader("X-WP-Nonce",wpApiSettings.nonce)},success:e=>{t.dispatchEvent(new CustomEvent("saved",{detail:{id:e.data.id,json:s}})),n(!1),r("success",e.message)},error:e=>{n(!1),e.hasOwnProperty("responseJSON")&&e.responseJSON.hasOwnProperty("message")?d("Save Failed",e.responseJSON.message):r("error",e.responseText,1e4)}})}fillData(e,s){try{this.post_id=e,this.title=s.title,this.slug=s.slug,this.description=s.description,this.capability=s.capability,this.type=s.type,this.parent_menu=s.parent,this.menu_title=s.menu_title,this.page_icon=s.icon,this.position=s.position,s.fields[0].fields.forEach((e=>{t(e,0,{after:e=>{this.post_id&&(this.#t(e),this.#s(e))}})}))}catch(e){console.error(e.message)}}#t(e){e.elBinded("btn_shortcode").disabled&&(e.elBinded("btn_shortcode").disabled=!1,e.addEventListener("buttonClick",(t=>{"btn_shortcode"==t.detail.handle&&(e=>{const t=new o("dlg-shortcode"),s=(e,t,s)=>{const i=document.createElement("div"),a=document.createElement("div"),n=document.createElement("input"),d=document.createElement("label"),o=document.createElement("button");return d.textContent=t,d.setAttribute("for",e),n.id=e,n.value=s,n.setAttribute("style","width: 320px;"),n.setAttribute("type","text"),n.readOnly=!0,o.setAttribute("class","no-button dashicons dashicons-clipboard"),o.addEventListener("click",(async e=>{n.select(),n.setSelectionRange(0,99999);try{await navigator.clipboard.writeText(n.value)}catch(e){document.execCommand("copy")}r("success","Copied the text: "+n.value)})),a.setAttribute("style","display: flex;align-items: center;column-gap: 4px;"),a.append(n),a.append(o),i.setAttribute("style","display: flex; flex-direction: column; row-gap: 4px; padding: 8px 0;"),i.append(d),i.append(a),i};return t.title="Code for "+e.elBinded("fbox_title").innerHTML+" field",m.slug,e.name,t.appendContent(s("sc","WordPress Shortcode:",`[${m.slug} field=${e.name}]`)),t.appendContent(s("go","PHP:",`radas_get_option("${m.slug}", "${e.name}")`)),t.addButton("Close"),t.addEventListener("buttonClick",(e=>{e.target.close()})),t.addEventListener("close",(t=>{t.target.node.remove(),e.elBinded("btn_shortcode").focus()})),t})(e).open()})))}#s(e,t=!0){e.elBinded("type").disabled=t,e.elBinded("type").classList.toggle("rds-bold",t),e.elBinded("btn_generate_id").classList.toggle("hide",t),e.elBinded("name").readOnly=t}#i(){const e=this;p.addEventListener("open",(t=>{e.page_icon&&t.target.elBinded(e.page_icon).focus()})),p.addEventListener("close",(t=>{e.elBinded("btn_icon").focus()})),p.addEventListener("iconClick",(t=>{e.page_icon=t.detail.icon,t.target.close()}))}#a(e){u(e.target)}clear(){this.post_id="",this.title="",this.slug="",this.description="",this.capability="manage_options",this.type="menu",this.parent_menu="",this.menu_title="",this.page_icon="dashicons-admin-generic",this.position="",this.slug="",Object.keys(e.list).forEach((t=>{e.remove(t)})),c(".rds-error-message").html("")}show(){c("#rds-form").removeClass("hide"),c(".btn-warpper-header").removeClass("hide"),this.elBinded("title").focus(),this.setLastData()}#d(){const e=new o("dlg-close-page");return e.title="Close Confirmation",e.content="Are you sure that you want to close the current page? The changes that you made won't be saved.",e.addButton(["Yes","No"]),e.addEventListener("buttonClick",(e=>{"Yes"==e.detail.text&&(c("#rds-list").removeClass("hide"),c(".btn-add-page").removeClass("hide"),c("#rds-form").addClass("hide"),c(".btn-warpper-header").addClass("hide")),e.target.close()})),e.addEventListener("close",(e=>{e.target.node.remove()})),e}close(){this.#n!=l(this.#e)?this.#d().open():(c("#rds-list").removeClass("hide"),c(".btn-add-page").removeClass("hide"),c("#rds-form").addClass("hide"),c(".btn-warpper-header").addClass("hide"))}}const u=e=>{i(e);const t=e.getAttribute("data-valid-handle");if("page_slug"==t){let t=/^\w+$/;if(""!=e.value&&!t.test(e.value))return i(e,"This field may only contain letters, numbers, and underscores"),!1}if("field_name"==t){e.setAttribute("data-val",e.value);let s=/^\w+$/;if(""!=e.value&&!s.test(e.value))return i(e,"This field may only contain letters, numbers, and underscores"),!1;const a=document.querySelectorAll('[data-valid-handle="'+t+'"][data-val="'+e.value+'"]');if(a.length>1)return a.forEach((t=>{t.setAttribute("data-duplicate",e.value),i(t,"This field cannot be duplicates")})),!1;{const s=e.getAttribute("data-duplicate");if(s){e.removeAttribute("data-duplicate");const a=document.querySelectorAll('[data-valid-handle="'+t+'"][data-val="'+s+'"]');1==a.length&&a.forEach((e=>{e.removeAttribute("data-duplicate"),i(e)}))}}}e.checkValidity()||i(e,e.validationMessage)},m=new h;export{h as optPage,m as page};
  • radas/trunk/admin/option-page.php

    r3302806 r3304101  
    1010use Radas\Lib\Classes\Abstracts\Field;
    1111use Radas\Lib\Factories\Element_Factory;
     12use Radas\Lib\Helper\Breakdance;
    1213use Radas\Lib\Helper\Util;
     14use Radas\Lib\Helper\WPML;
    1315
    1416/**
     
    2830    protected $is_breakdance_active;
    2931
    30     public function __construct($post_id){
    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();
     32    public function __construct(array $page){
     33        $this->page = $page;
     34       
     35        $this->is_wpml_active = WPML::is_active();
     36        $this->is_breakdance_active = Breakdance::is_active();
    3637
    3738        if($this->page){
     39            $this->option_name = $this->page['slug'];
    3840            $this->elements = Element_Factory::getInstance()($this->page['fields'][0]);
    3941            $this->fields = Util::get_element_fields($this->elements);
    4042            $this->route = '/options/' . $this->page['slug'];
    41         }
     43
     44            add_filter("radas_get_{$this->option_name}_value", function($field_name, array $args=[] ){
     45                return $this->get_value($field_name, $args);
     46            }, 10, 2);
     47        }       
    4248    }
    4349
     
    212218        }
    213219
     220        if($this->fields[$atts['field']]->type == 'password') {
     221            return;
     222        }
     223
    214224        return $this->get_value($atts['field'], $atts);
    215 
    216         /** get options value and insert to fields */
    217         $this->get_option_values();
    218 
    219         /** @var Field $field */
    220         $field = $this->fields[$atts['field']];       
    221 
    222         if( array_key_exists('format', $atts) && $atts['format'] == 'raw' ){
    223             return $field->get_sanitized_value();
    224         }
    225 
    226         // if($field->type == 'media' && $field->attributes['data-media-type'] == 'image'){
    227         if($field->type == 'media'){
    228             $atts = shortcode_atts( [
    229                 'size'  => 'thumbnail',
    230                 'width' => '',
    231                 'height' => '',
    232                 'format' => '',         
    233             ], $atts);
    234    
    235             if($atts['format'] == 'id') {
    236                 return $field->get_sanitized_value();
    237             }
    238 
    239             if($atts['format'] == 'url') {
    240                 return wp_get_attachment_url($field->get_sanitized_value());
    241             }
    242 
    243             $ar_size = [];
    244             if($atts['width']) {
    245                 array_push($ar_size, $atts['width']);
    246                 if($atts['height']) {
    247                     array_push($ar_size, $atts['height']);                   
    248                 }   
    249                 return wp_get_attachment_image($field->get_sanitized_value(), $ar_size);
    250             }
    251 
    252             if($atts['size']) {
    253                 return wp_get_attachment_image($field->get_sanitized_value(), $atts['size']);
    254             }
    255         }
    256 
    257         if($field->type == 'email'){
    258             $atts = shortcode_atts( [
    259                 'format' => '',         
    260             ], $atts);
    261                
    262             if($atts['format'] == 'url') {
    263                 return esc_url('mailto:' . $field->get_sanitized_value());
    264             }
    265         }
    266 
    267         if($field->type == 'tel'){
    268             $atts = shortcode_atts( [
    269                 'format' => '',         
    270             ], $atts);
    271            
    272             if($atts['format'] == 'url') {
    273                 return esc_url('tel:' . $field->get_sanitized_value());
    274             }
    275         }
    276 
    277         if($field->type == 'date'){
    278             $atts = shortcode_atts( [
    279                 'format' => 'default',         
    280             ], $atts);
    281            
    282             $date = date_create($field->get_sanitized_value());
    283 
    284             if($atts['format'] == 'default') {
    285                 return date_format($date, get_option( 'date_format' ));               
    286             }
    287 
    288             return date_format($date, $atts['format']);               
    289         }       
    290 
    291         if($field->type == 'select' || $field->type == 'radio'){
    292             $atts = shortcode_atts( [
    293                 'format' => 'value',         
    294             ], $atts);
    295            
    296             if($atts['format'] == 'value') {
    297                 return $field->get_sanitized_value();
    298             }
    299 
    300             if($atts['format'] == 'text') {
    301                 return esc_html($field->options[$field->get_sanitized_value()]);
    302             }           
    303         }
    304        
    305         return $field->get_sanitized_value();
    306225    }
    307226
  • radas/trunk/admin/rest/cpt/rest-option-page.php

    r3302806 r3304101  
    33
    44use Radas\Admin\Option_Page;
     5use Radas\Lib\Helper\Instance;
     6use Radas\Lib\Helper\Option;
    57use Radas\Lib\Helper\Util;
    68use WP_REST_Request;
     
    9193        }     
    9294       
    93         /** @var Option_Page $opt_page */
    94         $opt_page = Util::get_instance_with_param(Option_Page::class, $id, $id);
     95        /** @var Option_Page $opt_page */       
     96        $opt_page = Option::get_instance_by_id($id);
    9597        if(!$opt_page->delete()){
    9698            return Util::rest_response(
     
    104106        }
    105107       
    106         Util::delete_instance_with_param(Option_Page::class, $id, $id);
     108        Option::delete_instance_by_id($id);
    107109
    108110        // $page = json_decode(get_post_meta($id, 'op_json', true), true);
     
    262264        update_post_meta($id, 'op_json', $request->get_body());
    263265
    264         // re-set chache
    265         wp_cache_delete(Option_Page::class . '_' . $id, 'radas_instance');
    266         Util::get_instance_with_param(Option_Page::class, $id, $id);
     266        // refresh instance
     267        Option::delete_instance_by_id($id);
     268        Option::get_instance_by_id($id);
    267269
    268270        return Util::rest_response(
     
    337339
    338340        // create option page and save it to chache
    339         Util::get_instance_with_param(Option_Page::class, $new_id, $new_id);
     341        Option::get_instance_by_id($new_id);
    340342
    341343        return Util::rest_response(
  • radas/trunk/inc/plugin.php

    r3156010 r3304101  
    66use Radas\Admin\Option_Page_CPT;
    77use Radas\Admin\Rest\CPT\REST_Option_Page;
    8 use Radas\Lib\Helper\Util;
     8use Radas\Lib\Helper\Instance;
     9use Radas\Lib\Helper\Option;
    910
    1011// If this file is called directly, abort.
     
    7374        while ( $the_query->have_posts() ) {
    7475            $the_query->the_post();
    75             $post_id = get_post()->ID;
    76             Util::get_instance_with_param(Option_Page::class, $post_id, $post_id)->register();
     76            $opt_page = Option::get_instance_by_id( get_post()->ID );
     77            if(!is_null($opt_page)){
     78                $opt_page->register();
     79            }
    7780        }
    7881    }       
  • radas/trunk/lib/helper/util.php

    r3302806 r3304101  
    8080    }
    8181
    82     /**
    83      * To get Instance from wp_cache
    84      * @param string $class
    85      * @return mixed
    86      */
    87     public static function get_cached_instance($class){
    88         $instance = wp_cache_get($class, 'radas_instance');
    89         if(!$instance){
    90             if(!class_exists($class)){
    91                 return false;
    92             }
    93             $instance = new $class();
    94             wp_cache_set($class, $instance, 'radas_instance');
    95         }
    96         // wp_cache_flush_group( 'vxn_express_class' );
    97         return $instance;
    98     }
    99 
    100     /**
    101      * To get Instance from wp_cache
    102      * @param string $class
    103      * @return bool
    104      */
    105     public static function delete_cached_instance($class){
    106         return wp_cache_delete ($class, 'radas_instance');
    107     }
    108    
    109 
    110     /**
    111      * To get cached instance with params from wp_cache
    112      * @param string  $class
    113      * @param string  $key
    114      * @param mixed $param
    115      * @return mixed
    116      */
    117     public static function get_instance_with_param($class, $key, ...$param){
    118         $instance = wp_cache_get("{$class}_{$key}", 'radas_instance');
    119         if(!$instance){
    120             if(!class_exists($class)){
    121                 return false;
    122             }
    123             $instance = new $class(...$param);
    124             wp_cache_set("{$class}_{$key}", $instance, 'radas_instance');
    125         }
    126         return $instance;
    127     }   
    128 
    129         /**
    130      * To get cached instance with params from wp_cache
    131      * @param string  $class
    132      * @param string  $key
    133      * @param mixed $param
    134      * @return bool
    135      */
    136     public static function delete_instance_with_param($class, $key, ...$param){
    137         return wp_cache_delete("{$class}_{$key}", 'radas_instance');
    138     } 
    139 
    14082    public static function get_function_return_type($function){
    14183        return (new \ReflectionFunction($function))->getReturnType();
     
    193135        return new \WP_REST_Response($response, $status);
    194136    }
    195 
    196     public static function is_breakdance_active() {
    197         if (!function_exists('is_plugin_active')) {
    198             require_once ABSPATH . 'wp-admin/includes/plugin.php';
    199         }
    200 
    201         return is_plugin_active('breakdance/plugin.php');
    202     }
    203    
    204     public static function is_wpml_active() {
    205         if (!function_exists('is_plugin_active')) {           
    206             require_once ABSPATH . 'wp-admin/includes/plugin.php';
    207         }
    208 
    209         return is_plugin_active('sitepress-multilingual-cms/sitepress.php');
    210     }
    211 
    212     public static function get_lang() {
    213         return apply_filters( 'wpml_current_language', null );
    214     }   
    215137}
  • radas/trunk/lib/plugin.php

    r3156010 r3304101  
    1313   
    1414    add_action('init', 'radas_lib_register_scripts');
    15     add_action('init', 'radas_lib_register_styles');
     15    add_action('init', 'radas_lib_register_styles');   
    1616});
    1717
  • radas/trunk/radas.php

    r3302806 r3304101  
    44 * Plugin URI:        https://wpradas.com
    55 * Description:       The Lightweight WordPress Plugin for Effortless Options Page Creation
    6  * Version:           0.2.2
     6 * Version:           0.2.3
    77 * Requires at least: 6.5
    88 * Requires PHP:      8.0
     
    3232require_once RADAS_PATH . 'inc/autoloader.php';
    3333require_once RADAS_PATH . 'inc/plugin.php';
     34require_once RADAS_PATH . 'inc/functions.php';
     35require_once RADAS_PATH . 'inc/bd-elements/plugin.php';
    3436require_once RADAS_PATH . 'lib/plugin.php';
     37
    3538
    3639// action
     
    4245    do_action('radas_run');
    4346}
    44 
  • radas/trunk/readme.txt

    r3302806 r3304101  
    55Requires at least: 6.5
    66Tested up to: 6.8.1
    7 Stable tag: 0.2.2
     7Stable tag: 0.2.3
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    5050* WordPress 6.5 or later
    5151
     52= CREATE OPTIONS PAGE =
     53
     541. To create new options page go to Tools->Radas Options Page
     551. Click Add New button
     56
    5257= AUTOMATIC INSTALLATION =
    5358
     
    6570
    6671== Changelog ==
     72= 0.2.3 =
     73
     74* Add Radas Breadcrumbs element for Breakdance
     75* add radas_get_option API function
     76* add radas_option_page_load_json API function
     77* optimize code
     78
    6779= 0.2.2 =
    6880
Note: See TracChangeset for help on using the changeset viewer.