var App_post = {};
var $form = null;
function init_post(obj){
$form = $('#form-post');
if(obj.recover_draft == "true"){
$form.css('opacity',0).before('
'+lang.mgs_recover+'
');
}
var _draft_inited = false;
var class_translate = ".translate-item";
var post_id = obj.post_id;
var post_draft_id = obj.post_draft_id;
var post_status = obj.post_status;
var _post_path = obj._post_path;
var _drafts_path = obj._drafts_path;
var _posts_path = obj._posts_path;
var _ajax_path = obj._ajax_path;
var _post_tags_path = obj._post_tags_path;
App_post.save_draft_ajax = function(callback){
_draft_inited = true;
var data = $form.serializeObject();
data._method = post_draft_id ? 'patch': 'post';
data.post_id = post_id;
if(data.post.title && $form.data("hash") != get_hash_form()){
$.ajax({
type: 'POST',
url: _drafts_path,
data: data,
success: function(res){
if(res.error){
$.fn.alert({type: 'error', title: res.error.join(", "), icon: "times"})
}else{
if(res._drafts_path) _drafts_path = res._drafts_path
post_draft_id = res.draft.id
$("#post_draft_id").val(post_draft_id);
}
if(callback) callback(res);
},
dataType: 'json',
async:false
});
}
};
App_post.save_draft = function(){
App_post.save_draft_ajax(function(){
$form.data("submitted", 1);
location.href = _posts_path+'?notice='+lang.post_draft
});
}
var t = setInterval(function(){
App_post.save_draft_ajax();
}, 1*60*1000);
window.save_draft = App_post.save_draft_ajax;
if($(".title-post"+class_translate).size() == 0) class_translate = '';
$(".title-post"+class_translate).each(function(){
var $this = $(this);
if(!$this.hasClass('sluged')){
if(class_translate){
var lng = $this.attr("name").match(/-(.*)-/i).pop();
var $input_slug = $('.slug-post'+class_translate+'[name^="translation-'+lng+'"]')
var post_path = _post_path.replace('____', lng)
}else{
var $input_slug = $('.slug-post');
var post_path = _post_path.replace('/____', '');
}
var $link = $('').hide();
$this.addClass('sluged');
$this.after($link)
function set_slug(slug){
$link.show().find('.sl-link').html(post_path.replace('__-__', '' + slug + ''))
$link.find('.btn-preview').attr('href', post_path.replace('__-__', slug ) + '?draft_id='+post_draft_id)
$input_slug.trigger('change_in');
set_meta_slug();
}
var xhr = null;
function ajax_set_slug(slug){
if(xhr) xhr.abort();
xhr = $.ajax({
type: "POST",
url: _ajax_path,
data: {method: 'exist_slug', slug: slug, post_id: post_id},
success: function(res){
if(res.index > 0){
$input_slug.addClass('slugify-locked').val(res.slug);
set_slug(res.slug)
}
}
});
}
function set_meta_slug(){
$('#meta_slug').val($('.slug-post'+class_translate).map(function(){return this.value;}).get().join(","));
}
var slug_tmp = null;
$input_slug.slugify($this, {
change: function(slug) {
slug_tmp = slug;
set_slug(slug);
}
}
);
$this.change(function(){
if(slug_tmp) ajax_set_slug(slug_tmp);
if(!_draft_inited) App_post.save_draft_ajax();
});
if($input_slug.val()){
set_slug($input_slug.val());
if(post_status == "published") $link.find('.btn-view').show().attr('href', post_path.replace('__-__', $input_slug.val() ))
}
$link.find('.btn-preview').click(function(){
var href = $(this).attr('href');
App_post.save_draft_ajax();
var ar = href.split("draft_id=");
ar[1] = post_draft_id;
$(this).attr('href', ar.join("draft_id="))
});
$link.find('.btn-edit').click(function(){ log(lang);
var $btn = $(this);
var $btn_edit = $(''+lang.accept+' '+lang.cancel+'');
var $label = $link.find('.sl-url');
var $input = $("");
$label.hide().after($input);
$btn.hide().after($btn_edit);
$input.val($label.text());
function set_delete(){
$label.show();
$btn.show();
$input.remove();
$btn_edit.remove();
}
$btn_edit.filter('.btn-cancel').click(function(){
set_delete();
set_meta_slug()
return false;
});
$btn_edit.filter('.btn-edit').click(function(){
var value_new_slug = slugFunc($input.val());
if(value_new_slug){
$input_slug.addClass('slugify-locked').val(value_new_slug);
ajax_set_slug(value_new_slug)
set_slug(value_new_slug)
set_delete();
}
return false;
});
return false;
});
}
});
tinymce.init($.extend({}, DATA.tiny_mce.advanced, {selector: '.tinymce_textarea:not(.translated-item)', language: CURRENT_LOCALE, height: '480px', onPostRender: onEditorPostRender}));
$form.validate({ focusInvalid: true, ignore: ".translated-item", errorPlacement: function (a,b) {
if(b.parent().hasClass('form-group')){
b.parent().addClass('has-error').append(a.addClass('help-block'));
}else if(b.parent().hasClass('tab-pane')){ // tabs
var parent = b.parent();
$("a[href='#"+ parent.attr('id') +"']").addClass('has-error').trigger('click');
parent.addClass('has-error').append(a.addClass('help-block'));
}else{
if(b.attr('name') == 'categories[]')
b.parent().before(a.addClass('help-block')).parent().addClass('has-error');
else
b.parent().after(a.addClass('help-block')).parent().addClass('has-error');
}
}, success: function(error, element){
$(element).parent().removeClass('has-error').parent().removeClass('has-error')
if($(element).parent().hasClass('tab-pane')) $("a[href='#"+ $(element).parent().attr('id') +"']").removeClass('has-error');
} });
/*
* skip translation inputs
submitHandler: function(form){
jQuery(form).find(".translate-item").prop("disabled", false).attr("disabled", "disabled");
form.submit();
}
* */
$("#post_status").change(function(){
$('#post-actions .btn[data-type]').hide();
$('#post-actions .btn[data-type="'+ $(this).val() +'"]').show();
})
// here all later actions
var form_later_actions = function(){
/*********** scroller (fix buttons position) ***************/
var panel_scroll = $("#form-post > .content-frame-right");
var fixed_position = panel_scroll.children(":first");
var fixed_offset_top = panel_scroll.offset().top;
$(window).scroll(function(){ if($(window).width() < 1024){ fixed_position.css({position: "", width: ""}); panel_scroll.css("padding-top", ""); return; } if ($(window).scrollTop() >= fixed_offset_top+10){ fixed_position.css({position: "fixed", width: "279px", top: 0, "z-index": 4}); panel_scroll.css("padding-top", fixed_position.height()+20) } else { fixed_position.css({position: "", width: "auto"}); panel_scroll.css("padding-top", "") }}).resize(function(){
if($(window).width() >= 1024){ panel_scroll.show(); }
});
/*********** end scroller buttons ***************/
/********** post tagEditor ******************/
var post_tags = $.ajax({
type: 'GET',
url: _post_tags_path,
dataType: "json",
async: false
}).responseText;
$form.find(".tagsinput").tagEditor({
autocomplete: { delay: 0, position: { collision: 'flip' }, source: $.parseJSON(post_tags) },
forceLowercase: false,
placeholder: lang.add_tag + '...'
});
/********** end post tagEditor **************/
////// thumbnail
$form.on("click", ".gallery-item-remove", function(){
$('#feature-image').hide();
$('#feature-image input').val('');
return false;
});
// sidebar toggle
$("#admin_content .content-frame-right-toggle").on("click",function(){ $(".content-frame-right").is(":visible") ? $(".content-frame-right").hide() : $(".content-frame-right").show(); });
/*********** control save changes before unload form. ***************/
$form.submit(function(){ if($(this).valid()) $form.data("submitted", 1); });
window.onbeforeunload = function (){
if($form.data("submitted"))
return;
if($form.data("hash") != get_hash_form()){
return "You sure to leave the page without saving changes?";
}
if(!$form.data("submitted"))
return;
return "You sure to leave the page without saving changes?";
};
}
setTimeout(form_later_actions, 1000);
// wait for render editors
var wait_render;
function onEditorPostRender(editor){
if(wait_render) clearTimeout(wait_render);
wait_render = setTimeout(function(){
$form.data("hash", get_hash_form());
}, 1000);
}
function get_hash_form(){
for(editor in tinymce.editors){
editor = tinymce.editors[editor];
var i = $("#"+editor.id).val(tinymce.get(editor.id).getContent()).trigger("change");
}
return $form.serialize();
}
if(obj.recover_draft == "true"){
$form.data("validator").cancelSubmit = true;
$('#post_status').val('published');
$form.submit();
}
}