<?php defined('BLUDIT') or die('Bludit CMS.'); ?> <?php echo Bootstrap::formOpen(array('id'=>'jsform', 'class'=>'tab-content')); ?> <div class="align-middle"> <div class="float-right mt-1"> <button type="submit" class="btn btn-primary btn-sm" name="save"><?php $L->p('Save') ?></button> <a class="btn btn-secondary btn-sm" href="<?php echo HTML_PATH_ADMIN_ROOT.'dashboard' ?>" role="button"><?php $L->p('Cancel') ?></a> </div> <?php echo Bootstrap::pageTitle(array('title'=>$L->g('Settings'), 'icon'=>'cog')); ?> </div> <!-- TABS --> <nav class="mb-3"> <div class="nav nav-tabs" id="nav-tab" role="tablist"> <a class="nav-item nav-link active" id="nav-general-tab" data-toggle="tab" href="#general" role="tab" aria-controls="nav-general" aria-selected="false"><?php $L->p('General') ?></a> <a class="nav-item nav-link" id="nav-advanced-tab" data-toggle="tab" href="#advanced" role="tab" aria-controls="nav-advanced" aria-selected="false"><?php $L->p('Advanced') ?></a> <a class="nav-item nav-link" id="nav-seo-tab" data-toggle="tab" href="#seo" role="tab" aria-controls="nav-seo" aria-selected="false"><?php $L->p('SEO') ?></a> <a class="nav-item nav-link" id="nav-social-tab" data-toggle="tab" href="#social" role="tab" aria-controls="nav-social" aria-selected="false"><?php $L->p('Social Networks') ?></a> <a class="nav-item nav-link" id="nav-images-tab" data-toggle="tab" href="#images" role="tab" aria-controls="nav-images" aria-selected="false"><?php $L->p('Images') ?></a> <a class="nav-item nav-link" id="nav-language-tab" data-toggle="tab" href="#language" role="tab" aria-controls="nav-language" aria-selected="false"><?php $L->p('Language') ?></a> <a class="nav-item nav-link" id="nav-language-tab" data-toggle="tab" href="#logo" role="tab" aria-controls="nav-logo" aria-selected="false"><?php $L->p('Logo') ?></a> </div> </nav> <?php // Token CSRF echo Bootstrap::formInputHidden(array( 'name'=>'tokenCSRF', 'value'=>$security->getTokenCSRF() )); // Homepage echo Bootstrap::formInputHidden(array( 'name'=>'homepage', 'value'=>$site->homepage() )); // Page not found echo Bootstrap::formInputHidden(array( 'name'=>'pageNotFound', 'value'=>$site->pageNotFound() )); ?> <!-- General tab --> <div class="tab-pane show active" id="general" role="tabpanel" aria-labelledby="general-tab"> <?php echo Bootstrap::formTitle(array('title'=>$L->g('Site'))); echo Bootstrap::formInputText(array( 'name'=>'title', 'label'=>$L->g('Site title'), 'value'=>$site->title(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('use-this-field-to-name-your-site') )); echo Bootstrap::formInputText(array( 'name'=>'slogan', 'label'=>$L->g('Site slogan'), 'value'=>$site->slogan(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('use-this-field-to-add-a-catchy-phrase') )); echo Bootstrap::formInputText(array( 'name'=>'description', 'label'=>$L->g('Site description'), 'value'=>$site->description(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('you-can-add-a-site-description-to-provide') )); echo Bootstrap::formInputText(array( 'name'=>'footer', 'label'=>$L->g('Footer text'), 'value'=>$site->footer(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('you-can-add-a-small-text-on-the-bottom') )); ?> </div> <!-- Advanced tab --> <div class="tab-pane" id="advanced" role="tabpanel" aria-labelledby="advanced-tab"> <?php echo Bootstrap::formTitle(array('title'=>$L->g('Content'))); echo Bootstrap::formSelect(array( 'name'=>'itemsPerPage', 'label'=>$L->g('Items per page'), 'options'=>array('1'=>'1','2'=>'2','3'=>'3','4'=>'4','5'=>'5','6'=>'6','7'=>'7','8'=>'8', '-1'=>$L->g('All content')), 'selected'=>$site->itemsPerPage(), 'class'=>'', 'tip'=>$L->g('Number of items to show per page') )); echo Bootstrap::formSelect(array( 'name'=>'orderBy', 'label'=>$L->g('Order content by'), 'options'=>array('date'=>$L->g('Date'),'position'=>$L->g('Position')), 'selected'=>$site->orderBy(), 'class'=>'', 'tip'=>$L->g('order-the-content-by-date-to-build-a-blog') )); echo Bootstrap::formTitle(array('title'=>$L->g('Predefined pages'))); // Homepage try { $homeKey = $site->homepage(); $home = new Page($homeKey); $homeValue = $home->title(); } catch (Exception $e) { $homeValue = ''; } echo Bootstrap::formInputText(array( 'name'=>'homepageTMP', 'label'=>$L->g('Homepage'), 'value'=>$homeValue, 'class'=>'', 'placeholder'=>$L->g('Start typing a page title to see a list of suggestions.'), 'tip'=>$L->g('Returning page for the main page') )); // Page not found 404 try { $pageNotFoundKey = $site->pageNotFound(); $pageNotFound = new Page($pageNotFoundKey); $pageNotFoundValue = $pageNotFound->title(); } catch (Exception $e) { $pageNotFoundValue = ''; } echo Bootstrap::formInputText(array( 'name'=>'pageNotFoundTMP', 'label'=>$L->g('Page not found'), 'value'=>$pageNotFoundValue, 'class'=>'', 'placeholder'=>$L->g('Start typing a page title to see a list of suggestions.'), 'tip'=>$L->g('Returning page when the page doesnt exist') )); echo Bootstrap::formTitle(array('title'=>$L->g('Email account settings'))); echo Bootstrap::formInputText(array( 'name'=>'emailFrom', 'label'=>$L->g('Sender email'), 'value'=>$site->emailFrom(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Emails will be sent from this address') )); echo Bootstrap::formTitle(array('title'=>$L->g('Autosave'))); echo Bootstrap::formInputText(array( 'name'=>'autosaveInterval', 'label'=>$L->g('Interval'), 'value'=>$site->autosaveInterval(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Number in minutes for every execution of autosave') )); echo Bootstrap::formTitle(array('title'=>$L->g('Site URL'))); echo Bootstrap::formInputText(array( 'name'=>'url', 'label'=>'URL', 'value'=>$site->url(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('full-url-of-your-site'), 'placeholder'=>'https://' )); echo Bootstrap::formTitle(array('title'=>$L->g('Page content'))); echo Bootstrap::formSelect(array( 'name'=>'markdownParser', 'label'=>$L->g('Markdown parser'), 'options'=>array('true'=>$L->g('Enabled'), 'false'=>$L->g('Disabled')), 'selected'=>($site->markdownParser()?'true':'false'), 'class'=>'', 'tip'=>$L->g('Enable the markdown parser for the content of the page.') )); echo Bootstrap::formTitle(array('title'=>$L->g('URL Filters'))); echo Bootstrap::formInputText(array( 'name'=>'uriPage', 'label'=>$L->g('Pages'), 'value'=>$site->uriFilters('page'), 'class'=>'', 'placeholder'=>'', 'tip'=>DOMAIN_PAGES )); echo Bootstrap::formInputText(array( 'name'=>'uriTag', 'label'=>$L->g('Tags'), 'value'=>$site->uriFilters('tag'), 'class'=>'', 'placeholder'=>'', 'tip'=>DOMAIN_TAGS )); echo Bootstrap::formInputText(array( 'name'=>'uriCategory', 'label'=>$L->g('Category'), 'value'=>$site->uriFilters('category'), 'class'=>'', 'placeholder'=>'', 'tip'=>DOMAIN_CATEGORIES )); echo Bootstrap::formInputText(array( 'name'=>'uriBlog', 'label'=>$L->g('Blog'), 'value'=>$site->uriFilters('blog'), 'class'=>'', 'placeholder'=>'', 'tip'=>DOMAIN.$site->uriFilters('blog'), 'disabled'=>Text::isEmpty($site->uriFilters('blog')) )); ?> </div> <!-- SEO tab --> <div class="tab-pane" id="seo" role="tabpanel" aria-labelledby="seo-tab"> <?php echo Bootstrap::formTitle(array('title'=>$L->g('Extreme friendly URL'))); echo Bootstrap::formSelect(array( 'name'=>'extremeFriendly', 'label'=>$L->g('Allow Unicode'), 'options'=>array('true'=>$L->g('Enabled'), 'false'=>$L->g('Disabled')), 'selected'=>($site->extremeFriendly()?'true':'false'), 'class'=>'', 'tip'=>$L->g('Allow unicode characters in the URL and some part of the system.') )); echo Bootstrap::formTitle(array('title'=>$L->g('Title formats'))); echo Bootstrap::formInputText(array( 'name'=>'titleFormatHomepage', 'label'=>$L->g('Homepage'), 'value'=>$site->titleFormatHomepage(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Variables allowed').' <code>{{site-title}}</code> <code>{{site-slogan}}</code> <code>{{site-description}}</code>', 'placeholder'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'titleFormatPages', 'label'=>$L->g('Pages'), 'value'=>$site->titleFormatPages(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Variables allowed').' <code>{{page-title}}</code> <code>{{page-description}}</code> <code>{{site-title}}</code> <code>{{site-slogan}}</code> <code>{{site-description}}</code>', 'placeholder'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'titleFormatCategory', 'label'=>$L->g('Category'), 'value'=>$site->titleFormatCategory(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Variables allowed').' <code>{{category-name}}</code> <code>{{site-title}}</code> <code>{{site-slogan}}</code> <code>{{site-description}}</code>', 'placeholder'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'titleFormatTag', 'label'=>$L->g('Tag'), 'value'=>$site->titleFormatTag(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Variables allowed').' <code>{{tag-name}}</code> <code>{{site-title}}</code> <code>{{site-slogan}}</code> <code>{{site-description}}</code>', 'placeholder'=>'' )); ?> </div> <script> $(document).ready(function() { // Homepage autocomplete var homepageXHR; var homepageList; // Keep the parent list returned to get the key by the title page $("#jshomepageTMP").autoComplete({ minChars: 1, source: function(term, response) { // Prevent call inmediatly another ajax request try { homepageXHR.abort(); } catch(e){} homepageXHR = $.getJSON(HTML_PATH_ADMIN_ROOT+"ajax/get-published", {query: term}, function(data) { homepageList = data; term = term.toLowerCase(); var matches = []; for (var title in data) { if (~title.toLowerCase().indexOf(term)) matches.push(title); } response(matches); }); }, onSelect: function(e, term, item) { // homepageList = array( pageTitle => pageKey ) var key = homepageList[term]; $("#jshomepage").attr("value", key); } }); $("#jshomepageTMP").change(function() { if ($(this).val()) { $("#jsuriBlog").removeAttr('disabled'); $("#jsuriBlog").attr('value', '/blog/'); } else { $("#jsuriBlog").attr('value', ''); $("#jsuriBlog").attr('disabled', 'disabled'); $("#jshomepage").attr("value", ''); } }); // pageNotFound autocomplete var pageNotFoundXHR; var pageNotFoundList; // Keep the parent list returned to get the key by the title page $("#jspageNotFoundTMP").autoComplete({ minChars: 1, source: function(term, response) { // Prevent call inmediatly another ajax request try { pageNotFoundXHR.abort(); } catch(e){} pageNotFoundXHR = $.getJSON(HTML_PATH_ADMIN_ROOT+"ajax/get-published", {query: term}, function(data) { pageNotFoundList = data; term = term.toLowerCase(); var matches = []; for (var title in data) { if (~title.toLowerCase().indexOf(term)) matches.push(title); } response(matches); }); }, onSelect: function(e, term, item) { // pageNotFoundList = array( pageTitle => pageKey ) var key = pageNotFoundList[term]; $("#jspageNotFound").attr("value", key); } }); }); </script> <!-- Social Network tab --> <div class="tab-pane" id="social" role="tabpanel" aria-labelledby="social-tab"> <?php echo Bootstrap::formInputText(array( 'name'=>'twitter', 'label'=>'Twitter', 'value'=>$site->twitter(), 'class'=>'', 'placeholder'=>'', 'tip'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'facebook', 'label'=>'Facebook', 'value'=>$site->facebook(), 'class'=>'', 'placeholder'=>'', 'tip'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'codepen', 'label'=>'CodePen', 'value'=>$site->codepen(), 'class'=>'', 'placeholder'=>'', 'tip'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'instagram', 'label'=>'Instagram', 'value'=>$site->instagram(), 'class'=>'', 'placeholder'=>'', 'tip'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'gitlab', 'label'=>'GitLab', 'value'=>$site->gitlab(), 'class'=>'', 'placeholder'=>'', 'tip'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'github', 'label'=>'GitHub', 'value'=>$site->github(), 'class'=>'', 'placeholder'=>'', 'tip'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'linkedin', 'label'=>'LinkedIn', 'value'=>$site->linkedin(), 'class'=>'', 'placeholder'=>'', 'tip'=>'' )); echo Bootstrap::formInputText(array( 'name'=>'mastodon', 'label'=>'Mastodon', 'value'=>$site->mastodon(), 'class'=>'', 'placeholder'=>'', 'tip'=>'' )); ?> </div> <!-- Images tab --> <div class="tab-pane" id="images" role="tabpanel" aria-labelledby="images-tab"> <?php echo Bootstrap::formTitle(array('title'=>$L->g('Thumbnails'))); echo Bootstrap::formInputText(array( 'name'=>'thumbnailWidth', 'label'=>$L->g('Width'), 'value'=>$site->thumbnailWidth(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Thumbnail width in pixels') )); echo Bootstrap::formInputText(array( 'name'=>'thumbnailHeight', 'label'=>$L->g('Height'), 'value'=>$site->thumbnailHeight(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Thumbnail height in pixels') )); echo Bootstrap::formInputText(array( 'name'=>'thumbnailQuality', 'label'=>$L->g('Quality'), 'value'=>$site->thumbnailQuality(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Thumbnail quality in percentage') )); ?> </div> <!-- Timezone and language tab --> <div class="tab-pane" id="language" role="tabpanel" aria-labelledby="language-tab"> <?php echo Bootstrap::formTitle(array('title'=>$L->g('Language and timezone'))); echo Bootstrap::formSelect(array( 'name'=>'language', 'label'=>$L->g('Language'), 'options'=>$L->getLanguageList(), 'selected'=>$site->language(), 'class'=>'', 'tip'=>$L->g('select-your-sites-language') )); echo Bootstrap::formSelect(array( 'name'=>'timezone', 'label'=>$L->g('Timezone'), 'options'=>Date::timezoneList(), 'selected'=>$site->timezone(), 'class'=>'', 'tip'=>$L->g('select-a-timezone-for-a-correct') )); echo Bootstrap::formInputText(array( 'name'=>'locale', 'label'=>$L->g('Locale'), 'value'=>$site->locale(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('with-the-locales-you-can-set-the-regional-user-interface') )); echo Bootstrap::formTitle(array('title'=>$L->g('Date and time formats'))); echo Bootstrap::formInputText(array( 'name'=>'dateFormat', 'label'=>$L->g('Date format'), 'value'=>$site->dateFormat(), 'class'=>'', 'placeholder'=>'', 'tip'=>$L->g('Current format').': '.Date::current($site->dateFormat()) )); ?> </div> <!-- Site logo tab --> <div class="tab-pane" id="logo" role="tabpanel" aria-labelledby="logo-tab"> <?php echo Bootstrap::formTitle(array('title'=>$L->g('Site logo'))); ?> <div class="container"> <div class="row"> <div class="col-lg-4 col-sm-12 p-0 pr-2"> <div class="custom-file"> <input id="jssiteLogoInputFile" class="custom-file-input" type="file" name="inputFile"> <label for="jssiteLogoInputFile" class="custom-file-label"><?php $L->p('Upload image'); ?></label> </div> <button id="jsbuttonRemoveLogo" type="button" class="btn btn-primary w-100 mt-4 mb-4"><i class="fa fa-trash"></i><?php $L->p('Remove logo') ?></button> </div> <div class="col-lg-8 col-sm-12 p-0 text-center"> <img id="jssiteLogoPreview" class="img-fluid img-thumbnail" alt="Site logo preview" src="<?php echo ($site->logo()?DOMAIN_UPLOADS.$site->logo(false).'?version='.time():HTML_PATH_CORE_IMG.'default.svg') ?>" /> </div> </div> </div> <script> $("#jsbuttonRemoveLogo").on("click", function() { bluditAjax.removeLogo(); $("#jssiteLogoPreview").attr("src", "<?php echo HTML_PATH_CORE_IMG.'default.svg' ?>"); }); $("#jssiteLogoInputFile").on("change", function() { var formData = new FormData(); formData.append('tokenCSRF', tokenCSRF); formData.append('inputFile', $(this)[0].files[0]); $.ajax({ url: HTML_PATH_ADMIN_ROOT+"ajax/logo-upload", type: "POST", data: formData, cache: false, contentType: false, processData: false }).done(function(json) { console.log(json); $("#jssiteLogoPreview").attr('src',json.absoluteURL+"?time="+Math.random()); }); }); </script> </div> <?php echo Bootstrap::formClose(); ?> <script> // Open the tab defined in the URL const anchor = window.location.hash; $(`a[href="${anchor}"]`).tab('show'); </script>