| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 | <?php if(!defined('__TYPECHO_ADMIN__')) exit; ?><?php \Typecho\Plugin::factory('admin/write-js.php')->write(); ?><?php \Widget\Metas\Tag\Cloud::alloc('sort=count&desc=1&limit=200')->to($tags); ?><script src="<?php $options->adminStaticUrl('js', 'timepicker.js'); ?>"></script><script src="<?php $options->adminStaticUrl('js', 'tokeninput.js'); ?>"></script><script>$(document).ready(function() {    // 日期时间控件    $('#date').mask('9999-99-99 99:99').datetimepicker({        currentText     :   '<?php _e('现在'); ?>',        prevText        :   '<?php _e('上一月'); ?>',        nextText        :   '<?php _e('下一月'); ?>',        monthNames      :   ['<?php _e('一月'); ?>', '<?php _e('二月'); ?>', '<?php _e('三月'); ?>', '<?php _e('四月'); ?>',            '<?php _e('五月'); ?>', '<?php _e('六月'); ?>', '<?php _e('七月'); ?>', '<?php _e('八月'); ?>',            '<?php _e('九月'); ?>', '<?php _e('十月'); ?>', '<?php _e('十一月'); ?>', '<?php _e('十二月'); ?>'],        dayNames        :   ['<?php _e('星期日'); ?>', '<?php _e('星期一'); ?>', '<?php _e('星期二'); ?>',            '<?php _e('星期三'); ?>', '<?php _e('星期四'); ?>', '<?php _e('星期五'); ?>', '<?php _e('星期六'); ?>'],        dayNamesShort   :   ['<?php _e('周日'); ?>', '<?php _e('周一'); ?>', '<?php _e('周二'); ?>', '<?php _e('周三'); ?>',            '<?php _e('周四'); ?>', '<?php _e('周五'); ?>', '<?php _e('周六'); ?>'],        dayNamesMin     :   ['<?php _e('日'); ?>', '<?php _e('一'); ?>', '<?php _e('二'); ?>', '<?php _e('三'); ?>',            '<?php _e('四'); ?>', '<?php _e('五'); ?>', '<?php _e('六'); ?>'],        closeText       :   '<?php _e('完成'); ?>',        timeOnlyTitle   :   '<?php _e('选择时间'); ?>',        timeText        :   '<?php _e('时间'); ?>',        hourText        :   '<?php _e('时'); ?>',        amNames         :   ['<?php _e('上午'); ?>', 'A'],        pmNames         :   ['<?php _e('下午'); ?>', 'P'],        minuteText      :   '<?php _e('分'); ?>',        secondText      :   '<?php _e('秒'); ?>',        dateFormat      :   'yy-mm-dd',        timezone        :   <?php $options->timezone(); ?> / 60,        hour            :   (new Date()).getHours(),        minute          :   (new Date()).getMinutes()    });    // 聚焦    $('#title').select();    // text 自动拉伸    Typecho.editorResize('text', '<?php $security->index('/action/ajax?do=editorResize'); ?>');    // tag autocomplete 提示    var tags = $('#tags'), tagsPre = [];        if (tags.length > 0) {        var items = tags.val().split(','), result = [];        for (var i = 0; i < items.length; i ++) {            var tag = items[i];            if (!tag) {                continue;            }            tagsPre.push({                id      :   tag,                tags    :   tag            });        }        tags.tokenInput(<?php         $data = array();        while ($tags->next()) {            $data[] = array(                'id'    =>  $tags->name,                'tags'  =>  $tags->name            );        }        echo json_encode($data);        ?>, {            propertyToSearch:   'tags',            tokenValue      :   'tags',            searchDelay     :   0,            preventDuplicates   :   true,            animateDropdown :   false,            hintText        :   '<?php _e('请输入标签名'); ?>',            noResultsText   :   '<?php _e('此标签不存在, 按回车创建'); ?>',            prePopulate     :   tagsPre,            onResult        :   function (result, query, val) {                if (!query) {                    return result;                }                if (!result) {                    result = [];                }                if (!result[0] || result[0]['id'] != query) {                    result.unshift({                        id      :   val,                        tags    :   val                    });                }                return result.slice(0, 5);            }        });        // tag autocomplete 提示宽度设置        $('#token-input-tags').focus(function() {            var t = $('.token-input-dropdown'),                offset = t.outerWidth() - t.width();            t.width($('.token-input-list').outerWidth() - offset);        });    }    // 缩略名自适应宽度    var slug = $('#slug');    if (slug.length > 0) {        var wrap = $('<div />').css({            'position'  :   'relative',            'display'   :   'inline-block'        }),        justifySlug = $('<pre />').css({            'display'   :   'block',            'visibility':   'hidden',            'height'    :   slug.height(),            'padding'   :   '0 2px',            'margin'    :   0        }).insertAfter(slug.wrap(wrap).css({            'left'      :   0,            'top'       :   0,            'minWidth'  :   '5px',            'position'  :   'absolute',            'width'     :   '100%'        })), originalWidth = slug.width();        function justifySlugWidth() {            var val = slug.val();            justifySlug.text(val.length > 0 ? val : '     ');        }        slug.bind('input propertychange', justifySlugWidth);        justifySlugWidth();    }    // 原始的插入图片和文件    Typecho.insertFileToEditor = function (file, url, isImage) {        var textarea = $('#text'), sel = textarea.getSelection(),            html = isImage ? '<img src="' + url + '" alt="' + file + '" />'                : '<a href="' + url + '">' + file + '</a>',            offset = (sel ? sel.start : 0) + html.length;        textarea.replaceSelection(html);        textarea.setSelection(offset, offset);    };    var submitted = false, form = $('form[name=write_post],form[name=write_page]').submit(function () {        submitted = true;    }), formAction = form.attr('action'),        idInput = $('input[name=cid]'),        cid = idInput.val(),        draft = $('input[name=draft]'),        draftId = draft.length > 0 ? draft.val() : 0,        btnSave = $('#btn-save').removeAttr('name').removeAttr('value'),        btnSubmit = $('#btn-submit').removeAttr('name').removeAttr('value'),        btnPreview = $('#btn-preview'),        doAction = $('<input type="hidden" name="do" value="publish" />').appendTo(form),        locked = false,        changed = false,        autoSave = $('<span id="auto-save-message" class="left"></span>').prependTo('.submit'),        lastSaveTime = null;    $(':input', form).bind('input change', function (e) {        var tagName = $(this).prop('tagName');        if (tagName.match(/(input|textarea)/i) && e.type == 'change') {            return;        }        changed = true;    });    form.bind('field', function () {        changed = true;    });    // 发送保存请求    function saveData(cb) {        function callback(o) {            lastSaveTime = o.time;            cid = o.cid;            draftId = o.draftId;            idInput.val(cid);            autoSave.text('<?php _e('已保存'); ?>' + ' (' + o.time + ')').effect('highlight', 1000);            locked = false;            btnSave.removeAttr('disabled');            btnPreview.removeAttr('disabled');            if (!!cb) {                cb(o)            }        }        changed = false;        btnSave.attr('disabled', 'disabled');        btnPreview.attr('disabled', 'disabled');        autoSave.text('<?php _e('正在保存'); ?>');        if (typeof FormData !== 'undefined') {            var data = new FormData(form.get(0));            data.append('do', 'save');            $.ajax({                url: formAction,                processData: false,                contentType: false,                type: 'POST',                data: data,                success: callback            });        } else {            var data = form.serialize() + '&do=save';            $.post(formAction, data, callback, 'json');        }    }    // 计算夏令时偏移    var dstOffset = (function () {        var d = new Date(),            jan = new Date(d.getFullYear(), 0, 1),            jul = new Date(d.getFullYear(), 6, 1),            stdOffset = Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());        return stdOffset - d.getTimezoneOffset();    })();        if (dstOffset > 0) {        $('<input name="dst" type="hidden" />').appendTo(form).val(dstOffset);    }    // 时区    $('<input name="timezone" type="hidden" />').appendTo(form).val(- (new Date).getTimezoneOffset() * 60);    // 自动保存<?php if ($options->autoSave): ?>    var autoSaveOnce = !!cid;    function autoSaveListener () {        setInterval(function () {            if (changed && !locked) {                locked = true;                saveData();            }        }, 10000);    }    if (autoSaveOnce) {        autoSaveListener();    }    $('#text').bind('input propertychange', function () {        if (!locked) {            autoSave.text('<?php _e('尚未保存'); ?>' + (lastSaveTime ? ' (<?php _e('上次保存时间'); ?>: ' + lastSaveTime + ')' : ''));        }        if (!autoSaveOnce) {            autoSaveOnce = true;            autoSaveListener();        }    });<?php endif; ?>    // 自动检测离开页    $(window).bind('beforeunload', function () {        if (changed && !submitted) {            return '<?php _e('内容已经改变尚未保存, 您确认要离开此页面吗?'); ?>';        }    });    // 预览功能    var isFullScreen = false;    function previewData(cid) {        isFullScreen = $(document.body).hasClass('fullscreen');        $(document.body).addClass('fullscreen preview');        var frame = $('<iframe frameborder="0" class="preview-frame preview-loading"></iframe>')            .attr('src', './preview.php?cid=' + cid)            .attr('sandbox', 'allow-same-origin allow-scripts')            .appendTo(document.body);        frame.load(function () {            frame.removeClass('preview-loading');        });        frame.height($(window).height() - 53);    }    function cancelPreview() {        if (submitted) {            return;        }        if (!isFullScreen) {            $(document.body).removeClass('fullscreen');        }        $(document.body).removeClass('preview');        $('.preview-frame').remove();    };    $('#btn-cancel-preview').click(cancelPreview);    $(window).bind('message', function (e) {        if (e.originalEvent.data == 'cancelPreview') {            cancelPreview();        }    });    btnPreview.click(function () {        if (changed) {            locked = true;            if (confirm('<?php _e('修改后的内容需要保存后才能预览, 是否保存?'); ?>')) {                saveData(function (o) {                    previewData(o.draftId);                });            } else {                locked = false;            }        } else if (!!draftId) {            previewData(draftId);        } else if (!!cid) {            previewData(cid);        }    });    btnSave.click(function () {        doAction.attr('value', 'save');    });    btnSubmit.click(function () {        doAction.attr('value', 'publish');    });    // 控制选项和附件的切换    var fileUploadInit = false;    $('#edit-secondary .typecho-option-tabs li').click(function() {        $('#edit-secondary .typecho-option-tabs li').removeClass('active');        $(this).addClass('active');        $(this).parents('#edit-secondary').find('.tab-content').addClass('hidden');                var selected_tab = $(this).find('a').attr('href'),            selected_el = $(selected_tab).removeClass('hidden');        if (!fileUploadInit) {            selected_el.trigger('init');            fileUploadInit = true;        }        return false;    });    // 高级选项控制    $('#advance-panel-btn').click(function() {        $('#advance-panel').toggle();        return false;    });    // 自动隐藏密码框    $('#visibility').change(function () {        var val = $(this).val(), password = $('#post-password');        if ('password' == val) {            password.removeClass('hidden');        } else {            password.addClass('hidden');        }    });        // 草稿删除确认    $('.edit-draft-notice a').click(function () {        if (confirm('<?php _e('您确认要删除这份草稿吗?'); ?>')) {            window.location.href = $(this).attr('href');        }        return false;    });});</script>
 |