Files
eiblog/views/admin/origin/write.html
deepzz0 ddf508825c init
2016-09-29 02:59:27 +08:00

1070 lines
42 KiB
HTML

<!DOCTYPE HTML>
<html class="no-js">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>撰写新文章 - Hello World - Powered by Typecho</title>
<meta name="robots" content="noindex, nofollow">
<!-- <link rel="stylesheet" href="http://localhost/admin/css/normalize.css?v=14.10.10"> -->
<!-- <link rel="stylesheet" href="http://localhost/admin/css/grid.css?v=14.10.10"> -->
<link rel="stylesheet" href="/static/admin/style.css">
<link rel="stylesheet" href="/static/admin/background.css">
<!--[if lt IE 9]>
<script src="http://localhost/admin/js/html5shiv.js?v=14.10.10"></script>
<script src="http://localhost/admin/js/respond.js?v=14.10.10"></script>
<![endif]-->
</head>
<body>
<!--[if lt IE 9]>
<div class="message error browsehappy" role="dialog">当前网页 <strong>不支持</strong> 你正在使用的浏览器. 为了正常的访问, 请 <a href="http://browsehappy.com/">升级你的浏览器</a>.</div>
<![endif]-->
<div class="typecho-head-nav clearfix" role="navigation">
<nav id="typecho-nav-list">
<ul class="root focus">
<li class="parent"><a target="_self" href="/admin/home">控制台</a></dt>
</li>
<ul class="child">
<li target="_self" class="focus"><a href="/admin/home">概要</a></li>
<li><a target="_self" href="/admin/profile">个人设置</a></li>
<li><a target="_self" href="/admin/plugin">插件</a></li>
<li class="last"><a target="_self" href="/admin/theme">外观</a></li>
</ul>
</ul>
<ul class="root">
<li class="parent"><a target="_self" href="/admin/write">撰写</a></dt>
</li>
<ul class="child">
<li class="last"><a target="_self" href="/admin/write">撰写文章</a></li>
</ul>
</ul>
<ul class="root">
<li class="parent"><a target="_self" href="/admin/articles">管理</a></dt>
</li>
<ul class="child">
<li><a target="_self" href="/admin/articles">文章</a></li>
<li><a target="_self" href="/admin/categories">分类</a></li>
<li class="last"><a target="_self" href="/admin/tags">标签</a></li>
</ul>
</ul>
<ul class="root">
<li class="parent"><a target="_self" href="/admin/setting">设置</a></dt>
</li>
<ul class="child">
<li><a target="_self" href="/admin/setting">基本</a></li>
<li class="last"><a target="_self" href="/admin/reading">阅读</a></li>
</ul>
</ul>
</nav>
<div class="operate">
<a target="_self" title="最后登录: 7小时前" href="/admin/profile" class="author">admin</a><a target="_self" class="exit" href="/admin/login?logout=true">登出</a><a href="/">网站</a>
</div>
</div>
<div class="main">
<div class="body container">
<div class="typecho-page-title">
<h2>撰写新文章</h2>
</div>
<div class="row typecho-page-main typecho-post-area" role="form">
<form action="http://127.0.0.1:8080/admin/api/write" method="post" name="write_post">
<div class="col-mb-12 col-tb-9" role="main">
<p class="title">
<label for="title" class="sr-only">标题</label>
<input type="text" id="title" name="title" autocomplete="off" value="" placeholder="标题" class="w-100 text title" />
</p>
<p class="mono url-slug">
<label for="slug" class="sr-only">网址缩略名</label>
localhost/index.php/archives/{cid}/ </p>
<p>
<label for="text" class="sr-only">文章内容</label>
<textarea style="height: 350px" autocomplete="off" id="text" name="text" class="w-100 mono"></textarea>
</p>
<p class="submit clearfix">
<span class="right">
<input type="hidden" name="cid" value="" />
<button type="submit" name="do" value="save" id="btn-save" class="btn">保存草稿</button>
<button type="submit" name="do" value="publish" class="btn primary" id="btn-submit">发布文章</button>
<input type="hidden" name="markdown" value="1" />
</span>
</p>
</div>
<div id="edit-secondary" class="col-mb-12 col-tb-3" role="complementary">
<ul class="typecho-option-tabs clearfix">
<li class="active w-50"><a href="#tab-advance">选项</a></li>
<li class="w-50"><a href="#tab-files" id="tab-files-btn">附件</a></li>
</ul>
<div id="tab-advance" class="tab-content">
<section class="typecho-post-option" role="application">
<label for="date" class="typecho-label">发布日期</label>
<p>
<input class="typecho-date w-100" type="text" name="date" id="date" value="" />
</p>
</section>
<section class="typecho-post-option category-option">
<label class="typecho-label">分类</label>
<ul>
<li>
<input type="checkbox" id="category-1" value="1" name="category[]" />
<label for="category-1">默认分类</label>
</li>
<li>
<input type="checkbox" id="category-2" value="2" name="category[]" />
<label for="category-2">232</label>
</li>
<li>
<input type="checkbox" id="category-3" value="3" name="category[]" />
<label for="category-3">234</label>
</li>
<li>
<input type="checkbox" id="category-4" value="4" name="category[]" />
<label for="category-4">2</label>
</li>
<li>
<input type="checkbox" id="category-5" value="5" name="category[]" />
<label for="category-5">4</label>
</li>
<li>
<input type="checkbox" id="category-6" value="6" name="category[]" />
<label for="category-6">3</label>
</li>
<li>
<input type="checkbox" id="category-7" value="7" name="category[]" />
<label for="category-7">5</label>
</li>
<li>
<input type="checkbox" id="category-8" value="8" name="category[]" />
<label for="category-8">6</label>
</li>
<li>
<input type="checkbox" id="category-9" value="9" name="category[]" />
<label for="category-9">7</label>
</li>
<li>
<input type="checkbox" id="category-10" value="10" name="category[]" />
<label for="category-10">8</label>
</li>
<li>
<input type="checkbox" id="category-11" value="11" name="category[]" />
<label for="category-11">9</label>
</li>
</ul>
</section>
<section class="typecho-post-option">
<label for="token-input-tags" class="typecho-label">标签</label>
<p>
<input id="tags" name="tags" type="text" value="" class="w-100 text" />
</p>
</section>
</div>
<!-- end #tab-advance -->
<div id="tab-files" class="tab-content hidden">
<div id="upload-panel" class="p">
<div class="upload-area" draggable="true">拖放文件到这里
<br>或者 <a href="###" class="upload-file">选择文件上传</a></div>
<ul id="file-list">
</ul>
</div>
</div>
<!-- end #tab-files -->
</div>
</form>
</div>
</div>
</div>
<div class="typecho-foot" role="contentinfo">
<div class="copyright">
<a href="http://typecho.org" class="i-logo-s">Typecho</a>
<p><a href="http://typecho.org">Typecho</a> 强力驱动, 版本 1.0 (14.10.10)</p>
</div>
<nav class="resource">
<a href="http://docs.typecho.org">帮助文档</a> &bull;
<a href="http://forum.typecho.org">支持论坛</a> &bull;
<a href="https://github.com/typecho/typecho/issues">报告错误</a> &bull;
<a href="http://extends.typecho.org">资源下载</a>
</nav>
</div>
<script src="/static/admin/jquery.js"></script>
<script src="/static/admin/jquery-ui.js"></script>
<script src="/static/admin/typecho.js"></script>
<script>
(function() {
$(document).ready(function() {
// 处理消息机制
(function() {
var prefix = '86a9106ae65537651a8e456835b316ab',
cookies = {
notice: $.cookie(prefix + '__typecho_notice'),
noticeType: $.cookie(prefix + '__typecho_notice_type'),
highlight: $.cookie(prefix + '__typecho_notice_highlight')
},
path = '/';
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).slideUp(function() {
$(this).remove();
});
});
$.cookie(prefix + '__typecho_notice', null, {
path: path
});
$.cookie(prefix + '__typecho_notice_type', null, {
path: path
});
}
if (cookies.highlight) {
$('#' + cookies.highlight).effect('highlight', 1000);
$.cookie(prefix + '__typecho_notice_highlight', null, {
path: path
});
}
})();
// 导航菜单 tab 聚焦时展开下拉菜单
(function() {
$('#typecho-nav-list').find('.parent a').focus(function() {
$('#typecho-nav-list').find('.child').hide();
$(this).parents('.root').find('.child').show();
});
$('.operate').find('a').focus(function() {
$('#typecho-nav-list').find('.child').hide();
});
})();
if ($('.typecho-login').length == 0) {
$('a').each(function() {
var t = $(this),
href = t.attr('href');
if ((href && href[0] == '#') || /^http\:\/\/localhost\/admin\/.*$/.exec(href) || /^http\:\/\/localhost\/index\.php\/action\/[_a-zA-Z0-9\/]+.*$/.exec(href)) {
return;
}
t.attr('target', '_blank');
});
}
});
})();
</script>
<script>
(function() {
$(document).ready(function() {
var error = $('.typecho-option .error:first');
if (error.length > 0) {
$('html,body').scrollTop(error.parents('.typecho-option').offset().top);
}
$('form').submit(function() {
if (this.submitted) {
return false;
} else {
this.submitted = true;
}
});
$('label input[type=text]').click(function(e) {
var check = $('#' + $(this).parents('label').attr('for'));
check.prop('checked', true);
return false;
});
});
})();
</script>
<script src="http://localhost/admin/js/timepicker.js?v=14.10.10"></script>
<script src="http://localhost/admin/js/tokeninput.js?v=14.10.10"></script>
<script>
$(document).ready(function() {
// 日期时间控件
$('#date').mask('9999-99-99 99:99').datetimepicker({
currentText: '现在',
prevText: '上一月',
nextText: '下一月',
monthNames: ['一月', '二月', '三月', '四月',
'五月', '六月', '七月', '八月',
'九月', '十月', '十一月', '十二月'
],
dayNames: ['星期日', '星期一', '星期二',
'星期三', '星期四', '星期五', '星期六'
],
dayNamesShort: ['周日', '周一', '周二', '周三',
'周四', '周五', '周六'
],
dayNamesMin: ['日', '一', '二', '三',
'四', '五', '六'
],
closeText: '完成',
timeOnlyTitle: '选择时间',
timeText: '时间',
hourText: '时',
amNames: ['上午', 'A'],
pmNames: ['下午', 'P'],
minuteText: '分',
secondText: '秒',
dateFormat: 'yy-mm-dd',
hour: (new Date()).getHours(),
minute: (new Date()).getMinutes()
});
// 聚焦
$('#title').select();
// text 自动拉伸
Typecho.editorResize('text', 'http://localhost/index.php/action/ajax?do=editorResize&_=87fe343f2b5e0c110bf4be064075ed02');
// 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([], {
propertyToSearch: 'tags',
tokenValue: 'tags',
searchDelay: 0,
preventDuplicates: true,
animateDropdown: false,
hintText: '请输入标签名',
noResultsText: '此标签不存在, 按回车创建',
prePopulate: tagsPre,
onResult: function(result, query) {
if (!query) {
return result;
}
if (!result) {
result = [];
}
if (!result[0] || result[0]['id'] != query) {
result.unshift({
id: query,
tags: query
});
}
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;
}),
savedData = null;
// 自动保存
// 自动检测离开页
var lastData = form.serialize();
$(window).bind('beforeunload', function() {
if (!!savedData) {
lastData = savedData;
}
if (form.serialize() != lastData && !submitted) {
return '内容已经改变尚未保存, 您确认要离开此页面吗?';
}
});
// 控制选项和附件的切换
var fileUploadInit = false;
$('#edit-secondary .typecho-option-tabs li').click(function() {
$('#edit-secondary .typecho-option-tabs li').removeClass('active');
$(this).addClass('active');
$('.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');
console.log(val);
if ('password' == val) {
password.removeClass('hidden');
} else {
password.addClass('hidden');
}
});
// 草稿删除确认
$('.edit-draft-notice a').click(function() {
if (confirm('您确认要删除这份草稿吗?')) {
window.location.href = $(this).attr('href');
}
return false;
});
});
</script>
<script src="/static/admin/pagedown.js"></script>
<script src="/static/admin/stmd.js"></script>
<script src="/static/admin/diff.js"></script>
<script>
$(document).ready(function() {
var textarea = $('#text'),
toolbar = $('<div class="editor" id="wmd-button-bar" />').insertBefore(textarea.parent()),
preview = $('<div id="wmd-preview" class="wmd-hidetab" />').insertAfter('.editor');
var options = {},
isMarkdown = 1;
options.strings = {
bold: '加粗 <strong> Ctrl+B',
boldexample: '加粗文字',
italic: '斜体 <em> Ctrl+I',
italicexample: '斜体文字',
link: '链接 <a> Ctrl+L',
linkdescription: '请输入链接描述',
quote: '引用 <blockquote> Ctrl+Q',
quoteexample: '引用文字',
code: '代码 <pre><code> Ctrl+K',
codeexample: '请输入代码',
image: '图片 <img> Ctrl+G',
imagedescription: '请输入图片描述',
olist: '数字列表 <ol> Ctrl+O',
ulist: '普通列表 <ul> Ctrl+U',
litem: '列表项目',
heading: '标题 <h1>/<h2> Ctrl+H',
headingexample: '标题文字',
hr: '分割线 <hr> Ctrl+R',
more: '摘要分割线 <!--more--> Ctrl+M',
undo: '撤销 - Ctrl+Z',
redo: '重做 - Ctrl+Y',
redomac: '重做 - Ctrl+Shift+Z',
fullscreen: '全屏 - Ctrl+J',
exitFullscreen: '退出全屏 - Ctrl+E',
fullscreenUnsupport: '此浏览器不支持全屏操作',
imagedialog: '<p><b>插入图片</b></p><p>请在下方的输入框内输入要插入的远程图片地址</p><p>您也可以使用附件功能插入上传的本地图片</p>',
linkdialog: '<p><b>插入链接</b></p><p>请在下方的输入框内输入要插入的链接地址</p>',
ok: '确定',
cancel: '取消',
help: 'Markdown语法帮助'
};
var converter = new Typecho.Markdown,
editor = new Markdown.Editor(converter, '', options),
diffMatch = new diff_match_patch(),
last = '',
preview = $('#wmd-preview'),
mark = '@mark' + Math.ceil(Math.random() * 100000000) + '@',
span = '<span class="diff" />',
cache = {};
// 自动跟随
converter.hooks.chain('postConversion', function(html) {
// clear special html tags
html = html.replace(/<\/?(\!doctype|html|head|body|link|title|input|select|button|textarea|style|noscript)[^>]*>/ig, function(all) {
return all.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/'/g, '&#039;')
.replace(/"/g, '&quot;');
});
// clear hard breaks
html = html.replace(/\s*((?:<br>\n)+)\s*(<\/?(?:p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend|article|section|nav|aside|hgroup|header|footer|figcaption|li|dd|dt)[^\w])/gm, '$2');
if (html.indexOf('<!--more-->') > 0) {
var parts = html.split(/\s*<\!\-\-more\-\->\s*/),
summary = parts.shift(),
details = parts.join('');
html = '<div class="summary">' + summary + '</div>' + '<div class="details">' + details + '</div>';
}
var diffs = diffMatch.diff_main(last, html);
last = html;
if (diffs.length > 0) {
var stack = [],
markStr = mark;
for (var i = 0; i < diffs.length; i++) {
var diff = diffs[i],
op = diff[0],
str = diff[1]
sp = str.lastIndexOf('<'), ep = str.lastIndexOf('>');
if (op != 0) {
if (sp >= 0 && sp > ep) {
if (op > 0) {
stack.push(str.substring(0, sp) + markStr + str.substring(sp));
} else {
var lastStr = stack[stack.length - 1],
lastSp = lastStr.lastIndexOf('<');
stack[stack.length - 1] = lastStr.substring(0, lastSp) + markStr + lastStr.substring(lastSp);
}
} else {
if (op > 0) {
stack.push(str + markStr);
} else {
stack.push(markStr);
}
}
markStr = '';
} else {
stack.push(str);
}
}
html = stack.join('');
if (!markStr) {
var pos = html.indexOf(mark),
prev = html.substring(0, pos),
next = html.substr(pos + mark.length),
sp = prev.lastIndexOf('<'),
ep = prev.lastIndexOf('>');
if (sp >= 0 && sp > ep) {
html = prev.substring(0, sp) + span + prev.substring(sp) + next;
} else {
html = prev + span + next;
}
}
}
// 替换img
html = html.replace(/<(img)\s+([^>]*)\s*src="([^"]+)"([^>]*)>/ig, function(all, tag, prefix, src, suffix) {
if (!cache[src]) {
cache[src] = false;
} else {
return '<span class="cache" data-width="' + cache[src][0] + '" data-height="' + cache[src][1] + '" ' + 'style="background:url(' + src + ') no-repeat left top; width:' + cache[src][0] + 'px; height:' + cache[src][1] + 'px; display: inline-block; max-width: 100%;' + '-webkit-background-size: contain;-moz-background-size: contain;-o-background-size: contain;background-size: contain;" />';
}
return all;
});
// 替换block
html = html.replace(/<(iframe|embed)\s+([^>]*)>/ig, function(all, tag, src) {
if (src[src.length - 1] == '/') {
src = src.substring(0, src.length - 1);
}
return '<div style="background: #ddd; height: 40px; overflow: hidden; line-height: 40px; text-align: center; font-size: 12px; color: #777">' + tag + ' : ' + $.trim(src) + '</div>';
});
return html;
});
function cacheResize() {
var t = $(this),
w = parseInt(t.data('width')),
h = parseInt(t.data('height')),
ow = t.width();
t.height(h * ow / w);
}
var to;
editor.hooks.chain('onPreviewRefresh', function() {
var diff = $('.diff', preview),
scrolled = false;
if (to) {
clearTimeout(to);
}
$('img', preview).load(function() {
var t = $(this),
src = t.attr('src');
if (scrolled) {
preview.scrollTo(diff, {
offset: -50
});
}
if (!!src && !cache[src]) {
cache[src] = [this.width, this.height];
}
});
$('.cache', preview).resize(cacheResize).each(cacheResize);
var changed = $('.diff', preview).parent();
if (!changed.is(preview)) {
changed.css('background-color', 'rgba(255,230,0,0.5)');
to = setTimeout(function() {
changed.css('background-color', 'transparent');
}, 4500);
}
if (diff.length > 0) {
var p = diff.position(),
lh = diff.parent().css('line-height');
lh = !!lh ? parseInt(lh) : 0;
if (p.top < 0 || p.top > preview.height() - lh) {
preview.scrollTo(diff, {
offset: -50
});
scrolled = true;
}
}
});
var input = $('#text'),
th = textarea.height(),
ph = preview.height(),
uploadBtn = $('<button type="button" id="btn-fullscreen-upload" class="btn btn-link">' + '<i class="i-upload">附件</i></button>')
.prependTo('.submit .right')
.click(function() {
$('a', $('.typecho-option-tabs li').not('.active')).trigger('click');
return false;
});
$('.typecho-option-tabs li').click(function() {
uploadBtn.find('i').toggleClass('i-upload-active',
$('#tab-files-btn', this).length > 0);
});
editor.hooks.chain('enterFakeFullScreen', function() {
th = textarea.height();
ph = preview.height();
$(document.body).addClass('fullscreen');
var h = $(window).height() - toolbar.outerHeight();
textarea.css('height', h);
preview.css('height', h);
});
editor.hooks.chain('enterFullScreen', function() {
$(document.body).addClass('fullscreen');
var h = window.screen.height - toolbar.outerHeight();
textarea.css('height', h);
preview.css('height', h);
});
editor.hooks.chain('exitFullScreen', function() {
$(document.body).removeClass('fullscreen');
textarea.height(th);
preview.height(ph);
});
function initMarkdown() {
editor.run();
var imageButton = $('#wmd-image-button'),
linkButton = $('#wmd-link-button');
Typecho.insertFileToEditor = function(file, url, isImage) {
var button = isImage ? imageButton : linkButton;
options.strings[isImage ? 'imagename' : 'linkname'] = file;
button.trigger('click');
var checkDialog = setInterval(function() {
if ($('.wmd-prompt-dialog').length > 0) {
$('.wmd-prompt-dialog input').val(url).select();
clearInterval(checkDialog);
checkDialog = null;
}
}, 10);
};
Typecho.uploadComplete = function(file) {
Typecho.insertFileToEditor(file.title, file.url, file.isImage);
};
// 编辑预览切换
var edittab = $('.editor').prepend('<div class="wmd-edittab"><a href="#wmd-editarea" class="active">撰写</a><a href="#wmd-preview">预览</a></div>'),
editarea = $(textarea.parent()).attr("id", "wmd-editarea");
$(".wmd-edittab a").click(function() {
$(".wmd-edittab a").removeClass('active');
$(this).addClass("active");
$("#wmd-editarea, #wmd-preview").addClass("wmd-hidetab");
var selected_tab = $(this).attr("href"),
selected_el = $(selected_tab).removeClass("wmd-hidetab");
// 预览时隐藏编辑器按钮
if (selected_tab == "#wmd-preview") {
$("#wmd-button-row").addClass("wmd-visualhide");
} else {
$("#wmd-button-row").removeClass("wmd-visualhide");
}
// 预览和编辑窗口高度一致
$("#wmd-preview").outerHeight($("#wmd-editarea").innerHeight());
return false;
});
}
if (isMarkdown) {
initMarkdown();
} else {
var notice = $('<div class="message notice">这篇文章不是由Markdown语法创建的, 继续使用Markdown编辑它吗? ' + '<button class="btn btn-xs primary yes">是</button> ' + '<button class="btn btn-xs no">否</button></div>')
.hide().insertBefore(textarea).slideDown();
$('.yes', notice).click(function() {
notice.remove();
$('<input type="hidden" name="markdown" value="1" />').appendTo('.submit');
initMarkdown();
});
$('.no', notice).click(function() {
notice.remove();
});
}
});
</script>
<script src="/static/admin/moxie.js"></script>
<script src="/static/admin/plupload.js"></script>
<script>
$(document).ready(function() {
function updateAttacmentNumber() {
var btn = $('#tab-files-btn'),
balloon = $('.balloon', btn),
count = $('#file-list li .insert').length;
if (count > 0) {
if (!balloon.length) {
btn.html($.trim(btn.html()) + ' ');
balloon = $('<span class="balloon"></span>').appendTo(btn);
}
balloon.html(count);
} else if (0 == count && balloon.length > 0) {
balloon.remove();
}
}
$('.upload-area').bind({
dragenter: function() {
$(this).parent().addClass('drag');
},
dragover: function(e) {
$(this).parent().addClass('drag');
},
drop: function() {
$(this).parent().removeClass('drag');
},
dragend: function() {
$(this).parent().removeClass('drag');
},
dragleave: function() {
$(this).parent().removeClass('drag');
}
});
updateAttacmentNumber();
function fileUploadStart(file) {
$('<li id="' + file.id + '" class="loading">' + file.name + '</li>').appendTo('#file-list');
}
function fileUploadError(error) {
var file = error.file,
code = error.code,
word;
switch (code) {
case plupload.FILE_SIZE_ERROR:
word = '文件大小超过限制';
break;
case plupload.FILE_EXTENSION_ERROR:
word = '文件扩展名不被支持';
break;
case plupload.FILE_DUPLICATE_ERROR:
word = '文件已经上传过';
break;
case plupload.HTTP_ERROR:
default:
word = '上传出现错误';
break;
}
var fileError = '%s 上传失败'.replace('%s', file.name),
li, exist = $('#' + file.id);
if (exist.length > 0) {
li = exist.removeClass('loading').html(fileError);
} else {
li = $('<li>' + fileError + '<br />' + word + '</li>').appendTo('#file-list');
}
li.effect('highlight', {
color: '#FBC2C4'
}, 2000, function() {
$(this).remove();
});
}
var completeFile = null;
function fileUploadComplete(id, url, data) {
var li = $('#' + id).removeClass('loading').data('cid', data.cid)
.data('url', data.url)
.data('image', data.isImage)
.html('<input type="hidden" name="attachment[]" value="' + data.cid + '" />' + '<a class="insert" target="_blank" href="###" title="点击插入文件">' + data.title + '</a><div class="info">' + data.bytes + ' <a class="file" target="_blank" href="http://localhost/admin/media.php?cid=' + data.cid + '" title="编辑"><i class="i-edit"></i></a>' + ' <a class="delete" href="###" title="删除"><i class="i-delete"></i></a></div>')
.effect('highlight', 1000);
attachInsertEvent(li);
attachDeleteEvent(li);
updateAttacmentNumber();
if (!completeFile) {
completeFile = data;
}
}
$('#tab-files').bind('init', function() {
var uploader = new plupload.Uploader({
browse_button: $('.upload-file').get(0),
url: 'http://localhost/index.php/action/upload?_=87fe343f2b5e0c110bf4be064075ed02',
runtimes: 'html5,flash,html4',
flash_swf_url: 'http://localhost/admin/js/Moxie.swf',
drop_element: $('.upload-area').get(0),
filters: {
max_file_size: '2mb',
mime_types: [{
'title': '允许上传的文件',
'extensions': 'gif,jpg,jpeg,png,tiff,bmp'
}],
prevent_duplicates: true
},
init: {
FilesAdded: function(up, files) {
plupload.each(files, function(file) {
fileUploadStart(file);
});
completeFile = null;
uploader.start();
},
UploadComplete: function() {
if (completeFile) {
Typecho.uploadComplete(completeFile);
}
},
FileUploaded: function(up, file, result) {
if (200 == result.status) {
var data = $.parseJSON(result.response);
if (data) {
fileUploadComplete(file.id, data[0], data[1]);
return;
}
}
fileUploadError({
code: plupload.HTTP_ERROR,
file: file
});
},
Error: function(up, error) {
fileUploadError(error);
}
}
});
uploader.init();
});
function attachInsertEvent(el) {
$('.insert', el).click(function() {
var t = $(this),
p = t.parents('li');
Typecho.insertFileToEditor(t.text(), p.data('url'), p.data('image'));
return false;
});
}
function attachDeleteEvent(el) {
var file = $('a.insert', el).text();
$('.delete', el).click(function() {
if (confirm('确认要删除文件 %s 吗?'.replace('%s', file))) {
var cid = $(this).parents('li').data('cid');
$.post('http://localhost/index.php/action/contents-attachment-edit?_=87fe343f2b5e0c110bf4be064075ed02', {
'do': 'delete',
'cid': cid
},
function() {
$(el).fadeOut(function() {
$(this).remove();
updateAttacmentNumber();
});
});
}
return false;
});
}
$('#file-list li').each(function() {
attachInsertEvent(this);
attachDeleteEvent(this);
});
});
</script>
</body>
</html>