<?php


namespace Nextend\SmartSlider3\Application\Admin\Settings;

use Nextend\Framework\Form\Container\ContainerTable;
use Nextend\Framework\Form\Element\Breakpoint;
use Nextend\Framework\Form\Element\Hidden;
use Nextend\Framework\Form\Element\Message\Notice;
use Nextend\Framework\Form\Element\MixedField;
use Nextend\Framework\Form\Element\OnOff;
use Nextend\Framework\Form\Element\Select;
use Nextend\Framework\Form\Element\Text;
use Nextend\Framework\Form\Element\Text\Number;
use Nextend\Framework\Form\Element\Text\TextAutoComplete;
use Nextend\Framework\Form\Element\Textarea;
use Nextend\Framework\Form\Element\Token;
use Nextend\Framework\Form\Form;
use Nextend\Framework\Sanitize;
use Nextend\SmartSlider3\Application\Admin\Layout\Block\Forms\Button\BlockButton;
use Nextend\SmartSlider3\Application\Admin\TraitAdminUrl;
use Nextend\SmartSlider3\Platform\Joomla\JoomlaShim;
use Nextend\SmartSlider3\Settings;

class ViewSettingsGeneral extends AbstractViewSettings {

    use TraitAdminUrl;

    protected $active = 'general';

    const defaults = array(
        'desktop-large-portrait'  => 1440,
        'desktop-large-landscape' => 1440,
        'tablet-large-portrait'   => 1300,
        'tablet-large-landscape'  => 1300,
        'tablet-portrait'         => 1199,
        'tablet-landscape'        => 1199,
        'mobile-large-portrait'   => 900,
        'mobile-large-landscape'  => 1050,
        'mobile-portrait'         => 700,
        'mobile-landscape'        => 900,
    );

    public function display() {

        parent::display();

        $this->layout->addContent($this->render('General'));

        $this->layout->render();
    }

    protected function addHeaderActions() {

        $buttonClearCache = new BlockButton($this);
        $buttonClearCache->setBig();
        $buttonClearCache->setLabel(n2_('پاک کردن کش'));
        $buttonClearCache->setUrl($this->getUrlSettingsClearCache());
        $this->blockHeader->addAction($buttonClearCache->toHTML());

    }

    public function renderForm() {
        $data = Settings::getAll();

        $form = new Form($this, 'settings');
        $form->loadArray($data);

        $table = new ContainerTable($form->getContainer(), 'general', n2_('تنظیمات عمومی'));

        $row1 = $table->createRow('general-1');

        new Token($row1);

        new Hidden($row1, 'slidersOrder2', '');

        new Hidden($row1, 'slidersOrder2Direction', '');

        new OnOff($row1, 'autoupdatecheck', n2_('بررسی آپدیت خودکار'), 1);

        new OnOff($row1, 'slide-as-file', n2_('اسلاید ذخیره جایگزین'), 0, array(
            'tipLabel'       => n2_('اسلاید ذخیره جایگزین'),
            'tipDescription' => n2_('اگر در حین ذخیره با مشکل مواجه شدید، این گزینه ممکن است آنها را حل کند.')
        ));
        new OnOff($row1, 'preview-new-window', n2_('پیشنمایش در پنجره جدید'), 0);

        $row3 = $table->createRow('general-3');
        new OnOff($row3, 'lightbox-mobile-new-tab', n2_('ویدیوهای لایت باکس در تب جدید در موبایل'), 1, array(
            'tipLabel'       => n2_('ویدیوهای لایت باکس در تب جدید در موبایل'),
            'tipDescription' => n2_('ویدیوهای لایت باکس را در برنامه YouTube باز می کند تا از غیرفعال کردن ویدیو توسط تلفن همراه جلوگیری شود.'),
            'tipLink'        => 'https://smartslider.helpscoutdocs.com/article/1783-general#lightbox-videos-in-new-tab-on-mobile'
        ));
    

        new OnOff($row3, 'youtube-privacy-enhanced', n2_('حالت بهبود یافته حریم خصوصی YouTube و Vimeo'), 0);

        new Number($row3, 'smooth-scroll-speed', n2_('سرعت اسکرول مستقیم'), 400, array(
            'wide' => 5,
            'unit' => 'ms'
        ));


        $row4 = $table->createRow('general-4');
        new Textarea($row4, 'external-css-files', n2_('ویرایشگر - فایل های CSS اضافی'), '', array(
            'width'          => 300,
            'tipLabel'       => n2_('ویرایشگر - فایل های CSS اضافی'),
            'tipDescription' => n2_('برای مثال می‌توانید فایل‌های CSS خود را به باطن ما فراخوانی کنید تا بتوانید از فونت‌های سفارشی استفاده کنید. هر URL را در یک خط جدید بنویسید.'),
            'tipLink'        => 'https://smartslider.helpscoutdocs.com/article/1783-general#editor-additional-css-files'
        ));
        $table        = new ContainerTable($form->getContainer(), 'general-wordpress', n2_('تنظیمات وردپرس'));
        $rowWordPress = $table->createRow('general-wordpress-1');

        new OnOff($rowWordPress, 'editor-icon', n2_('نمایش آیکن ویرایشگر'), 1);

        new OnOff($rowWordPress, 'wp-adminbar', n2_('نمایش در ادمین بار'), 1);

        new OnOff($rowWordPress, 'yoast-sitemap', n2_('نقشه سایت YOAST SEO - اضافه کردن تصاویر'), 1);

        new Number($rowWordPress, 'wordpress-widget-areas', n2_('ایجاد منطقه ویجت'), 1, array(
            'unit'           => n2_('widget area(s)'),
            'wide'           => 4,
            'min'            => 0,
            'tipLabel'       => n2_('ایجاد منطقه ویجت'),
            'tipDescription' => n2_('نواحی ویجت جدیدی ایجاد می کند که می توانید برای انتشار آسان در موضوع خود قرار دهید.')
        ));

        $rowWordPress2 = $table->createRow('general-wordpress-2');

        new OnOff($rowWordPress2, 'wp-ajax-iframe-slider', n2_('از iframe در تماس های AJAX استفاده کنید'), 0, array(
            'tipLabel'       => n2_('از iframe در تماس های AJAX استفاده کنید'),
            'tipDescription' => n2_('هنگامی که صفحه از طریق AJAX بارگیری می شود، نوار لغزنده را با استفاده از iframe بارگیری می کند تا مشکلی ایجاد نشود.')
        ));

        $table = new ContainerTable($form->getContainer(), 'breakpoints-table', n2_('نقاط شکست'));

        $instructionRow = $table->createRow('breakpoints-row-instruction');
        $instructions   = n2_('هنگامی که نوار لغزنده به دستگاه دیگری جابجا می شود، نقاط انفصال عرض مرورگر را بر حسب پیکسل تعریف می کنند.') . ' ' . n2_('در هر لغزنده می توانید نقاط شکست جهانی را با مقادیر محلی لغو کنید.');
        new Notice($instructionRow, 'breakpoints-instructions', n2_('دستور العمل'), $instructions);
        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-desktop-portrait', false, self::defaults['desktop-large-portrait']);
        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-desktop-portrait-landscape', false, self::defaults['desktop-large-landscape']);

        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-tablet-landscape', false, self::defaults['tablet-large-portrait']);
        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-tablet-landscape-landscape', false, self::defaults['tablet-large-landscape']);
    

        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-tablet-portrait', false, self::defaults['tablet-portrait']);
        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-tablet-portrait-landscape', false, self::defaults['tablet-landscape']);
        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-mobile-landscape', false, self::defaults['mobile-large-portrait']);
        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-mobile-landscape-landscape', false, self::defaults['mobile-large-landscape']);
    

        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-mobile-portrait', false, self::defaults['mobile-portrait']);
        new Text\HiddenText($table->getFieldsetLabel(), 'responsive-screen-width-mobile-portrait-landscape', false, self::defaults['mobile-landscape']);

        $rowBreakpoints = $table->createRow('breakpoints-row-1');
        new Breakpoint($rowBreakpoints, 'breakpoints', array(
            'desktoplandscape-portrait'  => 'settingsresponsive-screen-width-desktop-portrait',
            'desktoplandscape-landscape' => 'settingsresponsive-screen-width-desktop-portrait-landscape',
            'tabletlandscape-portrait'   => 'settingsresponsive-screen-width-tablet-landscape',
            'tabletlandscape-landscape'  => 'settingsresponsive-screen-width-tablet-landscape-landscape',
            'tabletportrait-portrait'    => 'settingsresponsive-screen-width-tablet-portrait',
            'tabletportrait-landscape'   => 'settingsresponsive-screen-width-tablet-portrait-landscape',
            'mobilelandscape-portrait'   => 'settingsresponsive-screen-width-mobile-landscape',
            'mobilelandscape-landscape'  => 'settingsresponsive-screen-width-mobile-landscape-landscape',
            'mobileportrait-portrait'    => 'settingsresponsive-screen-width-mobile-portrait',
            'mobileportrait-landscape'   => 'settingsresponsive-screen-width-mobile-portrait-landscape'
        ));
    

        $table = new ContainerTable($form->getContainer(), 'focus-offset', n2_('آفست تمرکز'));
        $row1  = $table->createRow('focus-offset-1');
        new Notice($row1, 'focus-instructions', n2_('دستور العمل'), n2_('این گزینه در طرح بندی کامل صفحه برای کاهش ارتفاع نوار لغزنده استفاده می شود. گزینه "Scroll to Slider" نیز از این گزینه برای تعیین محل اسکرول اسلایدر استفاده می کند.'));

        $row2 = $table->createRow('focus-offset-2');
        $row2HeightOffsetValue = '#wpadminbar';
        new TextAutoComplete($row2, 'responsive-focus-top', n2_('بالا'), $row2HeightOffsetValue, array(
            'style'  => 'width:200px;',
            'values' => array($row2HeightOffsetValue)
        ));
        new Text($row2, 'responsive-focus-bottom', n2_('پایین'), '', array(
            'style' => 'width:200px;'
        ));


        $table = new ContainerTable($form->getContainer(), 'translate-url', n2_('ترجمه لینک'));
        $row1  = $table->createRow('translate-url-1');
        new Notice($row1, 'translate-url-instruction', n2_('دستور العمل'), n2_('می‌توانید URL ظاهری که دارایی‌های ما از آن بارگیری می‌شوند را تغییر دهید. پس از انتقال به دامنه جدید می تواند مفید باشد.'));

        $row2 = $table->createRow('translate-url-2');

        $translateUrl = new MixedField($row2, 'translate-url', false, '|*|');
        new Text($translateUrl, 'translate-url-1', n2_('از'), '', array(
            'style'          => 'width:200px;',
            'tipLabel'       => n2_('از'),
            'tipDescription' => n2_('URL قدیمی که می خواهید جایگزین کنید. به عنوان مثال. https://oldsite.com/')
        ));
        new Text($translateUrl, 'translate-url-2', n2_('به'), '', array(
            'style'          => 'width:200px;',
            'tipLabel'       => n2_('به'),
            'tipDescription' => n2_('URL جدیدی که می خواهید استفاده کنید. به عنوان مثال. https://newsite.com')
        ));

        $form->render();

        echo '<input name="namespace" value="default" type="hidden">';
    }
}