Plugin Directory

Changeset 2225180


Ignore:
Timestamp:
01/10/2020 03:55:52 AM (6 years ago)
Author:
coder618
Message:

Version v1.10 release with major changes.

Location:
timeless-component-builder
Files:
19 added
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • timeless-component-builder/trunk/dist/tcb-style.css

    r2221968 r2225180  
    1 .single-field-wrapper {
    2   margin-bottom: 20px;
    3 }
    4 
    5 .single-field-wrapper input,
    6 .single-field-wrapper textarea {
    7   display: block;
    8   width: 550px;
    9   margin-top: 8px;
    10 }
    11 
    121.single-field-wrapper label {
    132  margin-bottom: 10px;
     
    2514      -ms-flex-direction: column;
    2615          flex-direction: column;
    27 }
    28 
    29 .multiple-fileds-wrapper .single-item-wrapper {
    30   padding: 15px;
    31   margin-bottom: 15px;
    32   border-radius: 5px;
    33   border: 2px solid #ccc;
    34   position: relative;
    3516}
    3617
     
    7556  cursor: pointer;
    7657}
     58
     59/* * */
     60.tcb_fields_wrapper {
     61  display: -webkit-box;
     62  display: -ms-flexbox;
     63  display: flex;
     64  -ms-flex-wrap: wrap;
     65      flex-wrap: wrap;
     66}
     67
     68.single-field-wrapper {
     69  width: 100%;
     70}
     71
     72.single-field-wrapper > div {
     73  padding: 10px;
     74}
     75
     76.single-field-wrapper input,
     77.single-field-wrapper textarea {
     78  display: block;
     79  width: 100%;
     80  margin-top: 8px;
     81  font-size: 13px;
     82}
     83
     84.single-field-wrapper textarea {
     85  min-height: 150px;
     86}
     87
     88.single-field-wrapper label {
     89  font-size: 13px;
     90}
     91
     92.single-field-wrapper.col-1 {
     93  -ms-flex: 0 0 8.333333%;
     94  -webkit-box-flex: 0;
     95          flex: 0 0 8.333333%;
     96  max-width: 8.333333%;
     97}
     98
     99.single-field-wrapper.col-2 {
     100  -ms-flex: 0 0 16.666667%;
     101  -webkit-box-flex: 0;
     102          flex: 0 0 16.666667%;
     103  max-width: 16.666667%;
     104}
     105
     106.single-field-wrapper.col-3 {
     107  -ms-flex: 0 0 25%;
     108  -webkit-box-flex: 0;
     109          flex: 0 0 25%;
     110  max-width: 25%;
     111}
     112
     113.single-field-wrapper.col-4 {
     114  -ms-flex: 0 0 33.333333%;
     115  -webkit-box-flex: 0;
     116          flex: 0 0 33.333333%;
     117  max-width: 33.333333%;
     118}
     119
     120.single-field-wrapper.col-5 {
     121  -ms-flex: 0 0 41.666667%;
     122  -webkit-box-flex: 0;
     123          flex: 0 0 41.666667%;
     124  max-width: 41.666667%;
     125}
     126
     127.single-field-wrapper.col-6 {
     128  -ms-flex: 0 0 50%;
     129  -webkit-box-flex: 0;
     130          flex: 0 0 50%;
     131  max-width: 50%;
     132}
     133
     134.single-field-wrapper.col-7 {
     135  -ms-flex: 0 0 58.333333%;
     136  -webkit-box-flex: 0;
     137          flex: 0 0 58.333333%;
     138  max-width: 58.333333%;
     139}
     140
     141.single-field-wrapper.col-8 {
     142  -ms-flex: 0 0 66.666667%;
     143  -webkit-box-flex: 0;
     144          flex: 0 0 66.666667%;
     145  max-width: 66.666667%;
     146}
     147
     148.single-field-wrapper.col-9 {
     149  -ms-flex: 0 0 75%;
     150  -webkit-box-flex: 0;
     151          flex: 0 0 75%;
     152  max-width: 75%;
     153}
     154
     155.single-field-wrapper.col-10 {
     156  -ms-flex: 0 0 83.333333%;
     157  -webkit-box-flex: 0;
     158          flex: 0 0 83.333333%;
     159  max-width: 83.333333%;
     160}
     161
     162.single-field-wrapper.col-11 {
     163  -ms-flex: 0 0 91.666667%;
     164  -webkit-box-flex: 0;
     165          flex: 0 0 91.666667%;
     166  max-width: 91.666667%;
     167}
     168
     169.single-field-wrapper.col-12 {
     170  -ms-flex: 0 0 100%;
     171  -webkit-box-flex: 0;
     172          flex: 0 0 100%;
     173  max-width: 100%;
     174}
     175
     176.single-item-wrapper {
     177  border-radius: 2px;
     178  padding: 15px 0 0 0;
     179  background-color: #fcfcfc;
     180  margin-bottom: 15px;
     181  border-radius: 2px;
     182  position: relative;
     183  border: 1px solid #dfdfdf;
     184  width: 100%;
     185}
     186
     187.single-item-wrapper:hover {
     188  background-color: #f6f6f6;
     189}
     190
     191.repeater-fileds {
     192  width: calc(100% - 30px);
     193}
     194
     195.multiple-items-title {
     196  margin-bottom: 8px;
     197  font-weight: 700;
     198}
    77199/*# sourceMappingURL=tcb-style.css.map */
  • timeless-component-builder/trunk/dist/tcb-style.css.map

    r2221968 r2225180  
    11{
    22    "version": 3,
    3     "mappings": "AAAA,AAAA,qBAAqB,CAAC;EACrB,aAAa,EAAE,IAAI;CACnB;;AACD,AAAA,qBAAqB,CAAC,KAAK;AAC3B,qBAAqB,CAAC,QAAQ,CAAC;EAC9B,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,GAAG;CACf;;AAED,AAAA,qBAAqB,CAAC,KAAK,CAAC;EAC3B,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,UAAU;CAC1B;;AAED,AAAA,wBAAwB,CAAC;EACxB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;CACtB;;AAED,AAAA,wBAAwB,CAAC,oBAAoB,CAAC;EAC7C,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,IAAI;EACnB,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,cAAc;EACtB,QAAQ,EAAE,QAAQ;CAClB;;AAED,AAAA,mBAAmB,CAAC;EACnB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,GAAG,EAAE,IAAI;EACT,gBAAgB,EAAE,kBAAkB;EACpC,KAAK,EAAE,eAAe;EACtB,uBAAuB;EACvB,YAAY,EAAE,kBAAkB;CAChC;;AAED,AAAA,gBAAgB,CAAC;EAChB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;EACZ,uBAAuB;CACvB;;AAED,AAAA,CAAC,AAAA,cAAc,CAAC;EACf,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,CAAC;EACd,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;EAClB,QAAQ,EAAE,QAAQ;EAClB,aAAa,EAAE,IAAI;CAYnB;;AArBD,AAUC,CAVA,AAAA,cAAc,CAUd,MAAM,CAAC;EACN,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,IAAI;EACnB,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,OAAO;CACf",
     3    "mappings": "AAAA,AAAA,qBAAqB,CAAC,KAAK,CAAC;EAC3B,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,UAAU;CAC1B;;AAED,AAAA,wBAAwB,CAAC;EACxB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;CACtB;;AAED,AAAA,mBAAmB,CAAC;EACnB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,GAAG,EAAE,IAAI;EACT,gBAAgB,EAAE,kBAAkB;EACpC,KAAK,EAAE,eAAe;EACtB,uBAAuB;EACvB,YAAY,EAAE,kBAAkB;CAChC;;AAED,AAAA,gBAAgB,CAAC;EAChB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;EACZ,uBAAuB;CACvB;;AAED,AAAA,CAAC,AAAA,cAAc,CAAC;EACf,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,CAAC;EACd,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;EAClB,QAAQ,EAAE,QAAQ;EAClB,aAAa,EAAE,IAAI;CAYnB;;AArBD,AAUC,CAVA,AAAA,cAAc,CAUd,MAAM,CAAC;EACN,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,IAAI;EACnB,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,OAAO;CACf;;AAGF,OAAO;AACP,AAAA,mBAAmB,CAAC;EACnB,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,IAAI;CAEf;;AAED,AAAA,qBAAqB,CAAC;EACrB,KAAK,EAAE,IAAI;CA+EX;;AAhFD,AAIC,qBAJoB,GAIlB,GAAG,CAAC;EACL,OAAO,EAAE,IAAI;CACb;;AANF,AAOC,qBAPoB,CAOpB,KAAK;AAPN,qBAAqB,CAQpB,QAAQ,CAAC;EACR,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,GAAG;EACf,SAAS,EAAE,IAAI;CACf;;AAbF,AAcC,qBAdoB,CAcpB,QAAQ,CAAC;EACR,UAAU,EAAE,KAAK;CACjB;;AAhBF,AAiBC,qBAjBoB,CAiBpB,KAAK,CAAC;EACL,SAAS,EAAE,IAAI;CACf;;AAnBF,AAoBC,qBApBoB,AAoBnB,MAAM,CAAC;EACP,QAAQ,EAAE,aAAa;EACvB,IAAI,EAAE,aAAa;EACnB,SAAS,EAAE,SAAS;CACpB;;AAxBF,AAyBC,qBAzBoB,AAyBnB,MAAM,CAAC;EACP,QAAQ,EAAE,cAAc;EACxB,IAAI,EAAE,cAAc;EACpB,SAAS,EAAE,UAAU;CACrB;;AA7BF,AA8BC,qBA9BoB,AA8BnB,MAAM,CAAC;EACP,QAAQ,EAAE,OAAO;EACjB,IAAI,EAAE,OAAO;EACb,SAAS,EAAE,GAAG;CACd;;AAlCF,AAmCC,qBAnCoB,AAmCnB,MAAM,CAAC;EACP,QAAQ,EAAE,cAAc;EACxB,IAAI,EAAE,cAAc;EACpB,SAAS,EAAE,UAAU;CACrB;;AAvCF,AAwCC,qBAxCoB,AAwCnB,MAAM,CAAC;EACP,QAAQ,EAAE,cAAc;EACxB,IAAI,EAAE,cAAc;EACpB,SAAS,EAAE,UAAU;CACrB;;AA5CF,AA6CC,qBA7CoB,AA6CnB,MAAM,CAAC;EACP,QAAQ,EAAE,OAAO;EACjB,IAAI,EAAE,OAAO;EACb,SAAS,EAAE,GAAG;CACd;;AAjDF,AAkDC,qBAlDoB,AAkDnB,MAAM,CAAC;EACP,QAAQ,EAAE,cAAc;EACxB,IAAI,EAAE,cAAc;EACpB,SAAS,EAAE,UAAU;CACrB;;AAtDF,AAuDC,qBAvDoB,AAuDnB,MAAM,CAAC;EACP,QAAQ,EAAE,cAAc;EACxB,IAAI,EAAE,cAAc;EACpB,SAAS,EAAE,UAAU;CACrB;;AA3DF,AA4DC,qBA5DoB,AA4DnB,MAAM,CAAC;EACP,QAAQ,EAAE,OAAO;EACjB,IAAI,EAAE,OAAO;EACb,SAAS,EAAE,GAAG;CACd;;AAhEF,AAiEC,qBAjEoB,AAiEnB,OAAO,CAAC;EACR,QAAQ,EAAE,cAAc;EACxB,IAAI,EAAE,cAAc;EACpB,SAAS,EAAE,UAAU;CACrB;;AArEF,AAsEC,qBAtEoB,AAsEnB,OAAO,CAAC;EACR,QAAQ,EAAE,cAAc;EACxB,IAAI,EAAE,cAAc;EACpB,SAAS,EAAE,UAAU;CACrB;;AA1EF,AA2EC,qBA3EoB,AA2EnB,OAAO,CAAC;EACR,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,QAAQ;EACd,SAAS,EAAE,IAAI;CACf;;AAGF,AAAA,oBAAoB,CAAC;EACpB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,UAAU;EACnB,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,IAAI;EACnB,aAAa,EAAE,GAAG;EAClB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,iBAAiB;EACzB,KAAK,EAAE,IAAI;CAKX;;AAbD,AAUC,oBAVmB,AAUlB,MAAM,CAAC;EACP,gBAAgB,EAAE,OAAO;CACzB;;AAGF,AAAA,gBAAgB,CAAC;EAChB,KAAK,EAAE,iBAAiB;CACxB;;AAED,AAAA,qBAAqB,CAAC;EACrB,aAAa,EAAE,GAAG;EAClB,WAAW,EAAE,GAAG;CAChB",
    44    "sources": [
    55        "tcb-style.scss"
  • timeless-component-builder/trunk/dist/tcb-style.scss

    r2221968 r2225180  
    1 .single-field-wrapper {
    2     margin-bottom: 20px;
    3 }
    4 .single-field-wrapper input,
    5 .single-field-wrapper textarea {
    6     display: block;
    7     width: 550px;
    8     margin-top: 8px;
    9 }
    10 
    111.single-field-wrapper label {
    122    margin-bottom: 10px;
     
    199    display: flex;
    2010    flex-direction: column;
    21 }
    22 
    23 .multiple-fileds-wrapper .single-item-wrapper {
    24     padding: 15px;
    25     margin-bottom: 15px;
    26     border-radius: 5px;
    27     border: 2px solid #ccc;
    28     position: relative;
    2911}
    3012
     
    6850    }
    6951}
     52
     53/* * */
     54.tcb_fields_wrapper {
     55    display: flex;
     56    flex-wrap: wrap;
     57    // margin: -10px;
     58}
     59
     60.single-field-wrapper {
     61    width: 100%;
     62    // margin-bottom: 20px;
     63    // padding: 10px;
     64    > div {
     65        padding: 10px;
     66    }
     67    input,
     68    textarea {
     69        display: block;
     70        width: 100%;
     71        margin-top: 8px;
     72        font-size: 13px;
     73    }
     74    textarea {
     75        min-height: 150px;
     76    }
     77    label {
     78        font-size: 13px;
     79    }
     80    &.col-1 {
     81        -ms-flex: 0 0 8.333333%;
     82        flex: 0 0 8.333333%;
     83        max-width: 8.333333%;
     84    }
     85    &.col-2 {
     86        -ms-flex: 0 0 16.666667%;
     87        flex: 0 0 16.666667%;
     88        max-width: 16.666667%;
     89    }
     90    &.col-3 {
     91        -ms-flex: 0 0 25%;
     92        flex: 0 0 25%;
     93        max-width: 25%;
     94    }
     95    &.col-4 {
     96        -ms-flex: 0 0 33.333333%;
     97        flex: 0 0 33.333333%;
     98        max-width: 33.333333%;
     99    }
     100    &.col-5 {
     101        -ms-flex: 0 0 41.666667%;
     102        flex: 0 0 41.666667%;
     103        max-width: 41.666667%;
     104    }
     105    &.col-6 {
     106        -ms-flex: 0 0 50%;
     107        flex: 0 0 50%;
     108        max-width: 50%;
     109    }
     110    &.col-7 {
     111        -ms-flex: 0 0 58.333333%;
     112        flex: 0 0 58.333333%;
     113        max-width: 58.333333%;
     114    }
     115    &.col-8 {
     116        -ms-flex: 0 0 66.666667%;
     117        flex: 0 0 66.666667%;
     118        max-width: 66.666667%;
     119    }
     120    &.col-9 {
     121        -ms-flex: 0 0 75%;
     122        flex: 0 0 75%;
     123        max-width: 75%;
     124    }
     125    &.col-10 {
     126        -ms-flex: 0 0 83.333333%;
     127        flex: 0 0 83.333333%;
     128        max-width: 83.333333%;
     129    }
     130    &.col-11 {
     131        -ms-flex: 0 0 91.666667%;
     132        flex: 0 0 91.666667%;
     133        max-width: 91.666667%;
     134    }
     135    &.col-12 {
     136        -ms-flex: 0 0 100%;
     137        flex: 0 0 100%;
     138        max-width: 100%;
     139    }
     140}
     141
     142.single-item-wrapper {
     143    border-radius: 2px;
     144    padding: 15px 0 0 0;
     145    background-color: #fcfcfc;
     146    margin-bottom: 15px;
     147    border-radius: 2px;
     148    position: relative;
     149    border: 1px solid #dfdfdf;
     150    width: 100%;
     151
     152    &:hover {
     153        background-color: #f6f6f6;
     154    }
     155}
     156
     157.repeater-fileds {
     158    width: calc(100% - 30px);
     159}
     160
     161.multiple-items-title {
     162    margin-bottom: 8px;
     163    font-weight: 700;
     164}
  • timeless-component-builder/trunk/inc/add_metabox.php

    r2221968 r2225180  
    55 */
    66function tcb_add_metaboxes() {
    7     $tcb_fileds = apply_filters( 'tcb__fileds', array());
    8     tcb_add_categories($tcb_fileds);
     7    $tcb_fields = tcb_get_registered_component();
     8    tcb_add_categories($tcb_fields);
    99
    10         add_meta_box(
    11             'tcb_metaboxes',
    12             __( 'Component Info', 'tcb' ),
    13             'tcb_generate_fields',
    14             'tcb_component'
    15         );
     10    add_meta_box(
     11        'tcb_metaboxes',
     12        __( 'Component Info', 'tcb' ),
     13        'tcb_generate_fields',
     14        'tcb_component'
     15    );
     16   
     17    add_meta_box(
     18        'tcb_metaboxes_shortcode_info',
     19        __( 'Component Shortcode', 'tcb' ),
     20        'tcb_generate_shortcode',
     21        'tcb_component'
     22    );
    1623
    17 
    18         add_meta_box(
    19             'tcb_metaboxes_shortcode_info',
    20             __( 'Component Shortcode', 'tcb' ),
    21             'tcb_generate_shortcode',
    22             'tcb_component'
    23         );
    24     // endif;
    2524}
    2625
  • timeless-component-builder/trunk/inc/class-fields.php

    r2221968 r2225180  
    1818    public $type;
    1919    public $repeating_fields;
     20    public $columns;
    2021
    2122    // assign the data to the variable
    2223    function __construct($data,$meta_data){
    23         $this->name = esc_html(isset($data['field']) ? $data['field'] : '');
    24         $this->placeholder = esc_html(isset($data['placeholder']) ? $data['placeholder'] : '');
    25         $this->label = esc_html(isset($data['label']) ? $data['label'] : '');
    26         $this->type = esc_html(isset($data['type']) ? $data['type'] : '');   
    27 
     24        $this->name         = esc_html(isset($data['field']) ? $data['field'] : '');
     25        $this->placeholder  = esc_html(isset($data['placeholder']) ? $data['placeholder'] : '');
     26        $this->label        = esc_html(isset($data['label']) ? $data['label'] : '');
     27        $this->type         = esc_html(isset($data['type']) ? $data['type'] : '');   
     28        $this->columns      = esc_html(  isset($data['columns']) && !empty($data['columns']) ? $data['columns'] : ''   );
    2829       
    2930        $this->repeating_fields = isset($data['fields']) ? $data['fields'] : [];   
     
    3435
    3536   
    36     public function get_value ($saved_meta_data){       
     37    public function get_value ($saved_meta_data){ 
     38        // var_dump($saved_meta_data)     ;
    3739           
    3840        ## if have any old metadata saved
    3941        if($saved_meta_data){               
    40             $saved_meta_data = unserialize($saved_meta_data);               
     42            $saved_meta_data =  $saved_meta_data ;
    4143            $value = is_array($saved_meta_data) && count($saved_meta_data) > 0 && array_key_exists($this->name,$saved_meta_data )? $saved_meta_data[$this->name]: '';
    4244            $this->value = $value;
     
    4850        $type = $a_type ? $a_type : $this->type;
    4951
    50         if( $this->type == 'textarea' ){
     52        if( $this->type == 'textarea' ){ 
    5153            return $this->textarea();
    5254        }
     
    115117        $html = '
    116118            <div class="repeater-fileds">
    117                 <input type="hidden" name="'.$this->name.'_count" value="'.$items_currently_have.'" />
     119                <h3 class="multiple-items-title">'.$this->label.'</h3>
    118120                <div class="multiple-fileds-wrapper" data-repeater-list="'.$this->name.'">
    119121                    '.$child_fields.'           
     
    132134    public function file_field($field_data = []){
    133135
    134         $name   = esc_html(  isset( $field_data['field'] ) ? $field_data['field'] : $this->name );
    135         $value  = esc_html( isset( $field_data['value'] ) ? $field_data['value'] : $this->value );
    136         $label  = esc_html(  isset( $field_data['label'] ) ? $field_data['label'] : $this->label );
     136        $name       = esc_html(  isset( $field_data['field'] ) ? $field_data['field'] : $this->name );
     137        $value      = esc_html( isset( $field_data['value'] ) ? $field_data['value'] : $this->value );
     138        $label      = esc_html(  isset( $field_data['label'] ) ? $field_data['label'] : $this->label );
     139        $columns    = esc_html(  isset( $field_data['columns'] ) ? $field_data['columns'] : $this->columns );
    137140       
    138141
    139142        $html =  '
    140             <div class="single-field-wrapper">
     143            <div class="single-field-wrapper col-'.$this->columns .'" ><div>
    141144                <label for="'.$name.'" >'.$label.'</label>     
    142145                <input  type="hidden" name="'.$name.'" value="'.$value.'" id="'.$name.'" />   
     
    153156        $html .= '
    154157                <button type="button" class="button media-uplooad-btn">Upload Media</button>
    155             </div>   
     158            </div></div>   
    156159        ';
    157160
     
    167170        $placeholder    = esc_html(isset( $field_data['placeholder'] ) ? $field_data['placeholder'] : $this->placeholder);
    168171        $label          = esc_html(isset( $field_data['label'] ) ? $field_data['label'] : $this->label);
     172        $columns        = esc_html(  isset( $field_data['columns'] ) ? $field_data['columns'] : $this->columns );
    169173
    170174        return'
    171         <div class="single-field-wrapper">
     175        <div class="single-field-wrapper col-'.$this->columns .'" ><div>
    172176            <label for="'.$name.'" >'.$label.'</label>
    173177            <input type="text" name="'.$name.'" id="'.$name.'" placeholder="'.$placeholder.'" value="'.$value.'" />
    174         </div>   
     178        </div></div>
    175179        ';
    176180    }
     
    182186        $placeholder    = esc_html(isset( $field_data['placeholder'] ) ? $field_data['placeholder'] : $this->placeholder);
    183187        $label          = esc_html(isset( $field_data['label'] ) ? $field_data['label'] : $this->label);
     188        $columns        = esc_html(isset( $field_data['columns'] ) ? $field_data['columns'] : $this->columns );
    184189
    185190        return '
    186         <div class="single-field-wrapper">
     191        <div class="single-field-wrapper col-'.$this->columns .'" ><div>
    187192            <label for="'.$name.'" >'.$label.'</label>
    188193            <textarea type="text" id="'.$name.'" name="'.$name.'" placeholder="'.$placeholder.'" >'.$value.'</textarea>
    189         </div>       
    190         ';       
     194        </div></div>
     195        ';
    191196    }
    192197
  • timeless-component-builder/trunk/inc/generate-metabox.php

    r2221968 r2225180  
    11<?php
    2 require 'class-fields.php';
    32/**
    43 * This function will call the TCB_fields class and generate the HTML output
     
    98function tcb_generate_fields( $post ) {
    109    ## get all the user defined fields
    11     $tcb_fileds = apply_filters( 'tcb__fileds', array());
    12 
    13     // var_dump($tcb_fileds);
     10    $tcb_fields = tcb_get_registered_component();
    1411
    1512    # get current post id
     
    2623
    2724        # Check if available categories have any field defined
    28         if(array_key_exists($component_cat, $tcb_fileds)){
     25        if(array_key_exists($component_cat, $tcb_fields)){
    2926
    3027            $saved_meta_data = get_post_meta( $post_id  ,'tcb_component_data', true );
    3128           
    3229            # Get assigned component fields from the array
    33             $c_tcb_fileds = $tcb_fileds[$component_cat];
     30            $c_tcb_fields = $tcb_fields[$component_cat];
    3431
    3532            ## Add nonce field
     
    3734
    3835            ## generate meta box based on assigned field and
    39             foreach($c_tcb_fileds as $field):               
     36            echo '<div class="tcb_fields_wrapper">';
     37            foreach($c_tcb_fields as $field):               
    4038                $fields_class = new TCB_fields($field, $saved_meta_data);
    4139                echo $fields_class->render_field();
    4240            endforeach;
     41            echo "</div>";
    4342        }
    4443
  • timeless-component-builder/trunk/inc/register_shortcode.php

    r2221968 r2225180  
    44 * so that user can use it
    55 */
    6 
    76function tcb_shortcode($atts=[]) {
    87    $html = '';
     
    109    $id = '';
    1110    $cat_name = '';
    12 
    1311    if( is_array($atts) ){
    1412        if(array_key_exists('cat', $atts) && !empty($atts['cat'])){
     
    2119   
    2220    $file = file_exists($file_path);
    23     if( $file){
    24         ob_start();       
     21    if( $file && $cat_name ) {
     22        ob_start();
     23
     24        // set the global query variable
    2525        set_query_var( 'tcb_id',$atts['id'] ) ;
     26        set_query_var( 'tcb_cat', $cat_name ) ;
     27
     28        // return the template
    2629        get_template_part( 'tcb/component-'. $cat_name );
     30       
     31        // reset buffer
    2732        return ob_get_clean();
    2833    }else{
    29         $str = __('Please Create a file at ', "tcb") .": ". $file_path ;
    30         $str .= __(" To render the component", "tcb");
     34        $str    = __('Please Create a file at ', "tcb") .": ". $file_path ;
     35        $str   .= __(" To render the component", "tcb");
    3136        return $str;
    3237    }
    33 
    3438}
    3539add_shortcode( 'tcb_component' , 'tcb_shortcode' );
  • timeless-component-builder/trunk/inc/save_metabox.php

    r2221968 r2225180  
    2121        return $post_id;
    2222
    23 
    24 
    25 
    2623    ## Get current Component Type
    2724    $c_cats = get_the_terms($post_id, 'component_type');
    2825
    2926    ## get all the user defined fields
    30     $tcb_fileds = apply_filters( 'tcb__fileds', array());
     27
     28    $tcb_fields = tcb_get_registered_component();
    3129
    3230    ## define a empty array where we push the data
     
    4038
    4139        # Check if available categories have any field defined
    42         if(array_key_exists($component_cat, $tcb_fileds)){
     40        if(array_key_exists($component_cat, $tcb_fields)){
    4341            // echo "YYY";
    4442
    4543            # Get associative component fields from the array
    46             $c_tcb_fileds = $tcb_fileds[$component_cat];
     44            $c_tcb_fields = $tcb_fields[$component_cat];
    4745
    4846
    4947
    5048           
    51             foreach($c_tcb_fileds as $field):
     49            foreach($c_tcb_fields as $field):
    5250                $name = $field['field'];
    5351
     
    6159                        foreach($field['fields'] as $child_field ){
    6260                            $c_name = $child_field['field'] ;
    63                             $array_to_save[$name][$i][$c_name] = sanitize_text_field($_POST[$name][$i][$c_name]);
     61                            // if text area use different sanitization
     62                            if( $child_field['type'] == 'textarea' ) {                               
     63                                $array_to_save[$name][$i][$c_name] =   wp_kses_post($_POST[$name][$i][$c_name]);
     64                            }else{
     65                                $array_to_save[$name][$i][$c_name] = sanitize_text_field($_POST[$name][$i][$c_name]);
     66                            }
    6467                        }                       
    6568                    }
     
    7174                    ## check if the value present in the post array push the data
    7275                    if( array_key_exists( $name, $_POST  )) :
    73                         $array_to_save[$name] = sanitize_text_field($_POST[$name]);
     76                       
     77                        // if text area use different sanitization
     78                        if( $field['type'] == 'textarea' ) {       
     79                            $array_to_save[$name] = wp_kses_post($_POST[$name]);
     80                        }else{                           
     81                            $array_to_save[$name] = sanitize_text_field($_POST[$name]);
     82                        }
    7483                    endif;
    7584                }
     
    8089
    8190            ## save the data to post meta
    82             update_post_meta( $post_id, 'tcb_component_data', serialize($array_to_save)  );
     91            update_post_meta( $post_id, 'tcb_component_data', $array_to_save  );
    8392
    8493        }
  • timeless-component-builder/trunk/inc/user_function.php

    r2221968 r2225180  
    99   
    1010    if( $id ){
    11         return  unserialize( get_post_meta( $id, 'tcb_component_data',true));       
     11        return   get_post_meta( $id, 'tcb_component_data',true);       
    1212    }
    13 
    1413    // by default return false
    1514    return false;
     15}
    1616
     17/**
     18 * Render Edit Link
     19 *
     20 */
     21function tcb_link(){
     22    $id = get_query_var( 'tcb_id', false );
     23    if($id){
     24        return "<a href='".get_edit_post_link($id)."' class='tcb_link tcb_component_edit_link'>Edit</a>";
     25    }
     26    return '';
    1727}
     28
     29/**
     30 * Component Class
     31 * This function will return necessary component class with user input
     32 *
     33 */
     34
     35function tcb_class($extra_class=false){
     36    $id = get_query_var( 'tcb_id', false );
     37    $cat_name =  get_query_var( 'tcb_cat', false ) ;
     38
     39    $data = get_post_meta( $id, 'tcb_component_data',true);
     40
     41    $class_name ="tcb_component {$cat_name} ";
     42
     43    // if user provide any class name in the component css_class field
     44    if( $data != false ){
     45        $class_name .=  isset($data['css_class']) && !empty($data['css_class']) ? sanitize_html_class($data['css_class'])  : '';
     46    }
     47    return $extra_class ?  $class_name ." ". sanitize_html_class($extra_class) : $class_name ;
     48}
     49
     50/**
     51 * This function will return registered component array
     52 */
     53function tcb_get_registered_component(){
     54    $fields = apply_filters( 'tcb__fields', array());
     55
     56     // add custom css class filed in all the components
     57     foreach( $fields as $k => $s_c_fileds ){   
     58        $fields[$k][] = [
     59        'type' => 'text',
     60        'field' => 'css_class',
     61        'columns' => 12,
     62        'label' => 'Add css class if Necessary' 
     63        ];
     64    }
     65    return is_array($fields) && count($fields) > 0 ? $fields : [] ;   
     66}
  • timeless-component-builder/trunk/readme.txt

    r2221969 r2225180  
    22Contributors: coder618
    33Donate link: https://coder618.github.io
    4 Tags: Component System, Component Builder, Timeless component builder
     4Tags: Component System, Component Builder, Timeless component builder, tcb
    55Requires at least: 4.6
    66Tested up to: 5.3.2
    7 Stable tag: 1.0
     7Stable tag: 1.1.0
    88Requires PHP: 7.0
    99License: GPLv2
     
    1111
    1212== Description ==
    13 This plugin will help developer to build solid component.
     13This plugin will help developer to build component in minimum amount of time.
    1414This plugin based on some wordpress core function like : add_filter , meta box , Custom post type.
    1515thats why you can consider this plugin is a timeless plugin, because i dont think WordPress going to replace
     
    7474    return $arr;
    7575}
    76 add_filter( 'tcb__fileds', 'banner_fields' );
     76add_filter( 'tcb__fields', 'banner_fields' );
    7777
    7878Step 2:
  • timeless-component-builder/trunk/tcb.php

    r2221968 r2225180  
    22/**
    33 * Plugin Name: Timeless Component Builder
    4  * Description: Build Component in minimum amount of time.
     4 * Description: Build reusable Component in minimum amount of time.
    55 * Author: coder618
    66 * Author URI: https://coder618.github.io
    7  * Version: 1.0.0
     7 * Version: 1.1.0
    88 * Text Domain : tcb
    99*/
     
    2424                    'singular_name' => __( 'Component', 'tcb' )
    2525                ),
    26                 'public' => true,
     26                'public' => false,
    2727                'has_archive' => false,
    2828                'publicly_queryable' =>false,
     
    6262    private function load_dependencies() {
    6363       
     64        require plugin_dir_path( __FILE__ ) .  'inc/user_function.php';
     65        require plugin_dir_path( __FILE__ ) .  'inc/class-fields.php';
    6466        require plugin_dir_path( __FILE__ ) .  'inc/add_categories.php';
    6567        require plugin_dir_path( __FILE__ ) .  'inc/add_metabox.php';
     
    6769        require plugin_dir_path( __FILE__ ) .  'inc/save_metabox.php';
    6870        require plugin_dir_path( __FILE__ ) .  'inc/register_shortcode.php';
    69         require plugin_dir_path( __FILE__ ) .  'inc/user_function.php';
    7071
    7172    }
Note: See TracChangeset for help on using the changeset viewer.