2025-01-18 09:06:54 +01:00
< ? php defined ( 'KOBLOG' ) or die ( 'Koblog CMS.' ); ?>
2018-07-12 20:03:31 +02:00
2018-10-17 22:35:30 +02:00
< ? php
// FORM START
echo Bootstrap :: formOpen ( array (
2024-06-22 16:22:05 +02:00
'id' => 'jsform' ,
'class' => 'd-flex flex-column h-100'
2018-10-17 22:35:30 +02:00
));
2024-06-22 16:22:05 +02:00
// Token CSRF
echo Bootstrap :: formInputHidden ( array (
'name' => 'tokenCSRF' ,
'value' => $security -> getTokenCSRF ()
));
// UUID
// The UUID is generated in the controller
echo Bootstrap :: formInputHidden ( array (
'name' => 'uuid' ,
'value' => $page -> uuid ()
));
// Type = published, draft, sticky, static
echo Bootstrap :: formInputHidden ( array (
'name' => 'type' ,
'value' => $page -> type ()
));
// Cover image
echo Bootstrap :: formInputHidden ( array (
'name' => 'coverImage' ,
'value' => $page -> coverImage ( false )
));
// Content
echo Bootstrap :: formInputHidden ( array (
'name' => 'content' ,
'value' => ''
));
// Current page key
echo Bootstrap :: formInputHidden ( array (
'name' => 'key' ,
'value' => $page -> key ()
));
2018-10-17 22:35:30 +02:00
?>
<!-- TOOLBAR -->
2019-09-09 20:34:50 +02:00
< div id = " jseditorToolbar " class = " mb-1 " >
2018-11-07 15:40:22 +01:00
< div id = " jseditorToolbarRight " class = " btn-group btn-group-sm float-right " role = " group " aria - label = " Toolbar right " >
2025-01-18 10:26:16 +01:00
< button type = " button " class = " btn btn-light " id = " jsmediaManagerOpenModal " data - bs - toggle = " modal " data - bs - target = " #jsmediaManagerModal " >< span class = " fa fa-image " ></ span > < ? php $L -> p ( 'Images' ) ?> </button>
2019-05-13 18:26:35 +02:00
< button type = " button " class = " btn btn-light " id = " jsoptionsSidebar " style = " z-index:30 " >< span class = " fa fa-cog " ></ span > < ? php $L -> p ( 'Options' ) ?> </button>
2018-10-17 22:35:30 +02:00
</ div >
2018-05-02 19:59:45 +02:00
2018-11-07 15:40:22 +01:00
< div id = " jseditorToolbarLeft " >
2019-01-04 14:18:40 +01:00
< button type = " button " class = " btn btn-sm btn-primary " id = " jsbuttonSave " >< ? php echo $L -> g ( 'Save' ) ?> </button>
2019-04-27 20:30:57 +02:00
< button id = " jsbuttonPreview " type = " button " class = " btn btn-sm btn-secondary " >< ? php $L -> p ( 'Preview' ) ?> </button>
2024-06-22 16:22:05 +02:00
< span id = " jsswitchButton " data - switch = " <?php echo ( $page->draft () ? 'draft' : 'publish') ?> " class = " ml-2 text-secondary switch-button " >< i class = " fa fa-square switch-icon-<?php echo ( $page->draft () ? 'draft' : 'publish') ?> " ></ i > < ? php echo ( $page -> draft () ? $L -> g ( 'Draft' ) : $L -> g ( 'Publish' )) ?> </span>
2018-10-17 22:35:30 +02:00
</ div >
2018-12-30 13:35:31 +01:00
2024-06-22 16:22:05 +02:00
< ? php if ( $page -> scheduled ()) : ?>
< div class = " alert alert-warning p-1 mt-1 mb-0 " >< ? php $L -> p ( 'scheduled' ) ?> : <?php echo $page->date(SCHEDULED_DATE_FORMAT) ?></div>
2018-12-30 13:35:31 +01:00
< ? php endif ; ?>
2018-10-17 22:35:30 +02:00
</ div >
2018-10-30 16:12:44 +01:00
< script >
2018-07-25 23:42:00 +02:00
$ ( document ) . ready ( function () {
2018-10-30 16:12:44 +01:00
$ ( " #jsoptionsSidebar " ) . on ( " click " , function () {
$ ( " #jseditorSidebar " ) . toggle ();
$ ( " #jsshadow " ) . toggle ();
2018-10-17 22:35:30 +02:00
});
2018-10-30 16:12:44 +01:00
$ ( " #jsshadow " ) . on ( " click " , function () {
$ ( " #jseditorSidebar " ) . toggle ();
$ ( " #jsshadow " ) . toggle ();
2018-07-25 23:42:00 +02:00
});
});
2018-10-30 16:12:44 +01:00
</ script >
2018-10-17 22:35:30 +02:00
2018-10-30 16:12:44 +01:00
<!-- SIDEBAR OPTIONS -->
< div id = " jseditorSidebar " >
< nav >
< div class = " nav nav-tabs " id = " nav-tab " role = " tablist " >
2025-01-18 10:26:16 +01:00
< a class = " nav-link active show " id = " nav-general-tab " data - bs - toggle = " tab " data - bs - target = " #nav-general " role = " tab " aria - controls = " general " >< ? php $L -> p ( 'General' ) ?> </a>
< a class = " nav-link " id = " nav-advanced-tab " data - bs - toggle = " tab " data - bs - target = " #nav-advanced " role = " tab " aria - controls = " advanced " >< ? php $L -> p ( 'Advanced' ) ?> </a>
2024-06-22 16:22:05 +02:00
< ? php if ( ! empty ( $site -> customFields ())) : ?>
2025-01-18 10:26:16 +01:00
< a class = " nav-link " id = " nav-custom-tab " data - bs - toggle = " tab " data - bs - target = " #nav-custom " role = " tab " aria - controls = " custom " >< ? php $L -> p ( 'Custom' ) ?> </a>
2019-09-02 18:24:34 +02:00
< ? php endif ?>
2025-01-18 10:26:16 +01:00
< a class = " nav-link " id = " nav-seo-tab " data - bs - toggle = " tab " data - bs - target = " #nav-seo " role = " tab " aria - controls = " seo " >< ? php $L -> p ( 'SEO' ) ?> </a>
2018-07-07 12:04:34 +02:00
</ div >
2018-10-30 16:12:44 +01:00
</ nav >
2018-10-30 22:26:29 +01:00
< div class = " tab-content pr-3 pl-3 pb-3 " >
2018-10-30 16:12:44 +01:00
< div id = " nav-general " class = " tab-pane fade show active " role = " tabpanel " aria - labelledby = " general-tab " >
< ? php
2024-06-22 16:22:05 +02:00
// Category
echo Bootstrap :: formSelectBlock ( array (
'name' => 'category' ,
'label' => $L -> g ( 'Category' ),
'selected' => $page -> categoryKey (),
'class' => '' ,
'emptyOption' => '- ' . $L -> g ( 'Uncategorized' ) . ' -' ,
'options' => $categories -> getKeyNameArray ()
));
// Description
echo Bootstrap :: formTextareaBlock ( array (
'name' => 'description' ,
'label' => $L -> g ( 'Description' ),
'selected' => '' ,
'class' => '' ,
'value' => $page -> description (),
'rows' => 5 ,
'placeholder' => $L -> get ( 'this-field-can-help-describe-the-content' )
));
2018-10-30 16:12:44 +01:00
?>
<!-- Cover Image -->
< ? php
2024-06-22 16:22:05 +02:00
$coverImage = $page -> coverImage ( false );
$externalCoverImage = '' ;
if ( filter_var ( $coverImage , FILTER_VALIDATE_URL )) {
$coverImage = '' ;
$externalCoverImage = $page -> coverImage ( false );
}
2018-10-30 16:12:44 +01:00
?>
< label class = " mt-4 mb-2 pb-2 border-bottom text-uppercase w-100 " >< ? php $L -> p ( 'Cover Image' ) ?> </label>
< div >
2024-06-22 16:22:05 +02:00
< img id = " jscoverImagePreview " class = " mx-auto d-block w-100 " alt = " Cover image preview " src = " <?php echo (empty( $coverImage ) ? HTML_PATH_CORE_IMG . 'default.svg' : $page->coverImage ()) ?> " />
2018-10-17 22:35:30 +02:00
</ div >
2018-10-30 16:12:44 +01:00
< div class = " mt-2 text-center " >
< button type = " button " id = " jsbuttonSelectCoverImage " class = " btn btn-primary btn-sm " >< ? php echo $L -> g ( 'Select cover image' ) ?> </button>
< button type = " button " id = " jsbuttonRemoveCoverImage " class = " btn btn-secondary btn-sm " >< ? php echo $L -> g ( 'Remove cover image' ) ?> </button>
2018-07-07 12:04:34 +02:00
</ div >
2018-10-30 16:12:44 +01:00
< script >
$ ( document ) . ready ( function () {
$ ( " #jscoverImagePreview " ) . on ( " click " , function () {
openMediaManager ();
});
$ ( " #jsbuttonSelectCoverImage " ) . on ( " click " , function () {
openMediaManager ();
});
$ ( " #jsbuttonRemoveCoverImage " ) . on ( " click " , function () {
$ ( " #jscoverImage " ) . val ( '' );
2024-06-22 16:22:05 +02:00
$ ( " #jscoverImagePreview " ) . attr ( 'src' , HTML_PATH_CORE_IMG + 'default.svg' );
2018-10-30 16:12:44 +01:00
});
});
</ script >
2018-07-07 12:04:34 +02:00
</ div >
2018-10-30 16:12:44 +01:00
< div id = " nav-advanced " class = " tab-pane fade " role = " tabpanel " aria - labelledby = " advanced-tab " >
< ? php
2024-06-22 16:22:05 +02:00
// Date
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'date' ,
'label' => $L -> g ( 'Date' ),
'placeholder' => '' ,
'value' => $page -> dateRaw (),
'tip' => $L -> g ( 'date-format-format' )
));
// Type
echo Bootstrap :: formSelectBlock ( array (
'name' => 'typeSelector' ,
'label' => $L -> g ( 'Type' ),
'selected' => $page -> type (),
'options' => array (
'published' => '- ' . $L -> g ( 'Default' ) . ' -' ,
'sticky' => $L -> g ( 'Sticky' ),
'static' => $L -> g ( 'Static' )
),
'tip' => ''
));
// Position
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'position' ,
'label' => $L -> g ( 'Position' ),
'tip' => $L -> g ( 'Field used when ordering content by position' ),
'value' => $page -> position ()
));
// Tags
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'tags' ,
'label' => $L -> g ( 'Tags' ),
'placeholder' => '' ,
'tip' => $L -> g ( 'Write the tags separated by comma' ),
'value' => $page -> tags ()
));
// Parent
try {
$options = array ();
$parentKey = $page -> parent ();
if ( ! empty ( $parentKey )) {
$parent = new Page ( $parentKey );
$options = array ( $parentKey => $parent -> title ());
2018-10-17 22:35:30 +02:00
}
2024-06-22 16:22:05 +02:00
} catch ( Exception $e ) {
// continue
}
echo Bootstrap :: formSelectBlock ( array (
'name' => 'parent' ,
'label' => $L -> g ( 'Parent' ),
'options' => $options ,
'selected' => false ,
'class' => '' ,
'tip' => $L -> g ( 'Start typing a page title to see a list of suggestions.' ),
));
2018-10-17 22:35:30 +02:00
2019-10-05 21:20:58 +02:00
?>
< script >
2024-06-22 16:22:05 +02:00
$ ( document ) . ready ( function () {
var parent = $ ( " #jsparent " ) . select2 ({
placeholder : " " ,
allowClear : true ,
theme : " bootstrap4 " ,
minimumInputLength : 2 ,
ajax : {
url : HTML_PATH_ADMIN_ROOT + " ajax/get-published " ,
data : function ( params ) {
var query = {
checkIsParent : true ,
query : params . term
}
return query ;
},
processResults : function ( data ) {
return data ;
2019-10-05 21:20:58 +02:00
}
},
2024-06-22 16:22:05 +02:00
escapeMarkup : function ( markup ) {
return markup ;
},
templateResult : function ( data ) {
var html = data . text
if ( data . type == " static " ) {
html += '<span class="badge badge-pill badge-light">' + data . type + '</span>' ;
}
return html ;
2019-10-05 21:20:58 +02:00
}
2024-06-22 16:22:05 +02:00
});
2019-10-05 21:20:58 +02:00
});
</ script >
< ? php
2024-06-22 16:22:05 +02:00
// Template
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'template' ,
'label' => $L -> g ( 'Template' ),
'placeholder' => '' ,
'value' => $page -> template (),
'tip' => $L -> g ( 'Write a template name to filter the page in the theme and change the style of the page.' )
));
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'externalCoverImage' ,
'label' => $L -> g ( 'External cover image' ),
'placeholder' => " https:// " ,
'value' => $externalCoverImage ,
'tip' => $L -> g ( 'Set a cover image from external URL, such as a CDN or some server dedicated for images.' )
));
// Username
echo Bootstrap :: formInputTextBlock ( array (
'name' => '' ,
'label' => $L -> g ( 'Author' ),
'placeholder' => '' ,
'value' => $page -> username (),
'tip' => '' ,
'disabled' => true
));
2018-10-30 16:12:44 +01:00
?>
< script >
2024-06-22 16:22:05 +02:00
$ ( document ) . ready ( function () {
// Changes in External cover image input
$ ( " #jsexternalCoverImage " ) . change ( function () {
$ ( " #jscoverImage " ) . val ( $ ( this ) . val ());
});
2018-10-30 16:12:44 +01:00
2024-06-22 16:22:05 +02:00
// Datepicker
$ ( " #jsdate " ) . datetimepicker ({
format : DB_DATE_FORMAT
});
});
2018-10-30 16:12:44 +01:00
</ script >
</ div >
2019-09-02 18:24:34 +02:00
2024-06-22 16:22:05 +02:00
< ? php if ( ! empty ( $site -> customFields ())) : ?>
< div id = " nav-custom " class = " tab-pane fade " role = " tabpanel " aria - labelledby = " custom-tab " >
< ? php
$customFields = $site -> customFields ();
foreach ( $customFields as $field => $options ) {
if ( ! isset ( $options [ 'position' ])) {
if ( $options [ 'type' ] == " string " ) {
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'custom[' . $field . ']' ,
'value' => ( isset ( $options [ 'default' ]) ? $options [ 'default' ] : '' ),
'tip' => ( isset ( $options [ 'tip' ]) ? $options [ 'tip' ] : '' ),
'label' => ( isset ( $options [ 'label' ]) ? $options [ 'label' ] : '' ),
'placeholder' => ( isset ( $options [ 'placeholder' ]) ? $options [ 'placeholder' ] : '' ),
'value' => $page -> custom ( $field )
));
} elseif ( $options [ 'type' ] == " bool " ) {
echo Bootstrap :: formCheckbox ( array (
'name' => 'custom[' . $field . ']' ,
'label' => ( isset ( $options [ 'label' ]) ? $options [ 'label' ] : '' ),
'placeholder' => ( isset ( $options [ 'placeholder' ]) ? $options [ 'placeholder' ] : '' ),
'checked' => $page -> custom ( $field ),
'labelForCheckbox' => ( isset ( $options [ 'tip' ]) ? $options [ 'tip' ] : '' )
));
}
2019-09-09 20:34:50 +02:00
}
2019-09-02 18:24:34 +02:00
}
2024-06-22 16:22:05 +02:00
?>
</ div >
2019-09-02 18:24:34 +02:00
< ? php endif ?>
2018-10-30 16:12:44 +01:00
< div id = " nav-seo " class = " tab-pane fade " role = " tabpanel " aria - labelledby = " seo-tab " >
< ? php
2024-06-22 16:22:05 +02:00
// Friendly URL
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'slug' ,
'tip' => $L -> g ( 'URL associated with the content' ),
'label' => $L -> g ( 'Friendly URL' ),
2025-01-18 09:06:54 +01:00
'placeholder' => $L -> g ( 'Leave empty for autocomplete by Koblog.' ),
2024-06-22 16:22:05 +02:00
'value' => $page -> slug ()
));
// Robots
echo Bootstrap :: formCheckbox ( array (
'name' => 'noindex' ,
'label' => 'Robots' ,
'labelForCheckbox' => $L -> g ( 'apply-code-noindex-code-to-this-page' ),
'placeholder' => '' ,
'checked' => $page -> noindex (),
'tip' => $L -> g ( 'This tells search engines not to show this page in their search results.' )
));
// Robots
echo Bootstrap :: formCheckbox ( array (
'name' => 'nofollow' ,
'label' => '' ,
'labelForCheckbox' => $L -> g ( 'apply-code-nofollow-code-to-this-page' ),
'placeholder' => '' ,
'checked' => $page -> nofollow (),
'tip' => $L -> g ( 'This tells search engines not to follow links on this page.' )
));
// Robots
echo Bootstrap :: formCheckbox ( array (
'name' => 'noarchive' ,
'label' => '' ,
'labelForCheckbox' => $L -> g ( 'apply-code-noarchive-code-to-this-page' ),
'placeholder' => '' ,
'checked' => $page -> noarchive (),
'tip' => $L -> g ( 'This tells search engines not to save a cached copy of this page.' )
));
2018-10-17 22:35:30 +02:00
?>
</ div >
</ div >
2018-10-30 16:12:44 +01:00
</ div >
2018-10-17 22:35:30 +02:00
2019-09-09 20:34:50 +02:00
<!-- Custom fields : TOP -->
< ? php
2024-06-22 16:22:05 +02:00
$customFields = $site -> customFields ();
foreach ( $customFields as $field => $options ) {
if ( isset ( $options [ 'position' ]) && ( $options [ 'position' ] == 'top' )) {
if ( $options [ 'type' ] == " string " ) {
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'custom[' . $field . ']' ,
'label' => ( isset ( $options [ 'label' ]) ? $options [ 'label' ] : '' ),
'value' => $page -> custom ( $field ),
'tip' => ( isset ( $options [ 'tip' ]) ? $options [ 'tip' ] : '' ),
'placeholder' => ( isset ( $options [ 'placeholder' ]) ? $options [ 'placeholder' ] : '' ),
'class' => 'mb-2' ,
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
));
} elseif ( $options [ 'type' ] == " bool " ) {
echo Bootstrap :: formCheckbox ( array (
'name' => 'custom[' . $field . ']' ,
'label' => ( isset ( $options [ 'label' ]) ? $options [ 'label' ] : '' ),
'placeholder' => ( isset ( $options [ 'placeholder' ]) ? $options [ 'placeholder' ] : '' ),
'checked' => $page -> custom ( $field ),
'labelForCheckbox' => ( isset ( $options [ 'tip' ]) ? $options [ 'tip' ] : '' ),
'class' => 'mb-2' ,
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
));
2019-09-09 20:34:50 +02:00
}
}
2024-06-22 16:22:05 +02:00
}
2019-09-09 20:34:50 +02:00
?>
2018-10-30 16:12:44 +01:00
<!-- Title -->
2019-09-09 20:34:50 +02:00
< div class = " form-group mb-1 " >
2024-06-22 16:22:05 +02:00
< input id = " jstitle " name = " title " type = " text " dir = " auto " class = " form-control form-control-lg rounded-0 " value = " <?php echo $page->title () ?> " placeholder = " <?php $L->p ('Enter title') ?> " >
2018-10-17 22:35:30 +02:00
</ div >
2018-10-30 16:12:44 +01:00
<!-- Editor -->
2019-05-25 08:33:14 +02:00
< textarea id = " jseditor " class = " editable h-100 " style = " " >< ? php echo $page -> contentRaw ( true ) ?> </textarea>
2018-10-30 16:12:44 +01:00
2019-09-09 20:34:50 +02:00
<!-- Custom fields : BOTTOM -->
< ? php
2024-06-22 16:22:05 +02:00
$customFields = $site -> customFields ();
foreach ( $customFields as $field => $options ) {
if ( isset ( $options [ 'position' ]) && ( $options [ 'position' ] == 'bottom' )) {
if ( $options [ 'type' ] == " string " ) {
echo Bootstrap :: formInputTextBlock ( array (
'name' => 'custom[' . $field . ']' ,
'label' => ( isset ( $options [ 'label' ]) ? $options [ 'label' ] : '' ),
'value' => $page -> custom ( $field ),
'tip' => ( isset ( $options [ 'tip' ]) ? $options [ 'tip' ] : '' ),
'placeholder' => ( isset ( $options [ 'placeholder' ]) ? $options [ 'placeholder' ] : '' ),
'class' => 'mt-2' ,
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
));
} elseif ( $options [ 'type' ] == " bool " ) {
echo Bootstrap :: formCheckbox ( array (
'name' => 'custom[' . $field . ']' ,
'label' => ( isset ( $options [ 'label' ]) ? $options [ 'label' ] : '' ),
'placeholder' => ( isset ( $options [ 'placeholder' ]) ? $options [ 'placeholder' ] : '' ),
'checked' => $page -> custom ( $field ),
'labelForCheckbox' => ( isset ( $options [ 'tip' ]) ? $options [ 'tip' ] : '' ),
'class' => 'mt-2' ,
'labelClass' => 'mb-2 pb-2 border-bottom text-uppercase w-100'
));
2019-09-09 20:34:50 +02:00
}
}
2024-06-22 16:22:05 +02:00
}
2019-09-09 20:34:50 +02:00
?>
2018-05-02 19:59:45 +02:00
</ form >
2015-05-05 03:00:01 +02:00
2018-10-17 22:35:30 +02:00
<!-- Modal for Delete page -->
< div id = " jsdeletePageModal " class = " modal " tabindex = " -1 " role = " dialog " >
< div class = " modal-dialog " >
< div class = " modal-content " >
< div class = " modal-body " >
2018-11-28 22:01:55 +01:00
< h3 >< ? php $L -> p ( 'Delete content' ) ?> </h3>
< p >< ? php $L -> p ( 'Are you sure you want to delete this page' ) ?> </p>
2018-10-17 22:35:30 +02:00
</ div >
< div class = " modal-footer " >
2018-11-28 22:01:55 +01:00
< button type = " button " class = " btn btn-link " data - dismiss = " modal " >< ? php $L -> p ( 'Cancel' ) ?> </button>
2018-10-17 22:35:30 +02:00
< button type = " button " class = " btn btn-danger " data - dismiss = " modal " id = " jsbuttonDeleteAccept " >< ? php $L -> p ( 'Delete' ) ?> </button>
</ div >
</ div >
</ div >
< script >
2024-06-22 16:22:05 +02:00
$ ( document ) . ready ( function () {
$ ( " #jsbuttonDeleteAccept " ) . on ( " click " , function () {
$ ( " #jstype " ) . val ( " delete " );
$ ( " #jscontent " ) . val ( " " );
$ ( " #jsform " ) . submit ();
});
2018-10-17 22:35:30 +02:00
});
</ script >
</ div >
2018-07-10 18:37:46 +02:00
<!-- Modal for Media Manager -->
2024-06-22 16:22:05 +02:00
< ? php include ( PATH_ADMIN_THEMES . 'booty/html/media.php' ); ?>
2018-07-10 18:37:46 +02:00
2015-05-05 03:00:01 +02:00
< script >
2024-06-22 16:22:05 +02:00
$ ( document ) . ready ( function () {
2019-02-03 14:29:37 +01:00
2024-06-22 16:22:05 +02:00
// Define function if they doesn't exist
// This helps if the user doesn't activate any plugin as editor
if ( typeof editorGetContent != " function " ) {
window . editorGetContent = function () {
return $ ( " #jseditor " ) . val ();
};
}
if ( typeof editorInsertMedia != " function " ) {
window . editorInsertMedia = function ( filename ) {
$ ( " #jseditor " ) . val ( $ ( '#jseditor' ) . val () + '<img src="' + filename + '" alt="">' );
};
}
if ( typeof editorInsertLinkedMedia != " function " ) {
window . editorInsertLinkedMedia = function ( filename , link ) {
$ ( " #jseditor " ) . val ( $ ( '#jseditor' ) . val () + '<a href="' + link + '"><img src="' + filename + '" alt=""></a>' );
};
2019-04-23 23:10:46 +02:00
}
2024-06-22 16:22:05 +02:00
// Button switch
$ ( " #jsswitchButton " ) . on ( " click " , function () {
if ( $ ( this ) . data ( " switch " ) == " publish " ) {
$ ( this ) . html ( '<i class="fa fa-square switch-icon-draft"></i> <?php $L->p(' Draft ') ?>' );
$ ( this ) . data ( " switch " , " draft " );
} else {
$ ( this ) . html ( '<i class="fa fa-square switch-icon-publish"></i> <?php $L->p(' Publish ') ?>' );
$ ( this ) . data ( " switch " , " publish " );
}
2019-05-09 19:31:55 +02:00
});
2019-04-27 20:30:57 +02:00
2024-06-22 16:22:05 +02:00
// Button preview
$ ( " #jsbuttonPreview " ) . on ( " click " , function () {
var uuid = $ ( " #jsuuid " ) . val ();
var title = $ ( " #jstitle " ) . val ();
var content = editorGetContent ();
2025-01-18 09:06:54 +01:00
var ajax = new koblogAjax ();
koblogAjax . saveAsDraft ( uuid , title , content ) . then ( function ( data ) {
var preview = window . open ( " <?php echo DOMAIN_PAGES . 'autosave-' . $page->uuid () . '?preview=' . md5('autosave-' . $page->uuid ()) ?> " , " koblog-preview " );
2024-06-22 16:22:05 +02:00
preview . focus ();
});
});
2018-10-17 22:35:30 +02:00
2024-06-22 16:22:05 +02:00
// Button Save
$ ( " #jsbuttonSave " ) . on ( " click " , function () {
// If the switch is setted to "published", get the value from the selector
if ( $ ( " #jsswitchButton " ) . data ( " switch " ) == " publish " ) {
var value = $ ( " #jstypeSelector option:selected " ) . val ();
$ ( " #jstype " ) . val ( value );
} else {
$ ( " #jstype " ) . val ( " draft " );
}
2018-10-17 22:35:30 +02:00
2024-06-22 16:22:05 +02:00
// Get the content
$ ( " #jscontent " ) . val ( editorGetContent ());
2018-05-08 23:25:18 +02:00
2024-06-22 16:22:05 +02:00
// Submit the form
$ ( " #jsform " ) . submit ();
});
2017-01-10 17:43:38 +01:00
2024-06-22 16:22:05 +02:00
// Button Save as draft
$ ( " #jsbuttonDraft " ) . on ( " click " , function () {
// Set the type as draft
$ ( " #jstype " ) . val ( " draft " );
2018-05-08 23:25:18 +02:00
2024-06-22 16:22:05 +02:00
// Get the content
$ ( " #jscontent " ) . val ( editorGetContent ());
2018-10-03 00:19:19 +02:00
2024-06-22 16:22:05 +02:00
// Submit the form
$ ( " #jsform " ) . submit ();
});
// Autosave
var currentContent = editorGetContent ();
setInterval ( function () {
2018-05-08 00:15:40 +02:00
var uuid = $ ( " #jsuuid " ) . val ();
2019-05-10 11:35:23 +02:00
var title = $ ( " #jstitle " ) . val () + " [<?php $L->p ('Autosave') ?>] " ;
2018-05-08 23:25:18 +02:00
var content = editorGetContent ();
2019-05-10 11:35:23 +02:00
// Autosave when content has at least 100 characters
2024-06-22 16:22:05 +02:00
if ( content . length < 100 ) {
2019-05-10 11:35:23 +02:00
return false ;
}
// Autosave only when the user change the content
2024-06-22 16:22:05 +02:00
if ( currentContent != content ) {
2018-10-30 16:17:15 +01:00
currentContent = content ;
2025-01-18 09:06:54 +01:00
koblogAjax . saveAsDraft ( uuid , title , content ) . then ( function ( data ) {
2024-06-22 16:22:05 +02:00
if ( data . status == 0 ) {
2019-05-10 11:35:23 +02:00
showAlert ( " <?php $L->p ('Autosave') ?> " );
2019-05-09 19:31:55 +02:00
}
});
2018-10-30 16:17:15 +01:00
}
2024-06-22 16:22:05 +02:00
}, 1000 * 60 * AUTOSAVE_INTERVAL );
2018-05-08 00:15:40 +02:00
2024-06-22 16:22:05 +02:00
});
2018-05-02 19:59:45 +02:00
</ script >