[ Index ]

PHP Cross Reference of PageLines Framework

title

Body

[close]

/admin/ -> class.options.engine.php (source)

   1  <?php
   2  /**
   3   * Option Engine Class
   4   *
   5   * Sorts and Draws options based on the 'option array'
   6   * Option array is loaded in config.option.php and through filters
   7   *
   8   * @package     PageLines Framework
   9   * @subpackage  Options
  10   * @since       1.0
  11   *
  12   * @version     2.2 - implement 'docstitle' setting ... see get_option_title()
  13   */
  14  class OptEngine {
  15  
  16      /**
  17       * PHP5 Constructor
  18       *
  19       * @param   null $settings_field
  20       * @version 2.2 - alphabetized defaults listing; add 'docstitle' setting
  21       */
  22  	function __construct( $settings_field = null ) {
  23          
  24          $this->settings_field = $settings_field;
  25  
  26          $this->defaults = array(
  27              'callback'                => '',
  28              'clone_id'                => 1,
  29              'count_number'             => 10,
  30              'css_prop'                => '',
  31              'default'                 => '',
  32              'default_free'             => null,
  33              'disabled'                => false,
  34              'disabled_mode'            => false,
  35              'docslink'                 => null,
  36              'docstitle'             => '',
  37              'exp'                    => '',
  38              'fields'                => array(),
  39              'flag'                    => '',
  40              'htabs'                    => array(),
  41              'height'                => '0px',
  42              'imagepreview'             => 200,
  43              'inputlabel'             => '',
  44              'inputsize'                => 'regular',
  45              'layout'                 => 'normal',
  46              'options'                => array(),
  47              'optionicon'             => '',
  48              'pid'                    => '',
  49              'placeholder'            => false,
  50              'post_id'                => '',
  51              'pro_note'                => false,
  52              'section'                => '',
  53              'selectors'                => '',
  54              'selectvalues'             => array(),
  55              'scontrol'                => '',
  56              'shortexp'                 => '',
  57              'setting'                => '',
  58              'showname'                => false,
  59              'special'                => null,
  60              'sprite'                => '',
  61              'type'                     => 'check',
  62              'title'                 => '',
  63              'version'                 => null,
  64              'version_set_default'     => 'free',
  65              'vidlink'                 => null,
  66              'vidtitle'                => '',
  67              'width'                    => '0px',
  68              'wp_option'                => false
  69          );
  70          
  71      }
  72  
  73  
  74      /**
  75      *
  76      * @TODO document
  77      *
  78      */
  79  	function make_adjustments($o){
  80          
  81          if($o['type'] == 'color_multi' || $o['type'] == 'text_content' || $o['inputsize'] == 'big' || $o['type'] == 'multi_option'){
  82              $o['layout'] = 'full';
  83          }
  84  
  85          if($o['type'] == 'text_content_reverse' ){
  86              $o['layout'] = 'interface';
  87          }
  88              
  89          global $supported_elements;
  90          
  91          
  92          $support = (isset($supported_elements['sections'][ $o['section'] ])) ? $supported_elements['sections'][ $o['section'] ] : false;
  93      
  94          if( $support && $o['type'] == 'color_multi' && $support['disable_color'] )
  95              $o['disabled'] = true;    
  96              
  97          global $disabled_settings;
  98          
  99          if( $o['disabled_mode'] && isset($disabled_settings[$o['disabled_mode']]) )
 100              $o['disabled'] = true;    
 101              
 102          return $o;
 103      }
 104  
 105      /**
 106       * Option generation engine
 107       *
 108       * Flag needed for post id/profile id -- settings for special handling.
 109       */
 110  	function option_engine($oid, $o, $flag = null, $setting = null){
 111          
 112          $o = wp_parse_args( $o, $this->defaults );
 113          
 114          $o = $this->make_adjustments($o);
 115          
 116          if($o['disabled'])
 117              return;
 118              
 119          $setting = (isset($this->settings_field)) ? $this->settings_field : PAGELINES_SETTINGS;
 120          
 121          $oset = array( 'setting' => $setting );
 122      
 123          if($o['type'] == 'select_same'){
 124              
 125              $new = array_flip($o['selectvalues']);
 126              
 127              foreach($new as $key => $val)
 128                  $new[$key] = array('name' => $key);
 129              
 130              $o['selectvalues'] = $new;
 131              
 132          }
 133                  
 134          
 135          if($this->settings_field == 'meta'){
 136              
 137              $oset['post_id'] = $flag;
 138              
 139              $o['pid'] = $flag;
 140              
 141              $o['input_id'] = get_pagelines_option_id( $oid );
 142              
 143              if( $o['type'] == 'check'  && (bool) pldefault( $oid )){
 144                  
 145                  $o['val'] = plmeta($oid.'_reverse', $oset);
 146                  $o['input_name'] = $oid.'_reverse';
 147                  $o['inputlabel'] = '(Turn Off) ' . $o['inputlabel'];
 148                  
 149              }else{
 150                  $o['val'] = plmeta($oid, $oset);
 151                  $o['input_name'] = $oid;
 152              }
 153              
 154              // Check is difficult w/ defaults got to compensate
 155              $o['placeholder'] = pldefault( $oid, $oset);
 156              
 157              
 158              // Parse through multi-selects
 159              if(!empty($o['selectvalues'])){
 160                  foreach($o['selectvalues'] as $sid => $s){
 161  
 162                      $o['selectvalues'][$sid]['val'] = plmeta($sid, $oset);
 163                      $o['selectvalues'][$sid]['input_id'] = get_pagelines_option_id( $oid, $sid );
 164                      $o['selectvalues'][$sid]['input_name'] = $sid;
 165                      $o['selectvalues'][$sid]['placeholder'] = pldefault( $sid, $oset);
 166  
 167                  }
 168              }
 169              
 170          } elseif($this->settings_field == 'profile'){
 171          
 172              $user = $flag;
 173              
 174              $o['val'] = pl_um($oid, $user->ID);
 175              $o['input_name'] = $oid;
 176              $o['input_id'] = get_pagelines_option_id( $oid );
 177              
 178              if(!empty($o['selectvalues'])){
 179                  foreach($o['selectvalues'] as $sid => $s){
 180  
 181                      $o['selectvalues'][$sid]['val'] = pl_um( $oid, $user->ID);
 182                      $o['selectvalues'][$sid]['input_id'] = get_pagelines_option_id( $sid );
 183                      $o['selectvalues'][$sid]['input_name'] = $sid;
 184  
 185                  }
 186              }
 187          
 188          } elseif($this->settings_field == PAGELINES_SPECIAL){
 189          
 190              
 191              if( $o['special'] != 'default' && $o['type'] == 'check'  && (bool) pldefault( $oid )){
 192                  $oset['subkey'] = $oid.'_reverse';
 193                  $o['inputlabel'] = '(Turn Off) ' . $o['inputlabel'];
 194                  
 195              }else{
 196                  $oset['subkey'] = $oid;
 197              }
 198              
 199              $o['val'] = ploption( $o['special'], $oset );    
 200              $o['input_name'] = plname($o['special'], $oset);
 201              $o['input_id'] = plid( $o['special'], $oset);
 202              
 203              $o['placeholder'] = pldefault( $oid, $oset);
 204              
 205              // What a hassle. 
 206              // Allow global option for text content (no sub key)
 207              // If 'hidden' then option will be nuked on save, so in class.sections.php
 208              // there is an 'upop' that updates to global settings 
 209              if($o['type'] == 'text_content' || $o['type'] == 'text_content_reverse'){
 210                  $oset['subkey'] = null;
 211                  $o['val'] = ploption( $oid, $oset );
 212                  $o['input_name'] =  plname( $oid, $oset );
 213              }
 214              
 215              if(!empty($o['selectvalues'])){
 216                  foreach($o['selectvalues'] as $sid => $s){
 217                      $oset['subkey'] = $sid;
 218                      $oset['clone_id'] = $o['clone_id'];
 219                      
 220                      $o['selectvalues'][$sid]['val'] = ploption( $o['special'], $oset);
 221                      $o['selectvalues'][$sid]['input_id'] = plid( $o['special'], $oset);
 222                      $o['selectvalues'][$sid]['input_name'] = plname( $o['special'], $oset);
 223                      $o['selectvalues'][$sid]['placeholder'] = pldefault( $sid, $oset);
 224  
 225                  }
 226              }
 227              
 228          }
 229           else {
 230              $o['val'] = ploption( $oid, $oset );
 231              $o['input_name'] = get_pagelines_option_name( $oid, null, null, $setting );
 232              $o['input_id'] = get_pagelines_option_id( $oid, null, null, $setting );        
 233  
 234              if(!empty($o['selectvalues'])){
 235                  foreach($o['selectvalues'] as $sid => $s){
 236                      $o['selectvalues'][$sid]['val'] = ploption( $sid, $oset );
 237                      $o['selectvalues'][$sid]['input_id'] = get_pagelines_option_id( $sid );
 238                      $o['selectvalues'][$sid]['input_name'] = get_pagelines_option_name($sid, null, null, $setting);
 239                  }
 240              }
 241          }
 242          
 243          $o['placeholder'] = pl_html($o['placeholder']);
 244          
 245          if( $this->_do_the_option($oid, $o) ){
 246          
 247              printf('<div class="optionrow fix %s">', $this->_layout_class( $o ));
 248          
 249              $this->get_option_title( $oid, $o ); 
 250      
 251              printf('<div class="optin fix"><div class="oinputs"><div class="oinputs-pad">');
 252      
 253              $this->option_breaker($oid, $o);
 254      
 255              printf('</div></div>');
 256          
 257              echo $this->_get_explanation($oid, $o);
 258              
 259              echo '<div class="clear"></div></div></div>';
 260          
 261          }
 262      }
 263      
 264  
 265      /**
 266      *
 267      * @TODO document
 268      *
 269      */
 270  	function _get_explanation($oid, $o){
 271          
 272          $fullwidth = ($o['layout'] == 'full') ? true : false;
 273          
 274          $show = ($o['exp'] && $o['type'] != 'text_content' && $o['layout'] != 'interface') ? true : false;
 275          
 276          if($show){
 277                      
 278              $toggle = ($fullwidth) ? '<div class="more_exp" onClick="jQuery(this).next().next().fadeToggle();">More Info &rarr;</div><div class="clear"></div>' : '';        
 279                      
 280              $text = sprintf('%s<p>%s</p>', (!$fullwidth) ? '<h5>More Info</h5>' :'', $o['exp']);
 281                  
 282              $pro_note = ($o['pro_note'] && !VPRO) ? sprintf('<p class="pro_note"><strong>Pro Version Note:</strong><br/>%s</p>',  $o['pro_note']) : '';
 283               
 284              printf('<div class="oexp">%s<div class="oexp-effect"><div class="oexp-pad">%s %s</div></div></div>', $toggle, $text, $pro_note);
 285              
 286          }
 287      
 288      }
 289      
 290  
 291      /**
 292      *
 293      * @TODO document
 294      *
 295      */
 296  	function _layout_class( $o ){
 297          $layout_class = '';
 298          $layout_class .= ( isset( $o['layout'] ) && $o['layout']=='full' ) ? ' wideinputs' : '';
 299          $layout_class .= ( isset( $o['layout'] ) && $o['layout']=='interface' ) ? ' interface' : '';
 300          return $layout_class;
 301      }
 302  
 303  
 304      /**
 305       * Get Option Title
 306       *
 307       * @param   $oid - option ID (unused)
 308       * @param   $o - option class
 309       */
 310  	function get_option_title( $oid, $o ){
 311          if( $o['title'] ) : ?>
 312          <div class="optiontitle fix">
 313              <div class="optiontitle-pad fix">
 314                  <?php if( isset( $o['vidlink'] ) ) :?>
 315                      <a class="vidlink thickbox" title="<?php if( $o['vidtitle'] ) echo $o['vidtitle']; ?>" href="<?php echo $o['vidlink']; ?>?hd=1&KeepThis=true&height=450&width=700&TB_iframe=true">
 316                          <img src="<?php echo PL_ADMIN_IMAGES . '/link-video.jpg'; ?>" class="docslink-video" alt="Video Tutorial" />
 317                      </a>
 318                  <?php endif;
 319                  
 320                  if( isset( $o['docslink'] ) )
 321                      printf( '<a class="vidlink" title="%1$s" href="%2$s" target="_blank"><img src="%3$s" class="docslink-video" alt="%1$s" /></a>', ( $o['docstitle'] ? $o['docstitle'] : '' ), $o['docslink'], PL_ADMIN_IMAGES . '/link-docs.jpg' );
 322                  
 323                  $protag = ( $o['version'] == 'pro' ) ? '<span class="protag">Pro</span>' : '';
 324                  
 325                  printf( '<strong>%s %s</strong><br/><small>%s</small><br/>', $o['title'], $protag, $o['shortexp'] );
 326                  
 327                  ?>
 328              </div>
 329          </div>
 330          <?php endif;
 331      }
 332      
 333  
 334      /**
 335      *
 336      * @TODO document
 337      *
 338      */
 339  	function _do_the_option($oid, $o){
 340          
 341          $draw = (!isset( $o['version'] ) || ( isset($o['version']) && $o['version'] == 'free' && !VPRO) || (isset($o['version']) && $o['version'] == 'pro' && VPRO )) ? true : false;
 342          return $draw;
 343      }
 344  
 345      /**
 346       * 
 347       * Option Breaker 
 348       * Switches through an option array, generating the option handling and markup
 349       *
 350       */
 351  	function option_breaker($oid, $o, $setting = '', $val = ''){
 352  
 353          switch ( $o['type'] ){
 354  
 355              case 'multi_option' :
 356                  $this->_get_multi_option($oid, $o);
 357                  break;
 358              case 'select' :
 359                  $this->_get_select_option($oid, $o);
 360                  break;
 361              case 'select_same' :
 362                  $this->_get_select_option($oid, $o);
 363                  break;
 364              case 'radio' :
 365                  $this->_get_radio_option($oid, $o);
 366                  break;
 367              case 'colorpicker' :
 368                  $this->_get_color_picker($oid, $o);
 369                  break;
 370              case 'color_multi' :
 371                  $this->_get_color_multi($oid, $o);
 372                  break;
 373              case 'count_select' :
 374                  $this->_get_count_select_option($oid, $o);
 375                  break;
 376              case 'select_taxonomy' :
 377                  $this->_get_taxonomy_select($oid, $o);
 378                  break;
 379              case 'textarea' :
 380                  $this->_get_textarea($oid, $o, $val);
 381                  break;
 382              case 'code' :
 383                  $this->_get_textarea($oid, $o, $val);
 384                  break;
 385              case 'textarea_big' :
 386                  $this->_get_textarea($oid, $o, $val);
 387                  break;
 388              case 'text' :
 389                  $this->_get_text($oid, $o, $val);
 390                  break;
 391              case 'text_small' :
 392                  $this->_get_text_small($oid, $o, $val);
 393                  break;
 394              case 'text_multi' :
 395                  $this->_get_text_multi($oid, $o, $val);
 396                  break;
 397              case 'check' :
 398                  $this->_get_check_option($oid, $o);
 399                  break;
 400              case 'check_multi' :
 401                  $this->_get_check_multi($oid, $o, $val);
 402                  break;
 403              case 'fonts' :
 404                  $this->_get_fonts_option($oid, $o);
 405                  break;
 406              case 'typography' :
 407                  $this->_get_type_control($oid, $o);
 408                  break;
 409              case 'select_menu' :
 410                  $this->_get_menu_select($oid, $o);
 411                  break;
 412              case 'select_role' :
 413                  $this->_get_select_role($oid, $o);
 414                  break;
 415              case 'image_upload' :
 416                  $this->_get_image_upload_option($oid, $o);
 417                  break;
 418              case 'image_upload_multi' :
 419                  $this->_get_image_upload_multi($oid, $o);
 420                  break;
 421              case 'background_image' :
 422                  $this->_get_background_image_control($oid, $o); 
 423                  break;
 424              case 'layout' :
 425                  $this->_get_layout_builder($oid, $o);
 426                  break;
 427              case 'layout_select' :
 428                  $this->_get_layout_select($oid, $o); 
 429                  break;
 430              case 'templates' :
 431                  $this->do_template_builder($oid, $o); 
 432                  break;
 433              case 'section_control' :
 434                  $this->do_section_control($oid, $o); 
 435                  break;
 436              case 'text_content' :
 437                  $this->_get_text_content($oid, $o, $val);
 438                  break;
 439              case 'text_content_reverse' :
 440                  $this->_get_text_content_reverse($oid, $o, $val);
 441                  break;
 442              case 'reset' :
 443                  $this->_get_reset_option($oid, $o, $val);
 444                  break;
 445              case 'email_capture' :
 446                  $this->_get_email_capture($oid, $o, $val);
 447                  break;
 448              case 'account_signup' :
 449                  $this->_account_signup($oid, $o, $val);
 450                  break;
 451              case 'horizontal_tabs' :
 452                  $this->get_horizontal_nav($oid, $o);
 453                  break;
 454              case 'graphic_selector' :
 455                  $this->graphic_selector($oid, $o);
 456                  break;
 457              case 'import_export' :
 458                  $this->import_export($oid, $o);
 459                  break;
 460              case 'updates_setup' :
 461                  $this->updates_setup($oid, $o);
 462                  break;
 463              case 'plus_welcome' :
 464                  $this->plus_welcome($oid, $o);
 465                  break;
 466              case 'plus_support' :
 467                  $this->plus_support($oid, $o);
 468                  break;
 469              default :
 470                  do_action( 'pagelines_options_' . $o['type'] , $oid, $o);
 471                  break;
 472  
 473          } 
 474  
 475      }
 476      
 477      
 478  
 479      /**
 480       * 
 481       * Multiple Options Rendering.. 
 482       * 
 483       * @since 1.0.0
 484       * @author Andrew Powers
 485       * 
 486       */
 487  	function _get_multi_option($oid, $o){
 488          
 489          global $post_ID;
 490          
 491          $sub_option_engine = new OptEngine( $this->settings_field );
 492          
 493          $flag = ($this->settings_field == 'meta') ? $post_ID : null;
 494      
 495          echo '<div class="multi_option">';
 496          foreach($o['selectvalues'] as $mid => $m){
 497              
 498              // Needed for saving on special pages
 499              if(isset($o['special']))
 500                  $m['special'] = $o['special'];
 501                  
 502              // Flag needed for post id/profile id -- settings for special handling.
 503              $sub_option_engine->option_engine($mid, $m, $flag, $this->settings_field);
 504              
 505          }
 506          echo '</div>';
 507      }
 508      
 509      
 510      /**
 511       * 
 512       * Gets a menu selector for WP menus. Can be used in navigation, etc...
 513       * 
 514       * @since 1.0.0
 515       * @author Andrew Powers
 516       * 
 517       */
 518  	function _get_menu_select($oid, $o){
 519          
 520          echo $this->input_label($o['input_id'], $o['inputlabel']);
 521          
 522          $menus = wp_get_nav_menus( array('orderby' => 'name') );
 523          $opts = '';
 524          foreach ( $menus as $menu ){
 525              $opts .= $this->input_option($menu->term_id, selected($menu->term_id, $o['val'], false), esc_html( $menu->name ) );
 526          }
 527  
 528          
 529          if($opts != '')
 530              echo $this->input_select($o['input_id'], $o['input_name'], $opts);
 531          else
 532              printf( __( "<div class='option_default_statement'>WP menus need to be created to use this option!<br/> Edit <a href='%s'>WordPress Menus</a></div>", 'pagelines' ), admin_url( 'nav-menus.php'));
 533              
 534      }
 535      
 536  
 537      /**
 538      *
 539      * @TODO document
 540      *
 541      */
 542  	function _get_select_role($oid, $o){
 543          
 544          $opts = $this->input_option('', selected('', $o['val'], false), esc_html( 'Any Role' ) );
 545          ob_start();
 546          wp_dropdown_roles( $o['val'] );
 547          $opts .= ob_get_clean();
 548          
 549          
 550          echo $this->input_label($o['input_id'], $o['inputlabel']);
 551          echo $this->input_select($o['input_id'], $o['input_name'], $opts);
 552      }
 553  
 554      /**
 555       * 
 556       * Gets Fonts
 557       * 
 558       * @since 1.0.0
 559       * @author Andrew Powers
 560       * 
 561       */
 562  	function _get_fonts_option($oid, $o){
 563          
 564          $control = new PageLinesTypeUI();
 565          
 566          $control->fonts_option( $oid, $o );
 567      }
 568      
 569      /**
 570       * 
 571       * Gets Typography Control Panel
 572       * 
 573       * @since 1.0.0
 574       * @author Andrew Powers
 575       * 
 576       */
 577  	function _get_type_control($oid, $o){
 578          
 579          $control = new PageLinesTypeUI();
 580          
 581          $control->build_typography_control( $oid, $o );
 582      }
 583  
 584  
 585      /**
 586       * 
 587       * Standard Checkbox Option
 588       * 
 589       * @since 1.0.0
 590       * @author Andrew Powers
 591       * 
 592       */
 593  	function _get_check_option($oid, $o){ 
 594          
 595          $checked = checked((bool) $o['val'], true, false);
 596                  
 597          $input = $this->input_checkbox($o['input_id'], $o['input_name'], $checked);
 598              
 599          echo $this->input_label_inline($o['input_id'], $input, $o['inputlabel']);
 600      }    
 601      
 602      
 603  
 604      /**
 605       * 
 606       * Multiple Checkbox Fields
 607       * Shows several checkbox fields based on 'selectvalues' attr
 608       * 
 609       * @since 1.0.0
 610       * @author Andrew Powers
 611       * 
 612       */
 613  	function _get_check_multi($oid, $o, $val){ 
 614          
 615          foreach($o['selectvalues'] as $mid => $m){
 616          
 617              if(!VPRO && isset($m['version']) && $m['version'] == 'pro')
 618                  continue;
 619          
 620              $value = checked((bool) $m['val'], true, false);
 621              
 622          
 623              // Output
 624              $input = $this->input_checkbox($m['input_id'], $m['input_name'], $value);
 625              
 626              echo $this->input_label_inline($m['input_id'], $input, $m['inputlabel']);
 627  
 628          }
 629          
 630      }
 631  
 632  
 633      /**
 634       * 
 635       * Multiple Text Fields
 636       * Shows several text fields based on 'selectvalues' attr
 637       * 
 638       * @since 1.0.0
 639       * @author Andrew Powers
 640       * 
 641       */
 642  	function _get_text_multi($oid, $o){ 
 643          
 644          foreach($o['selectvalues'] as $mid => $m){
 645              
 646              $attr = ( strpos( $mid, 'password' ) ) ? 'password' : 'text';
 647              
 648              $class = $o['inputsize'].'-text';
 649              
 650              $placeholder = (isset($m['placeholder'])) ? pl_html($m['placeholder']) : '';
 651              
 652              
 653              // Output
 654              echo $this->input_label($m['input_id'], $m['inputlabel']);
 655              echo $this->input_text($m['input_id'], $m['input_name'], pl_html($m['val']), $class, $attr, '', $placeholder);
 656  
 657          }
 658      }
 659  
 660  
 661      /**
 662       * 
 663       * Small Text Option Field
 664       * Displays Small Text Option & Escapes HTML
 665       * 
 666       * @since 1.0.0
 667       * @author Andrew Powers
 668       * 
 669       */
 670  	function _get_text_small($oid, $o, $val){ 
 671          
 672          echo $this->input_label($o['input_id'], $o['inputlabel']);
 673          echo $this->input_text($o['input_id'], $o['input_name'], pl_html($o['val']), 'small-text', 'text', '', $o['placeholder']);
 674      }
 675  
 676      /**
 677       * 
 678       * Regular Text Field
 679       * 
 680       * @since 1.0.0
 681       * @author Andrew Powers
 682       * 
 683       */
 684  	function _get_text($oid, $o, $val){ 
 685  
 686          echo $this->input_label($o['input_id'], $o['inputlabel']);
 687          echo $this->input_text($o['input_id'], $o['input_name'], pl_html($o['val']), 'regular-text', 'text', '', $o['placeholder'] );
 688          
 689      }
 690  
 691  
 692  
 693      /**
 694       * 
 695       * Regular Textarea
 696       * 
 697       * @since 1.0.0
 698       * @author Andrew Powers
 699       * 
 700       */
 701  	function _get_textarea($oid, $o, $val){ 
 702          
 703          $class = ($o['type']=='textarea_big') ? 'longtext' : '';
 704          $class .= ($o['type']=='code') ? 'code_textarea' : '';
 705          
 706          $extra = (isset($o['height']) && $o['height'] != '0px') ? sprintf( 'style="height: %s"', $o['height'] ) : '';
 707          
 708          // Output
 709          echo $this->input_label($o['input_id'], $o['inputlabel']);
 710          echo $this->input_textarea($o['input_id'], $o['input_name'], pl_html($o['val']), $class, $extra);
 711      }
 712  
 713      
 714      
 715  
 716      /**
 717       * 
 718       * Text or Written Content. E.g. Welcome Screen
 719       * 
 720       * @since 1.0.0
 721       * @author Andrew Powers
 722       * 
 723       */
 724  	function _get_text_content($oid, $o, $val){     
 725          
 726          $val = (bool) $o['val'];
 727          
 728          $checked = checked($val, true, false);
 729                  
 730          $input = $this->input_checkbox($o['input_id'], $o['input_name'], $checked);
 731          
 732          $label = ($o['inputlabel'] != '') ? $o['inputlabel'] : __('Hide This Overview', 'pagelines');
 733          
 734          $hide_checkbox = ($o['flag'] != 'hide_option') ? $this->input_label_inline($o['input_id'], $input, $o['inputlabel']) : '';
 735      
 736          printf('<div class="pl_help text_content fix">%s %s</div>', $o['exp'], $hide_checkbox);
 737  
 738          
 739      }
 740      
 741      /**
 742       * 
 743       * Option to show text content after being hidden
 744       * 
 745       * @since 1.0.0
 746       * @author Andrew Powers
 747       * 
 748       */
 749  	function _get_text_content_reverse($oid, $o, $val){     
 750          
 751          // @todo fix the handling of this on special pages
 752          // unchecking the checkbox doesn't work because all panels have it
 753          if($this->settings_field != PAGELINES_SPECIAL){
 754              
 755              
 756              $val = (bool) ploption( $oid );
 757          
 758              $checked = checked($val, true, false);
 759                  
 760              $input = $this->input_checkbox($o['input_id'], $o['input_name'], $checked);
 761          
 762              $hide_checkbox = $this->input_label_inline($o['input_id'], $input, $o['inputlabel']);
 763      
 764              printf('<div class="just_checkbox_option fix">%s %s</div>', $o['exp'], $hide_checkbox);
 765          
 766          }
 767  
 768          
 769      }
 770      
 771  
 772      /**
 773       * 
 774       * Prints a button that can be used to reset an option
 775       * Works with 'pagelines_process_reset_options()' & a callback in the option array
 776       * 
 777       * @since 1.0.0
 778       * @author Andrew Powers
 779       * 
 780       */
 781  	function _get_reset_option($oid, $o, $val){ 
 782  
 783          $confirmID = 'Confirm'.$oid;
 784  
 785          pl_action_confirm($confirmID, __( 'Are you sure?', 'pagelines' ) ); // print JS confirmation script
 786          
 787          
 788          $extra = sprintf('onClick="return %s();"', $confirmID);
 789          
 790          $input = $this->superlink($o['inputlabel'], 'grey', 'reset-options', 'submit', $extra, $o['input_name']);
 791          
 792          printf('<div class="insidebox context fix">%s %s</div>', $input, $o['exp']);
 793  
 794  
 795      }
 796  
 797  
 798      /**
 799      *
 800      * @TODO document
 801      *
 802      */
 803  	function _get_image_upload_multi( $oid, $o ){
 804          
 805          foreach($o['selectvalues'] as $mid => $m){
 806              
 807              $m = wp_parse_args( $m, $this->defaults );
 808              
 809              $this->_get_image_upload_option( $mid, $m );
 810              
 811          }
 812          
 813      }
 814  
 815      /**
 816       * 
 817       * Creates An AJAX Image Uploader
 818       * 
 819       * @since 1.0.0
 820       * @author Andrew Powers
 821       * 
 822       */
 823  	function _get_image_upload_option( $oid, $o ){ 
 824  
 825          $up_url = $this->input_text($o['input_id'], $o['input_name'], esc_url($o['val']), 'regular-text uploaded_url', 'text', '', $o['placeholder']);
 826          
 827          $button_id = (isset($o['special'])) ? $oid.'OID'.$o['special'] : $oid;
 828          
 829          $up_button = $this->input_button( $button_id, __( 'Upload Image', 'pagelines' ), 'image_upload_button admin-blue', 'title="'.$this->settings_field.'"' );
 830          
 831          $reset_button = sprintf('<span title="%1$s" id="%2$s" class="image_reset_button button reset_%1$s">Remove</span>', $button_id, $this->settings_field); 
 832          
 833          $ajax_url = $this->input_hidden('', 'wp_ajax_action_url', admin_url("admin-ajax.php"), 'ajax_action_url');
 834          
 835          $preview_size = $this->input_hidden('', 'img_size_'.$oid, $o['imagepreview'], 'image_preview_size'); 
 836          
 837          ob_start();
 838              $image_library_url = get_upload_iframe_src( 'image', null, 'library' );
 839              $image_library_url = remove_query_arg( 'TB_iframe', $image_library_url );
 840              $image_library_url = add_query_arg( array('oid' => $o['input_id'], 'context' => 'pl-custom-attach', 'TB_iframe' => 1), $image_library_url );
 841          ?>
 842  
 843              <a id="choose-from-library-link" class="button thickbox" href="<?php echo esc_url( $image_library_url ); ?>">
 844                  <?php _e( 'Select From Library', 'pagelines' ); ?>
 845              </a>
 846      
 847          <?php 
 848          $media_lib = ob_get_clean();
 849          
 850          // Output
 851          $label = $this->input_label($oid, $o['inputlabel']);
 852          printf('<p>%s %s<br/> %s %s %s %s %s</p>',$label, $up_url, $up_button, $media_lib, $reset_button, $ajax_url, $preview_size);        
 853          
 854          $special_image_class = '';
 855          
 856          $select_class = sprintf('pre_%s', $o['input_id']);
 857          
 858          if($o['val'])
 859              $active_image_url = $o['val'];
 860          elseif($o['placeholder']){
 861              $active_image_url = $o['placeholder'];
 862              $special_image_class = 'default-image-preview';
 863          }else
 864              $active_image_url = false;
 865                  
 866          printf(
 867              '<img class="pagelines_image_preview %s %s" id="image_%s" src="%s" style="max-width:%spx; %s"/>', 
 868              $special_image_class, 
 869              $select_class,
 870              $button_id, 
 871              $active_image_url, 
 872              $o['imagepreview'], 
 873              (!$active_image_url) ? 'display: none;' : ''
 874          );
 875      
 876      }
 877      
 878  
 879  
 880  
 881      /**
 882       * 
 883       * Gets a select field based on a count parameter
 884       * Starts at 0 or if a start value is given, starts there
 885       * 
 886       * @param count_start = starting value
 887       * @param count_number = ending value
 888       * 
 889       * @since 1.0.0
 890       * @author Andrew Powers
 891       * 
 892       */
 893  	function _get_count_select_option( $oid, $o ){ 
 894          
 895          
 896          $count_start = (isset($o['count_start'])) ? $o['count_start'] : 0;
 897          
 898          $opts = '';
 899          for($i = $count_start; $i <= $o['count_number']; $i++)
 900              $opts .= $this->input_option($i, selected($i, $o['val'], false), $i);
 901          
 902          
 903          // Output
 904          echo $this->input_label($o['input_id'], $o['inputlabel']);
 905          echo $this->input_select($o['input_id'], $o['input_name'], $opts);
 906          
 907      }
 908  
 909      /**
 910       * 
 911       * Get Radio Options
 912       * 
 913       * @param selectvalues array a set of options to select from
 914       * 
 915       * @since 1.0.0
 916       * @author Andrew Powers
 917       * 
 918       */
 919  	function _get_radio_option( $oid, $o ){
 920      
 921          foreach($o['selectvalues'] as $sid => $s){
 922              
 923              $checked = checked($sid, $o['val'], false);
 924              
 925              $input = $this->input_radio($s['input_id'], $o['input_name'], $sid, $checked);
 926              echo $this->input_label_inline($s['input_id'], $input, $s['name']);
 927              
 928          }
 929      }
 930  
 931  
 932      /**
 933       * 
 934       * Get Select Option 
 935       * 'select_same' means both value and name are the same
 936       * 
 937       * @param selectvalues array a set of options to select from
 938       * 
 939       * @since 1.0.0
 940       * @author Andrew Powers
 941       * 
 942       */
 943  	function _get_select_option( $oid, $o ){ 
 944          
 945          echo $this->input_label($o['input_id'], $o['inputlabel']);
 946          
 947          $opts = '';
 948          
 949          foreach($o['selectvalues'] as $sval => $s){
 950              
 951              $opts .= $this->input_option($sval, selected($sval, $o['val'], false), $s['name']);
 952      
 953          }
 954          
 955          echo $this->input_select($o['input_id'], $o['input_name'], $opts);
 956  
 957      }
 958      
 959      /**
 960       * 
 961       * Graphical Selector
 962       * 
 963       * @param selectvalues array a set of options to select from
 964       * 
 965       * @since 2.0.b3
 966       * @author Andrew Powers
 967       * 
 968       */
 969  	function graphic_selector( $oid, $o ){ 
 970          
 971          
 972          ?>
 973          <div id="graphic_selector_option" class="graphic_selector_wrap">
 974              <div class="graphic_selector fix">
 975                  <div class="graphic_selector_pad fix">
 976                      <label for="<?php echo $o['input_id'];?>" class="graphic_selector_overview"><?php echo $o['inputlabel'];?></label>
 977                      <?php                     
 978  
 979                      foreach( $o['selectvalues'] as $sid => $s ): 
 980                              
 981                              $css = sprintf('background: url(%s) no-repeat %s;', $o['sprite'], $s['offset']);
 982                              
 983                              $size = sprintf('width: %s; height: %s;', $o['width'], $o['height']);
 984                              
 985                              $line_height = sprintf('line-height: %s;', $o['height']);
 986                              
 987                              $selected = ($sid == $o['val']) ? 'selectedgraphic' : '';
 988                              
 989                              $checked = checked($sid, $o['val'], false);
 990                                                          
 991                              if(!VPRO && isset( $s['version']) && $s['version'] == 'pro'){
 992                                  
 993                                  $option_status = 'disabled_option';
 994                                  $graphic_content = 'pro';
 995                                  
 996                              } else {
 997                                  
 998                                  $option_status = 'enabled_option';
 999                                  $graphic_content = '&nbsp;';
1000                              }
1001                          
1002                              $graphic_classes = sprintf('%s %s', $selected, $option_status);
1003                      ?>
1004                      <span class="graphic_select_item">
1005                          <span class="graphic_select_border <?php echo $graphic_classes;?> fix">
1006                              <span class="graphic_select_image <?php echo $sid;?>" style="<?php echo $css . $size;?>">
1007                                  <?php printf('<span class="graphic_fill" style="%s %s">%s</span>', $size, $line_height, $graphic_content); ?>
1008                              </span>
1009                          </span>
1010                          <?php 
1011                          if($o['showname'] && isset($s['name']))
1012                              printf('<span class="graphic_title clear">%s</span>', $s['name']);
1013                              
1014                          printf('<input type="radio" id="%s" class="graphic_select_input" name="%s" value="%s" %s />', $o['input_id'], $o['input_name'], $sid, $checked );
1015                          
1016                          ?>
1017                      </span>
1018                      
1019                      <?php 
1020                          endforeach;
1021                      ?>
1022                      
1023                      <?php if(isset($o['exp']) && $o['exp'] != ''):?>
1024                      <div class="gselect_toggle" onclick="jQuery(this).parent().parent().next().slideToggle();">
1025                          <div class="gselect_toggle_pad">More Info &darr;</div>
1026                      </div>
1027                      <?php endif;?>
1028                  </div>
1029                  
1030              </div>
1031              <?php if(isset($o['exp']) && $o['exp'] != ''):?>
1032              <div class="exp_gselect" style="display: none">
1033                  <div class="exp_pad">
1034                      <?php echo $o['exp'];?>
1035                  </div>
1036              </div>
1037              <?php endif;?>
1038          </div><div class="clear"></div><?php }
1039      
1040  
1041      /**
1042       * 
1043       * Horizontal Navigation Option w/ Callbacks
1044       * 
1045       * @since 1.0.0
1046       * @author Andrew Powers
1047       * 
1048       */
1049  	function get_horizontal_nav( $menu, $oids){ 
1050          $handle = 'htabs'.$menu; ?>
1051      <script type="text/javascript"> 
1052          jQuery(document).ready(function() {    
1053              var <?php echo $handle;?> = jQuery("#<?php echo $handle;?>").tabs({ cookie: { name: "<?php echo $menu;?>-tabs" } }); 
1054          });
1055      </script>
1056      <div id="<?php echo $handle;?>" class="htabs-menu" >    
1057          <ul class="tabbed-list horizontal-tabs fix">
1058              <?php foreach($oids['htabs'] as $key => $t){
1059                      $class = (isset($t['class'])) ? $t['class'] : 'left';
1060                      printf('<li class="ht-%s"><a href="#%s" >%s</a></li>', $class, $key,  ui_key($key) );
1061                  }
1062              ?>
1063          </ul>
1064          <?php 
1065          
1066      
1067          
1068          foreach($oids['htabs'] as $key => $t){
1069              
1070              $callback = ( isset($t['type']) && $t['type'] == 'subtabs' ) ? self::get_horizontal_subtabs( $key, $t ) : $t['callback'];
1071                  
1072              printf('<div id="%s" class="htab-content"><div class="htab-content-pad"><h3 class="htab-title">%s</h3>%s</div></div>', $key, $t['title'], $callback);
1073              
1074          }
1075          
1076          
1077          
1078              ?>
1079      </div>
1080      <?php }
1081      
1082  
1083      /**
1084      *
1085      * @TODO document
1086      *
1087      */
1088  	function get_horizontal_subtabs( $key, $t ){
1089          
1090          $handle = 'subtabs_'.$key;
1091          
1092          $thescript = self::get_tabs_script($handle, $key);
1093          
1094          $list_items = '';
1095          if(isset($t['type'])) unset($t['type']);
1096          if(isset($t['title'])) unset($t['title']);
1097          if(isset($t['class'])) unset($t['class']);
1098          
1099          $wlist = (1 / count($t)) * 100;
1100          foreach( $t as $skey => $st){
1101              
1102              $list_items .= sprintf(
1103                  '<li class="st-%s" style="width: %s%%"><a href="#%s" ><span class="st-pad">%s</span></a></li>', 
1104                  'subtab', 
1105                  $wlist, 
1106                  $skey,  
1107                  $st['title'] 
1108              );
1109              
1110          }
1111          
1112          $thelist = sprintf('<ul class="tabbed-list horizontal-tabs subtabs fix">%s</ul>', $list_items);
1113          
1114          $stabs = '';
1115          foreach($t as $skey => $st){
1116              $stabs .= sprintf('<div id="%s" class="htab-sub"><div class="htab-content-pad"><h3 class="htab-title">%s</h3>%s</div></div>', $skey, $st['title'], $st['callback']);
1117          }
1118          
1119          $thewrapper = sprintf('<div id="%s" class="subtabs-menu" >%s %s</div>%s', $handle, $thelist, $stabs, $thescript);
1120          
1121          return $thewrapper;
1122      }
1123      
1124  
1125      /**
1126      *
1127      * @TODO document
1128      *
1129      */
1130  	function get_tabs_script($handle, $key){
1131      
1132          $thescript = sprintf('var %1$s = jQuery("#%1$s").tabs( { cookie: { name: "sub-tabs-%2$s" } } );', $handle, $key);
1133          
1134          $wrapper = sprintf('<script type="text/javascript">jQuery(document).ready(function() { %s });</script>', $thescript);
1135          
1136          return $wrapper;
1137      }
1138  
1139      /**
1140       * 
1141       * Get Taxonomy Selector
1142       * Based on all applied to a post type
1143       * 
1144       * 
1145       * @since 1.0.0
1146       * @author Andrew Powers
1147       * 
1148       */
1149  	function _get_taxonomy_select( $oid, $o ){ 
1150          
1151          $terms_array = get_terms( $o['taxonomy_id']); 
1152  
1153          if(is_array($terms_array) && !empty($terms_array)){
1154          
1155              echo $this->input_label($o['input_id'], $o['inputlabel']);
1156              
1157              $opts = '';
1158              
1159              if($o['taxonomy_id'] == 'category')
1160                  $opts .= $this->input_option('', selected('', $o['val'], false), '*Show All*');
1161              
1162              foreach($terms_array as $term)
1163                  $opts .= $this->input_option($term->slug, selected($term->slug, $o['val'], false), $term->name);
1164              
1165              echo $this->input_select($o['input_id'], $o['input_name'], $opts);
1166              
1167          } else
1168              printf('<div class="meta-message">%s</div>', __('No sets have been created and added to this post-type yet!', 'pagelines')); 
1169  
1170      }
1171  
1172  
1173      /**
1174      *
1175      * @TODO document
1176      *
1177      */
1178  	function _get_color_multi($oid, $o){     
1179  
1180          $num_options = count($o['selectvalues']);
1181          
1182          if($num_options == 4 || ($num_options % 4 == 0) )
1183              $per_row = 4;
1184          else 
1185              $per_row = 3;
1186          
1187          $count = 1;
1188          foreach($o['selectvalues'] as $mid => $m){
1189  
1190              $end_row = ($count % $per_row == 0) ? true : false;
1191  
1192              $last = (end($o['selectvalues']) == $m || $end_row) ? true : false;
1193                  
1194              if( !isset($m['version']) || (isset($m['version']) && $m['version'] != 'pro') || (isset($m['version']) && $m['version'] == 'pro' && VPRO ))
1195                  $this->_get_color_picker($mid, $m, $per_row, $last);
1196  
1197              $count++;
1198          }
1199  
1200      }
1201  
1202  
1203  
1204      /**
1205      *
1206      * @TODO document
1207      *
1208      */
1209  	function _get_color_picker($oid, $o, $per_row = 3, $last = false){ // Color Picker Template 
1210          
1211          $the_id = $o['input_id'];
1212          
1213           $gen = do_color_math($the_id, $o, $o['val'], 'palette');
1214          
1215          $picker = sprintf('<div id="%s" class="colorSelector"><div></div></div> %s', $the_id.'_picker', $this->input_text($the_id, $o['input_name'], $o['val'], 'colorpickerclass'));
1216          
1217          $pick_contain = sprintf('<div class="pick_contain">%s</div>', $picker);
1218      
1219          printf('<div class="the_picker picker_row_%s %s"><div class="picker_panel"><div class="the_picker_pad">%s %s</div></div></div>', $per_row, ($last) ? 'p_end' : '', $this->input_label($the_id, $o['inputlabel']), $pick_contain);
1220          
1221          printf('<script type="text/javascript">setColorPicker("%s", "%s");</script>', $the_id, $o['val']);
1222        }
1223      
1224      
1225  
1226      /**
1227      *
1228      * @TODO document
1229      *
1230      */
1231  	function _get_background_image_control($oid, $o){
1232  
1233          $bg = $this->_background_image_array();
1234          
1235          $oset = array( 'post_id' => $o['pid'], 'setting' => $this->settings_field);
1236  
1237          // set value, id, name
1238          foreach($bg as $k => $i){
1239              
1240              $bgid = $oid.$k;
1241  
1242              if($this->settings_field == 'meta'){
1243                  $bg[$k]['val'] = plmeta($bgid, $oset);
1244                  $bg[$k]['input_name'] = $bgid;
1245                  $bg[$k]['input_id'] = get_pagelines_option_id( $bgid );
1246                      
1247              } elseif($this->settings_field == PAGELINES_SPECIAL){
1248  
1249                  $oset['subkey'] = $bgid;
1250  
1251                  $bg[$k]['val'] = ploption( $o['special'], $oset );            
1252                  $bg[$k]['input_name'] = plname($o['special'], $oset);
1253                  $bg[$k]['input_id'] = plid( $o['special'], $oset);
1254  
1255              } else {
1256              
1257                  $bg[$k]['val'] = ploption( $bgid, $oset);
1258                  $bg[$k]['input_id'] = plid( $bgid, $oset);
1259                  $bg[$k]['input_name'] = plname( $bgid, $oset);
1260              }
1261              
1262              $bg[$k] = wp_parse_args($bg[$k], $o);
1263              
1264          }
1265              
1266          
1267  
1268          $this->_get_image_upload_option($oid.'_url', $bg['_url']);
1269          $this->_get_select_option($oid.'_repeat', $bg['_repeat']);
1270          $this->_get_count_select_option( $oid.'_pos_vert', $bg['_pos_vert']);
1271          $this->_get_count_select_option( $oid.'_pos_hor', $bg['_pos_hor']);
1272          $this->_get_select_option($oid.'_attach', $bg['_attach']);
1273  
1274      }
1275  
1276  
1277          /**
1278          *
1279          * @TODO document
1280          *
1281          */
1282  		static function _background_image_array(){
1283              return array(
1284                  '_url' => array(        
1285                          'inputlabel'     => __( 'Background Image', 'pagelines' ),
1286                          'imagepreview'    => 150
1287                  ),
1288                  '_repeat' => array(            
1289                          'inputlabel'    => __( 'Set Background Image Repeat', 'pagelines' ),
1290                          'type'            => 'select',
1291                          'selectvalues'    => array(
1292                              'no-repeat'    => array('name' => __( 'Do Not Repeat', 'pagelines' )), 
1293                              'repeat'    => array('name' => __( 'Tile', 'pagelines' )), 
1294                              'repeat-x'    => array('name' => __( 'Repeat Horizontally', 'pagelines' )), 
1295                              'repeat-y'    => array('name' => __( 'Repeat Vertically', 'pagelines' ))
1296                          )
1297                  ),
1298                  '_pos_vert' => array(                
1299                          'inputlabel'    => __( 'Vertical Position In Percent', 'pagelines' ),
1300                          'type'            => __( 'count_select', 'pagelines' ),
1301                          'count_start'    => 0, 
1302                          'count_number'    => 100,
1303                          'suffix'        => '%'
1304                  ),
1305                  '_pos_hor' => array(                
1306                          'inputlabel'    => __( 'Horizontal Position In Percent', 'pagelines' ),
1307                          'type'            => __( 'count_select', 'pagelines' ),
1308                          'count_start'    => 0, 
1309                          'count_number'    => 100,
1310                          'suffix'        => '%'
1311                  ),
1312                  '_attach' => array(                
1313                          'inputlabel'    => __( 'Set Background Attachment', 'pagelines' ),
1314                          'type'            => 'select',
1315                          'selectvalues'    => array(
1316                              'scroll'    => array('name' => __( 'Scroll', 'pagelines' )), 
1317                              'fixed'        => array('name' => __( 'Fixed', 'pagelines' )),
1318                          )
1319                  ),
1320  
1321              );
1322          }
1323  
1324      /**
1325       *  Creates an email capture field that sends emails to PageLines.com
1326       */
1327  	function _get_email_capture($oid, $o){ ?>
1328          <div class="email_capture_container">
1329              <?php 
1330              echo $this->input_label($o['input_id'], $o['inputlabel']); 
1331              echo $this->input_text('email_capture_input', '', get_option('pagelines_email_sent'), 'email_capture');
1332              
1333              ?>
1334              <input type="button" id="" class="button-secondary" onClick="sendEmailToMothership(jQuery('#email_capture_input').val(), '#email_capture_input');" value="Send" />
1335              <div class="the_email_response"></div>
1336          </div>
1337  <?php }
1338  
1339      /**
1340       *  Creates an email capture field that sends emails to PageLines.com
1341       */
1342  	function _account_signup( $oid, $o ){ ?>
1343          <div class="account_signup fix">
1344              <h3>PageLines Account</h3>
1345              <?php 
1346              
1347              $log = admin_url( 'admin.php?page='.PL_MAIN_DASH );
1348              
1349              echo $this->superlink( __( 'Login', 'pagelines' ), 'grey', '', $log );
1350              echo '<span class="divor">or</span>';            
1351              echo $this->superlink( __( 'Register', 'pagelines' ), 'blue', '', PL_SIGNUP );
1352              ?>
1353          </div>
1354  <?php }
1355  
1356  
1357  
1358      /**
1359      *
1360      * @TODO document
1361      *
1362      */
1363  	function updates_setup($oid, $o){
1364      
1365          if ( pagelines_check_credentials() )
1366              $updates_exp = sprintf( __( 'Successfully logged in as &quot;%s&quot; to PageLines%s.', 'pagelines' ), get_pagelines_credentials( 'user'), ( pagelines_check_credentials( 'ssl' ) ) ? ' with a secured connection' : '' );
1367          else 
1368              $updates_exp = sprintf( __( 'Could not connect to PageLines as user &quot;%s&quot;.', 'pagelines' ), get_pagelines_credentials( 'user') ); 
1369                      
1370          if ( pagelines_check_credentials( 'error' ) === 'creds' ) 
1371                  $updates_exp = sprintf( __( 'ERROR: %1$s<br />There was a problem logging in to PageLines.', 'pagelines' ), pagelines_check_credentials( 'message' ) );
1372          
1373          if ( pagelines_check_credentials( 'licence' ) === 'dev' )
1374              $updates_exp .= __( '<br />Developer edition enabled.', 'pagelines' );
1375              
1376          if ( get_pagelines_credentials( 'user' ) === '' || get_pagelines_credentials( 'pass' ) === '' )
1377              $updates_exp = sprintf( __( "Please set your PageLines login credentials.<br />No account yet? <a href='%s'>Get one now</a>.", 'pagelines' ), PL_SIGNUP );
1378  
1379          if ( pagelines_check_credentials( 'error' ) === 'licence' ) {
1380              $updates_exp .= sprintf( '<br /><br />%s', pagelines_check_credentials( 'message' ) );
1381          }
1382          if ( 'true' === pagelines_check_credentials( 'plus' ) )
1383              $updates_exp .= sprintf( '<br /><br />%s', __( 'Active Plus account.', 'pagelines') );            
1384  ?>
1385      <div class="pl_form">
1386          <div class="pl_form_feedback">
1387              <?php echo $updates_exp; ?>
1388          </div>
1389  
1390          <form method="post" class="pl_account_info fix">
1391              <div class="pl_account_info_pad">
1392                  
1393                  <div class="pl_account_form">
1394                      <?php if ( ! pagelines_check_credentials() ) : ?>
1395                      <div class="plform_title">
1396                          <h2>PageLines Account Info</h2>
1397                      </div>
1398                  <?php endif; ?>
1399                      <input type="hidden" name="form_submitted" value="plinfo" />
1400                      
1401              <?php 
1402  
1403              if ( pagelines_check_credentials() ):
1404  
1405                  echo '<input type="hidden" name="creds_reset" value="yes" />';
1406                  echo $this->superlink(__( 'Reset Account Credentials &rarr;', 'pagelines' ), 'blue', 'updates-setup', 'submit');
1407              else:
1408              
1409                  echo $this->input_label( 'lp_username', __( 'PageLines Username', 'pagelines' )); 
1410                  echo $this->input_text( 'lp_username', 'lp_username', get_pagelines_credentials( 'user' ), 'bigtext pluser');
1411                  echo $this->input_label( 'lp_password', __( 'PageLines Password', 'pagelines' )); 
1412                  echo $this->input_text( 'lp_password', 'lp_password', '', 'bigtext pluser', 'password');
1413              
1414                  echo $this->superlink(__( 'Submit Credentials', 'pagelines' ), 'blue', 'updates-setup', 'submit');
1415              endif;
1416              ?>
1417              </form>
1418                      </div>
1419                  <div class="clear"></div>
1420              </div>
1421      </div>
1422  
1423  <?php }
1424  
1425  
1426  
1427      /**
1428      *
1429      * @TODO document
1430      *
1431      */
1432  	function import_export($oid, $o){
1433          
1434          ?>
1435          <div class="pl_form">
1436              <form method="post" class="pl_account_info fix"> 
1437                  <div class="pl_account_info_pad">
1438                      <div class="pl_account_form fix">
1439                  
1440                          <div class="plform_title">
1441                              <h2>PageLines Export Settings</h2>
1442                          </div>
1443                          <input type="hidden" name="form_submitted" value="export_settings_form" />
1444                          <?php echo $this->superlink(__( 'Export Settings File &darr;', 'pagelines' ), 'blue', 'export_settings_form', 'submit'); ?>
1445                          <div class="clear"></div>
1446                      </div>
1447                  </div>
1448              </form>
1449              <form method="post" enctype="multipart/form-data" class="pl_account_info fix">
1450                  
1451                  <div class="pl_account_info_pad">
1452      
1453                      <div class="pl_account_form">
1454                          <div class="plform_title">
1455                              <h2>PageLines Import Settings</h2>
1456                          </div>
1457                          <input type="hidden" name="form_submitted" value="import_settings_form" />
1458                  <?php 
1459  
1460                          $input = $this->input_checkbox('pagelines_templates', 'pagelines_templates', 'checked');
1461                          echo $this->input_label_inline('pagelines_templates', $input, __( 'Import Template Settings', 'pagelines' ));
1462  
1463                          $input = $this->input_checkbox('pagelines_settings', 'pagelines_settings', 'checked');
1464                          echo $this->input_label_inline('pagelines_settings', $input, __( 'Import Primary Settings', 'pagelines' ));
1465  
1466  
1467                          $input = $this->input_checkbox('pagelines_special', 'pagelines_special', 'checked');
1468                          echo $this->input_label_inline('pagelines_special', $input, __( 'Import Special Meta Settings', 'pagelines' ));
1469                  
1470                          $input = $this->input_checkbox('pagelines_layout', 'pagelines_layout', 'checked');
1471                          echo $this->input_label_inline('pagelines_layout', $input, __( 'Import Layout Configuration', 'pagelines' ));
1472  
1473                          echo '<input type="file" class="file_uploader text_input" name="file" id="settings-file" /><div class="clear"></div>';
1474  
1475                          echo $this->superlink( __( 'Import Settings To Install &uarr;', 'pagelines' ), 'blue', 'import_settings_form', 'submit' , 'onClick="return ConfirmImportSettings();"'); 
1476                          pl_action_confirm('ConfirmImportSettings', __( 'Are you sure? This will overwrite your current settings and configurations with the information in this file!', 'pagelines' ));
1477                  ?>
1478              </form>
1479                          </div>
1480                      <div class="clear"></div>
1481                  
1482              </div>    
1483          </div>
1484      <?php
1485      }
1486  
1487  
1488  	function plus_welcome( $oid, $o ) {
1489          
1490          echo PageLines_Plus::plus_welcome();
1491      }
1492  
1493  	function plus_support( $oid, $o ) {
1494  
1495          echo PageLines_Plus::plus_support_page();
1496      }
1497      
1498      
1499      /**
1500       *  Layout Builder (Layout Drag & Drop)
1501       */
1502  	function _get_layout_builder($oid, $o){ 
1503          
1504          $builder = new PageLinesLayoutControl();
1505          $builder->draw_layout_control( $oid, $o );
1506       }
1507  
1508      /**
1509       *  Layout Select (Layout Selector)
1510       */
1511  	function _get_layout_select($oid, $o){
1512          
1513          $builder = new PageLinesLayoutControl();
1514          $builder->get_layout_selector($oid, $o);
1515      }
1516  
1517      /**
1518       *  Template Drag and Drop (Sortable Sections)
1519       */
1520  	function do_template_builder($oid, $o){
1521  
1522          $builder = new PageLinesTemplateBuilder($oid, $o, $this->settings_field);
1523          $builder->draw_template_builder();
1524  
1525      }
1526      
1527      /**
1528       *  Template Drag and Drop (Sortable Sections)
1529       */
1530  	function do_section_control($oid, $o){
1531  
1532          $builder = new PageLinesTemplateBuilder($oid, $o, $this->settings_field);
1533          $builder->section_control_interface($oid, $o);
1534  
1535      }
1536      
1537      
1538  
1539      
1540      
1541      /**
1542       *  INPUT HELPERS
1543       */
1544  
1545  
1546      /**
1547      *
1548      * @TODO document
1549      *
1550      */
1551  	function superlink($text, $mode = 'grey', $class = '', $type = '', $extra='', $name = ''){
1552          
1553          if( false !== strpos($type, 'http') )
1554              $att = 'a';
1555          else 
1556              $att = 'div';
1557          
1558          if ($type == 'submit')
1559              $button = sprintf('<input class="superlink supersave %s" type="submit" name="%s" value="%s" %s />', $class, $name, $text, $extra);
1560          else
1561              $button = sprintf('<%s id="%s" class="%s superlink" href="%s" %s ><span class="superlink-pad">%s</span></%s>', $att, $class, $class, $type, $extra, $text, $att);
1562          
1563          if($mode == 'purchase' || $mode == 'activate' || $mode == 'install' || $mode == 'redirect')
1564              $color = 'blue';
1565          else 
1566              $color = $mode;
1567          
1568          $wrap = sprintf('<div class="superlink-%s-wrap superlink-wrap sl-%s">%s</div>', $class, $color, $button);
1569          
1570          return $wrap;
1571      }
1572      
1573  
1574      /**
1575      *
1576      * @TODO document
1577      *
1578      */
1579  	function input_hidden($id, $name, $value, $class = ''){
1580          return sprintf('<input type="hidden" id="%s" name="%s" value="%s" class="%s" />', $id, $name, $value, $class);
1581      }
1582  
1583      /**
1584      *
1585      * @TODO document
1586      *
1587      */
1588  	function input_textarea($id, $name, $value, $class = 'regular-text', $extra = '', $placeholder = '' ){
1589          return sprintf('<textarea id="%s" name="%s" class="html-textarea %s" %s/>%s</textarea>', $id, $name, $class, $extra, $value );
1590      }
1591      
1592  
1593      /**
1594      *
1595      * @TODO document
1596      *
1597      */
1598  	function input_text($id, $name, $value, $class = 'regular-text', $attr = 'text', $extra = '', $placeholder = ''){
1599          return sprintf('<input type="%s" id="%s" name="%s" value="%s" class="%s" placeholder="%s" %s />', $attr, $id, $name, $value, $class, $placeholder, $extra);
1600      }
1601      
1602  
1603      /**
1604      *
1605      * @TODO document
1606      *
1607      */
1608  	function input_checkbox($id, $name, $value, $class = 'admin_checkbox'){
1609          return sprintf('<input type="checkbox" id="%s" name="%s" class="%s" %s />', $id, $name, $class, $value);
1610      }
1611      
1612  
1613      /**
1614      *
1615      * @TODO document
1616      *
1617      */
1618  	function input_label_inline($id, $input, $text, $class = 'inln'){
1619          return sprintf('<label for="%s" class="lbl %s">%s <span>%s</span></label>', $id, $class, $input, $text);
1620      }
1621      
1622  
1623      /**
1624      *
1625      * @TODO document
1626      *
1627      */
1628  	function input_radio($id, $name, $value, $checked, $class = ''){
1629          return sprintf('<input type="radio" id="%s" name="%s" value="%s" class="%s" %s> ', $id, $name, $value, $class, $checked);
1630      }
1631      
1632  
1633      /**
1634      *
1635      * @TODO document
1636      *
1637      */
1638  	function input_label($id, $text, $class = 'context'){
1639          return sprintf('<label for="%s" class="lbl %s">%s</label>', $id, $class, $text);
1640      }
1641      
1642  
1643      /**
1644      *
1645      * @TODO document
1646      *
1647      */
1648  	function input_select($id, $name, $opts, $class = '', $extra = ''){
1649          return sprintf('<select id="%s" name="%s" class="%s" %s><option value="">&mdash;SELECT&mdash;</option>%s</select>', $id, $name, $class, $extra, $opts);
1650      }
1651      
1652  
1653      /**
1654      *
1655      * @TODO document
1656      *
1657      */
1658  	function input_option($value, $selected, $text, $id = '', $extra = ''){ 
1659          return sprintf('<option id=\'%s\' value="%s" %s %s >%s</option>', $id, $value, $extra, $selected, $text);
1660      }
1661          
1662  
1663      /**
1664      *
1665      * @TODO document
1666      *
1667      */
1668  	function input_button($id, $text, $class = '', $extra = ''){ 
1669          return sprintf('<span id=\'%s\' class="%s button" %s >%s</span>', $id, $class, $extra, $text);
1670      }    
1671  
1672  } // End of Class


Generated: Fri Aug 30 18:26:24 2013 Cross-referenced by PHPXref 0.7.1