* Add feed widget * add feed render * Add CommentPage widget * New theme (#1390) * 调整忽略目录 * add theme * fix theme scss build Co-authored-by: fen <f3nb0x@gmail.com> * s/is_writeable/is_writable/g * New upgrade method * merge new fixes from master * add pgsql ssl mode support (ref #1600) (#1623) * Feat/code refactor (#1626) * remove all magic methods, add type for class properties * refactor codes * fix all * refactor code * fix type * fix all * fix request is method * fix all * fix router * fix get page * fix 1.3.0 upgrade * [feat] support high resolution avatar * fix types in i18n component * Implement Ctrl+S or Command+S for save draft (#1628) * Implement Ctrl+S or Command+S for save draft * rename * add Typecho.savePost * fix upload file size * add new uploader * replace new uploader * fix textarea change * fix preview * refactor post edit * fix issue * fix page edit --------- Co-authored-by: joyqi <joyqi@segmentfault.com> Co-authored-by: joyqi <magike.net@gmail.com> * fix #1632 * Add svg to image types * Feat/tree pages (#1646) * add tree trait * finish category tree trait * support select fields * fix select fields * refactor admin trait * fix draft status * Add new contents type "revision" * minor refactor * add more tree view abstracts * add tree trait to pages * get ready for tree view pages * improve page edit * fix revision * fix slug * add router params delegate * fix params delegate * fix * fix * fix all * fix all * fix tree * fix page link * fix feed * fix page * fix permalink * fix permalink input * fix offset query * Support IDN (#1629) * Support IDN * use js * Optimize code * Optimize code * fix URL script * remove unnecessary use --------- Co-authored-by: joyqi <joyqi@segmentfault.com> * fix input element * fix #1651, close #1653 * Use json instead of serialize (#1624) * Use json instead of serialize * Fix Upgrade code * add tree trait * finish category tree trait * support select fields * fix select fields * refactor admin trait * fix draft status * Add new contents type "revision" * minor refactor * add more tree view abstracts * add tree trait to pages * get ready for tree view pages * improve page edit * fix revision * fix slug * add router params delegate * fix params delegate * fix * fix * fix all * fix all * fix tree * fix page link * fix feed * fix page * fix permalink * fix permalink input * fix offset query * Fix typo * remove proxy methods * remove unnecessary useage --------- Co-authored-by: joyqi <joyqi@segmentfault.com> Co-authored-by: joyqi <magike.net@gmail.com> * Fix Prevent XSS vulnerability in default theme (#1654) * Fix Prevent XSS vulnerability in default theme * Update var/Typecho/Db/Adapter/Pdo.php * fix the getter --------- Co-authored-by: joyqi <joyqi@segmentfault.com> * add throwCallback to widget response * fix: cut down fields when selecting recent posts * fix typo errors * fix typo errors * fix http client cookie * add throw finish * fix theme lang * fix default theme * fix query * add open graph and twitter card support add canonical link * fix canonical link meta * fix theme classic-22 * remove unnecessary scss file when packaging * init plugin signal * improve: remove feather-icon js file * fix: typo * improve: post detail layout * fix tags saving * improve: nav search * fix: theme screenshot * fix: theme page layout * remove php 7.2/7.3 env --------- Co-authored-by: fen <f3nb0x@gmail.com> Co-authored-by: Lu Fei <52o@qq52o.cn>
139 lines
5.7 KiB
PHP
139 lines
5.7 KiB
PHP
<?php if(!defined('__TYPECHO_ADMIN__')) exit; ?>
|
|
<script src="<?php $options->adminStaticUrl('js', 'jquery.js'); ?>"></script>
|
|
<script src="<?php $options->adminStaticUrl('js', 'jquery-ui.js'); ?>"></script>
|
|
<script src="<?php $options->adminStaticUrl('js', 'typecho.js'); ?>"></script>
|
|
<script>
|
|
(function () {
|
|
$(document).ready(function() {
|
|
// 处理消息机制
|
|
(function () {
|
|
var prefix = '<?php echo \Typecho\Cookie::getPrefix(); ?>',
|
|
cookies = {
|
|
notice : $.cookie(prefix + '__typecho_notice'),
|
|
noticeType : $.cookie(prefix + '__typecho_notice_type'),
|
|
highlight : $.cookie(prefix + '__typecho_notice_highlight')
|
|
},
|
|
path = '<?php echo \Typecho\Cookie::getPath(); ?>',
|
|
domain = '<?php echo \Typecho\Cookie::getDomain(); ?>',
|
|
secure = <?php echo json_encode(\Typecho\Cookie::getSecure()); ?>;
|
|
|
|
if (!!cookies.notice && 'success|notice|error'.indexOf(cookies.noticeType) >= 0) {
|
|
var head = $('.typecho-head-nav'),
|
|
p = $('<div class="message popup ' + cookies.noticeType + '">'
|
|
+ '<ul><li>' + $.parseJSON(cookies.notice).join('</li><li>')
|
|
+ '</li></ul></div>'), offset = 0;
|
|
|
|
if (head.length > 0) {
|
|
p.insertAfter(head);
|
|
offset = head.outerHeight();
|
|
} else {
|
|
p.prependTo(document.body);
|
|
}
|
|
|
|
function checkScroll () {
|
|
if ($(window).scrollTop() >= offset) {
|
|
p.css({
|
|
'position' : 'fixed',
|
|
'top' : 0
|
|
});
|
|
} else {
|
|
p.css({
|
|
'position' : 'absolute',
|
|
'top' : offset
|
|
});
|
|
}
|
|
}
|
|
|
|
$(window).scroll(function () {
|
|
checkScroll();
|
|
});
|
|
|
|
checkScroll();
|
|
|
|
p.slideDown(function () {
|
|
var t = $(this), color = '#C6D880';
|
|
|
|
if (t.hasClass('error')) {
|
|
color = '#FBC2C4';
|
|
} else if (t.hasClass('notice')) {
|
|
color = '#FFD324';
|
|
}
|
|
|
|
t.effect('highlight', {color : color})
|
|
.delay(5000).fadeOut(function () {
|
|
$(this).remove();
|
|
});
|
|
});
|
|
|
|
$.cookie(prefix + '__typecho_notice', null, {path : path, domain: domain, secure: secure});
|
|
$.cookie(prefix + '__typecho_notice_type', null, {path : path, domain: domain, secure: secure});
|
|
}
|
|
|
|
if (cookies.highlight) {
|
|
$('#' + cookies.highlight).effect('highlight', 1000);
|
|
$.cookie(prefix + '__typecho_notice_highlight', null, {path : path, domain: domain, secure: secure});
|
|
}
|
|
})();
|
|
|
|
|
|
// 导航菜单 tab 聚焦时展开下拉菜单
|
|
const menuBar = $('.menu-bar').click(function () {
|
|
const nav = $(this).next('#typecho-nav-list');
|
|
if (!$(this).toggleClass('focus').hasClass('focus')) {
|
|
nav.removeClass('expanded noexpanded');
|
|
}
|
|
});
|
|
|
|
$('.main, .typecho-foot').on('click touchstart', function () {
|
|
if (menuBar.hasClass('focus')) {
|
|
menuBar.trigger('click');
|
|
}
|
|
});
|
|
|
|
$('#typecho-nav-list ul.root').each(function () {
|
|
const ul = $(this), nav = ul.parent();
|
|
let focused = false;
|
|
|
|
ul.on('click touchend', '.parent a', function (e) {
|
|
nav.removeClass('noexpanded').addClass('expanded');
|
|
if ($(window).width() < 576 && e.type == 'click') {
|
|
return false;
|
|
}
|
|
}).find('.child')
|
|
.append($('<li class="return"><a><?php _e('返回'); ?></a></li>').click(function () {
|
|
nav.removeClass('expanded').addClass('noexpanded');
|
|
return false;
|
|
}));
|
|
|
|
$('a', ul).focus(function () {
|
|
ul.addClass('expanded');
|
|
focused = true;
|
|
}).blur(function () {
|
|
focused = false;
|
|
|
|
setTimeout(function () {
|
|
if (!focused) {
|
|
ul.removeClass('expanded');
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
if ($('.typecho-login').length == 0) {
|
|
$('a').each(function () {
|
|
var t = $(this), href = t.attr('href');
|
|
|
|
if ((href && href[0] == '#')
|
|
|| /^<?php echo preg_quote($options->adminUrl, '/'); ?>.*$/.exec(href)
|
|
|| /^<?php echo substr(preg_quote(\Typecho\Common::url('s', $options->index), '/'), 0, -1); ?>action\/[_a-zA-Z0-9\/]+.*$/.exec(href)) {
|
|
return;
|
|
}
|
|
|
|
t.attr('target', '_blank')
|
|
.attr('rel', 'noopener noreferrer');
|
|
});
|
|
}
|
|
});
|
|
})();
|
|
</script>
|