<?php
/**
 * Panel section for configuring general options
 *
 * @author jason.xie@victheme.com
 *
 */
class VTCore_Zeus_Panels_General
extends VTCore_Zeus_Panels_Model {

  /**
   * Overriding parent method
   * @see VTCore_Bootstrap_Element_BsElement::buildElement()
   */
  public function buildElement() {

    $assistance = new VTCore_Zeus_Assistance();

    // Logo Configurations
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
        'text' => __('Logo', BASE_THEME),
        'id' => 'vtcore-zeus-logo-panel',
      ));

    $this->panel
      ->setChildrenPointer('heading')
      ->BsBadge(array(
        'attributes' => array(
          'class' => array(
            'pull-right',
          ),
        ),
      ))
      ->lastChild()
      ->Hyperlink(array(
        'text' => 'help',
        'attributes' => array(
          'href' => $assistance->getAssistanceItem('logo', 'url'),
          'target' => $assistance->getAssistanceItem('logo', 'target'),
          'data-title' => $assistance->getAssistanceItem('logo', 'title'),
          'data-type' => $assistance->getAssistanceItem('logo', 'type'),
          'data-toggle' => 'modal',
          'data-target' => '#vtcore-zeus-help-modal',
         ),
      ))
      ->getParent()
      ->setChildrenPointer('content')
      ->BsRow()
      ->lastChild()
      ->BsColumn(array(
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 8,
            'small' => 8,
            'large' => 8,
          ),
        ),
      ))
      ->lastChild()
      ->BsText(array(
        'text' => __('Text', BASE_THEME),
        'name' => 'theme[features][options][logo][text]',
        'value' => $this->getOption('logo', 'text'),
        'description' => __('Set the text to serve as the logo or leave empty to disable it.', BASE_THEME),
      ))
      ->BsText(array(
        'text' => __('Slogan', BASE_THEME),
        'name' => 'theme[features][options][logo][slogan]',
        'value' => $this->getOption('logo', 'slogan'),
        'description' => __('Set the text to serve as the slogan text underneath the logo or leave empty to disable it.', BASE_THEME),
      ))
      ->BsRow()
      ->lastChild()
      ->BsText(array(
        'text' => __('Image Width', BASE_THEME),
        'name' => 'theme[features][options][logo][width]',
        'value' => $this->getOption('logo', 'width'),
        'description' => __('Force the logo image to have maximum width as configured.', BASE_THEME),
        'suffix' => 'px',
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 12,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsText(array(
        'text' => __('Image Height', BASE_THEME),
        'name' => 'theme[features][options][logo][height]',
        'value' => $this->getOption('logo', 'height'),
        'description' => __('Force the logo image to have maximum height as configured.', BASE_THEME),
        'suffix' => 'px',
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 12,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->getParent()
      ->getParent()
      ->BsColumn(array(
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 4,
            'small' => 4,
            'large' => 4,
          ),
        ),
      ))
      ->lastChild()
      ->addOverloaderPrefix('VTCore_Wordpress_Form_')
      ->WpMedia(array(
        'text' => __('Image', BASE_THEME),
        'name' => 'theme[features][options][logo][image]',
        'value' => $this->getOption('logo', 'image'),
        'description' => __('Image that will be used as the logo for normal screen', BASE_THEME),
        'attributes' => array(
          'class' => array('logo-preview'),
        ),
      ));

    $this->processPanel();

    // Favicon Configurations
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
        'text' => __('Favicon', BASE_THEME),
        'id' => 'vtcore-zeus-favicon-panel',
      ));

    $this->panel
      ->setChildrenPointer('heading')
      ->BsBadge(array(
        'attributes' => array(
          'class' => array(
            'pull-right',
          ),
        ),
      ))
      ->lastChild()
      ->Hyperlink(array(
        'text' => 'help',
        'attributes' => array(
          'href' => $assistance->getAssistanceItem('favicon', 'url'),
          'target' => $assistance->getAssistanceItem('favicon', 'target'),
          'data-title' => $assistance->getAssistanceItem('favicon', 'title'),
          'data-type' => $assistance->getAssistanceItem('favicon', 'type'),
          'data-toggle' => 'modal',
          'data-target' => '#vtcore-zeus-help-modal',
        ),
      ))
      ->getParent()
      ->setChildrenPointer('content')
      ->BsRow()
      ->lastChild()
      ->addOverloaderPrefix('VTCore_Wordpress_Form_')
      ->BsDescription(array(
        'text' =>  __('Upload the image that will be served as the favicon icon', BASE_THEME),
        'grids' => array(
          'columns' => array(
            'mobile' => 8,
            'tablet' => 8,
            'small' => 8,
            'large' => 8,
          ),
        ),
      ))
      ->WpMedia(array(
        'name' => 'theme[features][options][favicon][image]',
        'value' => $this->getOption('favicon', 'image'),
        'attributes' => array(
        'class' => array('favicon-preview'),
        ),
        'grids' => array(
          'columns' => array(
            'mobile' => 4,
            'tablet' => 4,
            'small' => 4,
            'large' => 4,
          ),
        ),
      ));

    $this->processPanel();

    // Build the menu options
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
        'text' => __('Menu Options', BASE_THEME),
        'id' => 'vtcore-zeus-menu-panel',
      ));

    $this->panel
      ->setChildrenPointer('heading')
      ->BsBadge(array(
        'attributes' => array(
          'class' => array(
            'pull-right',
          ),
        ),
      ))
      ->lastChild()
      ->Hyperlink(array(
        'text' => 'help',
        'attributes' => array(
          'href' => $assistance->getAssistanceItem('slick_menu', 'url'),
          'target' => $assistance->getAssistanceItem('slick_menu', 'target'),
          'data-title' => $assistance->getAssistanceItem('slick_menu', 'title'),
          'data-type' => $assistance->getAssistanceItem('slick_menu', 'type'),
          'data-toggle' => 'modal',
          'data-target' => '#vtcore-zeus-help-modal',
        ),
      ))
      ->getParent()
      ->setChildrenPointer('content')
      ->BsRow()
      ->lastChild()
      ->BsCheckbox(array(
        'name' => 'theme[features][options][menu][disable_parent]',
        'text' => __('Disable Parent Link', BASE_THEME),
        'description' => __('Disabling the first level parent link for menu with children and replace it with # as the destination.', BASE_THEME),
        'checked' => (boolean) $this->getOption('menu', 'disable_parent'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 4,
            'small' => 4,
            'large' => 4,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][options][menu][enable_slick]',
        'text' => __('Enable Slick Navigation', BASE_THEME),
        'description' => __('Enable or disable the slick navigation when screen width is less than 768px.', BASE_THEME),
        'checked' => (boolean) $this->getOption('menu', 'enable_slick'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 4,
            'small' => 4,
            'large' => 4,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][options][menu][enable_sticky]',
        'text' => __('Enable Sticky Header', BASE_THEME),
        'description' => __('Enable or disable the sticky header.', BASE_THEME),
        'checked' => (boolean) $this->getOption('menu', 'enable_sticky'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 4,
            'small' => 4,
            'large' => 4,
          ),
        ),
      ));

    $this->processPanel();

    // Initial loading animation
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
        'text' => __('Page Loading Animation', BASE_THEME),
        'id' => 'vtcore-zeus-animsition-panel',
      ));

    $this->panel
      ->setChildrenPointer('heading')
      ->BsBadge(array(
        'attributes' => array(
          'class' => array(
            'pull-right',
          ),
        ),
      ))
      ->lastChild()
      ->Hyperlink(array(
        'text' => 'help',
        'attributes' => array(
          'href' => $assistance->getAssistanceItem('page_loading', 'url'),
          'target' => $assistance->getAssistanceItem('page_loading', 'target'),
          'data-title' => $assistance->getAssistanceItem('page_loading', 'title'),
          'data-type' => $assistance->getAssistanceItem('page_loading', 'type'),
          'data-toggle' => 'modal',
          'data-target' => '#vtcore-zeus-help-modal',
        ),
      ))
      ->getParent()
      ->setChildrenPointer('content')
      ->BsRow()
      ->lastChild()
      ->BsCheckbox(array(
        'name' => 'theme[features][options][animsition][enable]',
        'text' => __('Enable page loading animation', BASE_THEME),
        'description' => __('Toggle to enalbe or disable the initial page loading animation', BASE_THEME),
        'checked' => (boolean) $this->getOption('animsition', 'enable'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsText(array(
        'name' => 'theme[features][options][animsition][loading_text]',
        'text' => __('Loading Text', BASE_THEME),
        'description' => __('Set the text to display when page is loading.', BASE_THEME),
        'value' => $this->getOption('animsition', 'loading_text'),
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsSelect(array(
        'name' => 'theme[features][options][animsition][animation_in]',
        'text' => __('Animation In', BASE_THEME),
        'description' => __('Type of animation used when loading in', BASE_THEME),
        'value' => $this->getOption('animsition', 'animation_in'),
        'attributes' => array(
          'class' => array('clear'),
        ),
        'options' => array(
          'fade-in' => __('Fade In', BASE_THEME),
          'fade-out' => __('Fade Out', BASE_THEME),
          'fade-in-up' => __('Fade In Out', BASE_THEME),
          'fade-out-up' => __('Fade Out Up', BASE_THEME),
          'fade-in-down' => __('Fade In Down', BASE_THEME),
          'fade-out-down' => __('Fade Out Down', BASE_THEME),
          'fade-in-left' => __('Fade In Left', BASE_THEME),
          'fade-out-left' => __('Fade Out Left', BASE_THEME),
          'fade-in-right' => __('Fade In Right', BASE_THEME),
          'fade-out-right' => __('Fade Out Right', BASE_THEME),
          'rotate-in' => __('Rotate In', BASE_THEME),
          'rotate-out' => __('Rotate Out', BASE_THEME),
          'flip-in-x' => __('Flip in X', BASE_THEME),
          'flip-out-x' => __('Flip out X', BASE_THEME),
          'flip-in-y' => __('Flip in Y', BASE_THEME),
          'flip-out-y' => __('Flip out Y', BASE_THEME),
          'zoom-in' => __('Zoom In', BASE_THEME),
          'zoom-out' => __('Zoom Out', BASE_THEME),
        ),
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsText(array(
        'name' => 'theme[features][options][animsition][in_duration]',
        'text' => __('Animation in duration', BASE_THEME),
        'description' => __('Set the animation duration when loading in', BASE_THEME),
        'suffix' => __('miliseconds', BASE_THEME),
        'value' => $this->getOption('animsition', 'in_duration'),
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsSelect(array(
        'name' => 'theme[features][options][animsition][animation_out]',
        'text' => __('Animation Out', BASE_THEME),
        'description' => __('Type of animation used when loading out', BASE_THEME),
        'value' => $this->getOption('animsition', 'animation_out'),
        'attributes' => array(
          'class' => array('clear'),
        ),
        'options' => array(
          'fade-in' => __('Fade In', BASE_THEME),
          'fade-out' => __('Fade Out', BASE_THEME),
          'fade-in-up' => __('Fade In Out', BASE_THEME),
          'fade-out-up' => __('Fade Out Up', BASE_THEME),
          'fade-in-down' => __('Fade In Down', BASE_THEME),
          'fade-out-down' => __('Fade Out Down', BASE_THEME),
          'fade-in-left' => __('Fade In Left', BASE_THEME),
          'fade-out-left' => __('Fade Out Left', BASE_THEME),
          'fade-in-right' => __('Fade In Right', BASE_THEME),
          'fade-out-right' => __('Fade Out Right', BASE_THEME),
          'rotate-in' => __('Rotate In', BASE_THEME),
          'rotate-out' => __('Rotate Out', BASE_THEME),
          'flip-in-x' => __('Flip in X', BASE_THEME),
          'flip-out-x' => __('Flip out X', BASE_THEME),
          'flip-in-y' => __('Flip in Y', BASE_THEME),
          'flip-out-y' => __('Flip out Y', BASE_THEME),
          'zoom-in' => __('Zoom In', BASE_THEME),
          'zoom-out' => __('Zoom Out', BASE_THEME),
        ),
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsText(array(
        'name' => 'theme[features][options][animsition][out_duration]',
        'text' => __('Animation out duration', BASE_THEME),
        'description' => __('Set the animation duration when loading out', BASE_THEME),
        'suffix' => __('miliseconds', BASE_THEME),
        'value' => $this->getOption('animsition', 'out_duration'),
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ));

    $this->processPanel();

    // Build the show / hide elements
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
        'text' => __('Show or Hide Theme Elements', BASE_THEME),
        'id' => 'vtcore-zeus-show-panel',
        'attributes' => array(
          'class' => array(
            'switch-column-two',
          ),
        ),
      ));

    $this->panel
      ->setChildrenPointer('heading')
      ->BsBadge(array(
        'attributes' => array(
          'class' => array(
            'pull-right',
          ),
        ),
      ))
      ->lastChild()
      ->Hyperlink(array(
        'text' => 'help',
        'attributes' => array(
          'href' => $assistance->getAssistanceItem('excerpt', 'url'),
          'target' => $assistance->getAssistanceItem('excerpt', 'target'),
          'data-title' => $assistance->getAssistanceItem('excerpt', 'title'),
          'data-type' => $assistance->getAssistanceItem('excerpt', 'type'),
          'data-toggle' => 'modal',
          'data-target' => '#vtcore-zeus-help-modal',
         ),
      ))
      ->getParent()
      ->setChildrenPointer('content')
      ->BsHeader(array(
        'tag' => 'h3',
        'text' => __('Excerpts Element', BASE_THEME),
      ))
      ->BsDescription(array(
        'text' => __('The excerpt setting will be applied to blog post type teasers that uses the theme default template for rendering the element.', BASE_THEME),
      ))
      ->BsRow()
      ->lastChild()
      ->BsCheckbox(array(
        'name' => 'theme[features][show][teaser][title]',
        'text' => __('Show Title', BASE_THEME),
        'description' => __('Show / hide the excerpt title element', BASE_THEME),
        'checked' => (boolean) $this->getShow('teaser', 'title'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][teaser][image]',
        'text' => __('Show Image', BASE_THEME),
        'description' => __('Show / hide the excerpt attached thumbnail image', BASE_THEME),
        'checked' => (boolean) $this->getShow('teaser', 'image'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][teaser][byline]',
        'text' => __('Show Post By Line', BASE_THEME),
        'description' => __('Show / hide the excerpt text line showing the post information.', BASE_THEME),
        'checked' => (boolean) $this->getShow('teaser', 'byline'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][teaser][excerpt]',
        'text' => __('Show Content', BASE_THEME),
        'description' => __('Show / hide the excerpt content.', BASE_THEME),
        'checked' => (boolean) $this->getShow('teaser', 'excerpt'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][teaser][readmore]',
        'text' => __('Show Readmore Button', BASE_THEME),
        'description' => __('Show / hide the excerpt readmore button.', BASE_THEME),
        'checked' => (boolean) $this->getShow('teaser', 'readmore'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->getParent()
      ->BsHeader(array(
        'tag' => 'h3',
        'text' => __('Single Post Element', BASE_THEME),
      ))
      ->BsDescription(array(
        'text' => __('The single post setting will be applied to blog post type single post page and other page that use the single.php as the template for rendering the element.', BASE_THEME),
      ))
      ->BsRow()
      ->lastChild()
      ->BsCheckbox(array(
        'name' => 'theme[features][show][full][title]',
        'text' => __('Show Title', BASE_THEME),
        'description' => __('Show / hide the single post main title.', BASE_THEME),
        'checked' => (boolean) $this->getShow('full', 'title'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][full][image]',
        'text' => __('Show Featured Image', BASE_THEME),
        'description' => __('Show / hide the single post featured image.', BASE_THEME),
        'checked' => (boolean) $this->getShow('full', 'image'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][full][content]',
        'text' => __('Show Content', BASE_THEME),
        'description' => __('Show / hide the single post main content', BASE_THEME),
        'checked' => (boolean) $this->getShow('full', 'content'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][full][tags]',
        'text' => __('Show Tags', BASE_THEME),
        'description' => __('Show / hide the tags element', BASE_THEME),
        'checked' => (boolean) $this->getShow('full', 'tags'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][full][author]',
        'text' => __('Show Author Information Box', BASE_THEME),
        'description' => __('Show / hide the single post author information box.', BASE_THEME),
        'checked' => (boolean) $this->getShow('full', 'author'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][full][comments]',
        'text' => __('Show Comments Entries', BASE_THEME),
        'description' => __('Show / hide single page comment entries element.', BASE_THEME),
        'checked' => (boolean) $this->getShow('full', 'comments'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][full][comment_form]',
        'text' => __('Show Comment Form', BASE_THEME),
        'description' => __('Show / hide the single post comment form element.', BASE_THEME),
        'checked' => (boolean) $this->getShow('full', 'comment_form'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][full][social]',
        'text' => __('Show Social Share Links', BASE_THEME),
        'description' => __('Show / hide the single post social sharing button links.', BASE_THEME),
        'checked' => (boolean) $this->getShow('full', 'social'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->getParent()
      ->BsHeader(array(
        'tag' => 'h3',
        'text' => __('Single Page Element', BASE_THEME),
      ))
      ->BsDescription(array(
        'text' => __('The single page setting will be applied to post type page single post and other page that use the page.php as the template for rendering the element.', BASE_THEME),
      ))
      ->BsRow()
      ->lastChild()
      ->BsCheckbox(array(
        'name' => 'theme[features][show][page][image]',
        'text' => __('Show Image', BASE_THEME),
        'description' => __('Show / hide the single page featured image element.', BASE_THEME),
        'checked' => (boolean) $this->getShow('page', 'image'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][page][title]',
        'text' => __('Show Title', BASE_THEME),
        'description' => __('Show / hide the single page title element.', BASE_THEME),
        'checked' => (boolean) $this->getShow('page', 'title'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][page][content]',
        'text' => __('Show Content', BASE_THEME),
        'description' => __('Show / hide the single page content element.', BASE_THEME),
        'checked' => (boolean) $this->getShow('page', 'content'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][page][comments]',
        'text' => __('Show Comments Entries', BASE_THEME),
        'description' => __('Show / hide the single page comment entries element.', BASE_THEME),
        'checked' => (boolean) $this->getShow('page', 'comments'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][page][comment_form]',
        'text' => __('Show Comment Form', BASE_THEME),
        'description' => __('Show / hide the single page comment form element.', BASE_THEME),
        'checked' => (boolean) $this->getShow('page', 'comment_form'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][page][social]',
        'text' => __('Show Social Share Links', BASE_THEME),
        'description' => __('Show / hide the single page social sharing button links.', BASE_THEME),
        'checked' => (boolean) $this->getShow('page', 'social'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->getParent()
      ->BsHeader(array(
        'tag' => 'h3',
        'text' => __('404 Page Element', BASE_THEME),
      ))
      ->BsDescription(array(
        'text' => __('The 404 page options will be applied to the page not found page that uses 404.php as the template for rendering the content.', BASE_THEME),
      ))
      ->BsRow()
      ->lastChild()
      ->BsCheckbox(array(
        'name' => 'theme[features][show][notfound][title]',
        'text' => __('Show Title', BASE_THEME),
        'description' => __('Show / hide the 404 page title.', BASE_THEME),
        'checked' => (boolean) $this->getShow('notfound', 'title'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][notfound][content]',
        'text' => __('Show Content', BASE_THEME),
        'description' => __('Show / hide the 404 page content.', BASE_THEME),
        'checked' => (boolean) $this->getShow('notfound', 'content'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->getParent()
      ->BsHeader(array(
        'tag' => 'h3',
        'text' => __('Footer Element', BASE_THEME),
      ))
      ->BsDescription(array(
        'text' => __('The footer element configuration will be applied globaly to the footer.php template.', BASE_THEME),
      ))
      ->BsRow()
      ->lastChild()
      ->BsCheckbox(array(
        'name' => 'theme[features][show][footer][fullfooter]',
        'text' => __('Show Full Footer Element', BASE_THEME),
        'description' => __('Show / hide the full footer, disabling this will remove the copyright and footer menu element.', BASE_THEME),
        'checked' => (boolean) $this->getShow('footer', 'fullfooter'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ))
      ->BsCheckbox(array(
        'name' => 'theme[features][show][footer][copyright]',
        'text' => __('Show Full Footer Copyright Notice', BASE_THEME),
        'description' => __('Show / hide the full footer copyright notice text.', BASE_THEME),
        'checked' => (boolean) $this->getShow('footer', 'copyright'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 6,
            'large' => 6,
          ),
        ),
      ));

    $this->processPanel();

    // Build the footer elements
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
        'id' => 'vtcore-zeus-footer-panel',
        'text' => __('Footer Element', BASE_THEME),
      ));

    $this->panel
      ->setChildrenPointer('heading')
      ->BsBadge(array(
        'attributes' => array(
          'class' => array(
            'pull-right',
          ),
        ),
      ))
      ->lastChild()
      ->Hyperlink(array(
        'text' => 'help',
        'attributes' => array(
          'href' => $assistance->getAssistanceItem('copyright', 'url'),
          'target' => $assistance->getAssistanceItem('copyright', 'target'),
          'data-title' => $assistance->getAssistanceItem('copyright', 'title'),
          'data-type' => $assistance->getAssistanceItem('copyright', 'type'),
          'data-toggle' => 'modal',
          'data-target' => '#vtcore-zeus-help-modal',
        ),
      ))
      ->getParent()
      ->setChildrenPointer('content')
      ->BsText(array(
        'text' => __('Copyright Text', BASE_THEME),
        'name' => 'theme[features][options][footer][copyrighttext]',
        'value' => $this->getOption('footer', 'copyrighttext'),
        'description' => __('Set the text to serve as copyright text in the full footer element.', BASE_THEME),
      ));

    $this->processPanel();

    // Build the page not found options
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
        'id' => 'vtcore-zeus-notfound-panel',
        'text' => __('Page 404 Options', BASE_THEME),
      ));

    $this->panel
      ->setChildrenPointer('heading')
      ->BsBadge(array(
        'attributes' => array(
          'class' => array(
            'pull-right',
          ),
        ),
      ))
      ->lastChild()
      ->Hyperlink(array(
        'text' => 'help',
        'attributes' => array(
          'href' => $assistance->getAssistanceItem('configure404', 'url'),
          'target' => $assistance->getAssistanceItem('configure404', 'target'),
          'data-title' => $assistance->getAssistanceItem('configure404', 'title'),
          'data-type' => $assistance->getAssistanceItem('configure404', 'type'),
          'data-toggle' => 'modal',
          'data-target' => '#vtcore-zeus-help-modal',
        ),
      ))
      ->getParent()
      ->setChildrenPointer('content')
      ->BsText(array(
        'text' => __('Title', BASE_THEME),
        'name' => 'theme[features][options][notfound][title]',
        'value' => $this->getOption('notfound', 'title'),
        'description' => __('Set the title for the page 404.', BASE_THEME),
      ))
      ->BsTextarea(array(
        'text' => __('Content', BASE_THEME),
        'name' => 'theme[features][options][notfound][content]',
        'value' => $this->getOption('notfound', 'content'),
        'description' => __('Set the content for the page 404.', BASE_THEME),
      ));

    $this->processPanel();


    // Build the performance options
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
      'text' => __('Performance', BASE_THEME),
      'id' => 'vtcore-zeus-performance-panel',
    ));

    $this->panel
      ->setChildrenPointer('content')
      ->addChildren(new VTCore_Bootstrap_Form_BsCheckbox(array(
        'name' => 'theme[features][options][performance][aggregate]',
        'text' => __('Aggregate Assets', BASE_THEME),
        'description' => __('Enabling this will force the core to aggregate CSS and Javascript file into a single file, please disable this if you have implemented other
                      aggregation plugin such as W3Total Cache.', BASE_THEME),
        'checked' => (boolean) $this->getOption('performance', 'aggregate'),
        'switch' => true,
      )));

    $this->processPanel();

    // Build the customizer options
    $this->panel = new VTCore_Bootstrap_Element_BsPanel(array(
      'text' => __('Customizer', BASE_THEME),
      'id' => 'vtcore-zeus-customizer-panel',
    ));

    $this->panel
      ->setChildrenPointer('content')
      ->addChildren(new VTCore_Bootstrap_Form_BsDescription(array(
        'text' => __('Enable or disable the Wordpress Customizer panel group, when host server is not powerful enough to
                             display all the panel group at once, it is suggested to disable some of the panel group to accommodate the server capabilities.', BASE_THEME),
      )))
      ->addChildren(new VTCore_Bootstrap_Grid_BsRow)
      ->lastChild()
      ->addChildren(new VTCore_Bootstrap_Form_BsCheckbox(array(
        'name' => 'theme[features][options][customizer][general]',
        'text' => __('General Panel', BASE_THEME),
        'checked' => (boolean) $this->getOption('customizer', 'general'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 4,
            'large' => 4,
          ),
        ),
      )))
      ->addChildren(new VTCore_Bootstrap_Form_BsCheckbox(array(
        'name' => 'theme[features][options][customizer][style]',
        'text' => __('Style Panel', BASE_THEME),
        'checked' => (boolean) $this->getOption('customizer', 'style'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 4,
            'large' => 4,
          ),
        ),
      )))
      ->addChildren(new VTCore_Bootstrap_Form_BsCheckbox(array(
        'name' => 'theme[features][options][customizer][layout]',
        'text' => __('Layout Panel', BASE_THEME),
        'checked' => (boolean) $this->getOption('customizer', 'layout'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 4,
            'large' => 4,
          ),
        ),
      )))
      ->addChildren(new VTCore_Bootstrap_Form_BsCheckbox(array(
        'name' => 'theme[features][options][customizer][widgets]',
        'text' => __('Widgets Panel', BASE_THEME),
        'checked' => (boolean) $this->getOption('customizer', 'widgets'),
        'switch' => true,
        'grids' => array(
          'columns' => array(
            'mobile' => 12,
            'tablet' => 6,
            'small' => 4,
            'large' => 4,
          ),
        ),
      )));

    $this->processPanel();
  }

}