forked from mirror/MrDoc
236 lines
7.4 KiB
JavaScript
236 lines
7.4 KiB
JavaScript
self.title = $('#titleinp'); //popup页面的标题栏
|
||
layer = layui.layer;
|
||
form = layui.form;
|
||
|
||
//点击关闭按钮
|
||
$('#closebtn').click(function(e) {
|
||
parent.postMessage({
|
||
name: 'closefrommrdocpopup'
|
||
}, '*');
|
||
return false;
|
||
});
|
||
|
||
//点击重置按钮
|
||
$('#resetbtn').click(function(e) {
|
||
self.editor.setValue('')
|
||
parent.postMessage({
|
||
name: 'resetfrommrdocpopup'
|
||
}, '*');
|
||
});
|
||
|
||
// 点击保存按钮
|
||
$("#savebtn").click(function(e){
|
||
layer.load(1)
|
||
var item = {
|
||
title : self.title.val(),//标题
|
||
pid : $("#projects").val(), // 文集ID
|
||
doc : self.editor.getValue()
|
||
}
|
||
// console.log(item)
|
||
if(item.pid == ''){ // 如果文集为空,消息提示
|
||
layer.closeAll('loading');
|
||
layer.msg("必须选择文集")
|
||
return
|
||
}
|
||
//发送请求到background
|
||
chrome.runtime.sendMessage({
|
||
name: 'savedocfrompopup',
|
||
data: item
|
||
});
|
||
});
|
||
|
||
//粘贴上传图片
|
||
$("#notecontentwrap").on('paste',function(ev){
|
||
var data = ev.clipboardData;
|
||
var items = (event.clipboardData || event.originalEvent.clipboardData).items;
|
||
for (var index in items) {
|
||
var item = items[index];
|
||
if (item.kind === 'file') {
|
||
layer.load(1);
|
||
var blob = item.getAsFile();
|
||
var reader = new FileReader();
|
||
reader.onload = function (event) {
|
||
var base64 = event.target.result;
|
||
//发送请求到background
|
||
chrome.runtime.sendMessage({
|
||
name: 'pasteimage',
|
||
data: base64
|
||
});
|
||
}; // data url!
|
||
var url = reader.readAsDataURL(blob);
|
||
}
|
||
}
|
||
});
|
||
|
||
//鼠标选择 - 2020-03-15自定义
|
||
// $("#mouse-select").click(function(){
|
||
// var t = $("#mouse-select").prop('checked');
|
||
// console.log(t)
|
||
// if(t){
|
||
// parent.postMessage({
|
||
// name: 'showinspectorfrommrdocpopup'
|
||
// }, '*');
|
||
// }else{
|
||
// parent.postMessage({
|
||
// name: 'hideinspectorfrommrdocpopup'
|
||
// }, '*');
|
||
// }
|
||
// });
|
||
|
||
// 监听鼠标选择开关
|
||
form.on('switch()', function(data){
|
||
// console.log(data.elem); //得到checkbox原始DOM对象
|
||
// console.log(data.elem.checked); //开关是否开启,true或者false
|
||
if(data.elem.checked){
|
||
parent.postMessage({
|
||
name: 'showinspectorfrommrdocpopup'
|
||
}, '*');
|
||
}else{
|
||
parent.postMessage({
|
||
name: 'hideinspectorfrommrdocpopup'
|
||
}, '*');
|
||
}
|
||
// console.log(data.value); //开关value值,也可以通过data.elem.value得到
|
||
// console.log(data.othis); //得到美化后的DOM对象
|
||
});
|
||
|
||
//初始化Markdown编辑器
|
||
iniMdEditor = function(){
|
||
var self = this;
|
||
// codemirror 编辑器
|
||
self.editor = CodeMirror.fromTextArea($('#editor').get(0), {
|
||
mode: 'markdown',
|
||
lineNumbers: true,
|
||
autoCloseBrackets: true,
|
||
matchBrackets: true,
|
||
showCursorWhenSelecting: true,
|
||
lineWrapping: true, // 长句子折行
|
||
// theme: "material",
|
||
keyMap: 'sublime',
|
||
extraKeys: {"Enter": "newlineAndIndentContinueMarkdownList"}
|
||
});
|
||
};
|
||
iniMdEditor();
|
||
|
||
// 获取文集列表
|
||
getProjects = function(){
|
||
var opt = chrome.storage.local
|
||
// 获取mrdoc地址
|
||
opt.get(['serverUrl'],function(r){
|
||
self.mrdocUrl = r['serverUrl'];
|
||
// 获取账户token
|
||
opt.get(['accountKey'],function(r){
|
||
self.mrdocToken = r['accountKey'];
|
||
// 如果存在mrdoc服务地址和账户token,获取文集
|
||
if(self.mrdocUrl != undefined && self.mrdocToken != undefined){
|
||
layer.load(1);
|
||
item = {'url':self.mrdocUrl,'token':self.mrdocToken}
|
||
chrome.runtime.sendMessage({
|
||
name: 'selectprojects',
|
||
data:item
|
||
});
|
||
}else{
|
||
//打开选项页
|
||
chrome.tabs.create({url: chrome.runtime.getURL('options.html')});
|
||
}
|
||
})
|
||
})
|
||
};
|
||
getProjects();
|
||
|
||
//创建注入器
|
||
createInspector = function(autoExtractContent) {
|
||
// 发送消息到mrdocclipper.js
|
||
parent.postMessage({
|
||
name: 'createinspectorfrommrdocpopup',
|
||
autoExtractContent: autoExtractContent
|
||
}, '*');
|
||
};
|
||
createInspector(false);
|
||
|
||
// 默认关闭鼠标选择标记框
|
||
hideInspector = function(){
|
||
parent.postMessage({
|
||
name: 'hideinspectorfrommrdocpopup'
|
||
}, '*');
|
||
};
|
||
hideInspector();
|
||
|
||
|
||
// 处理background发送来的页面剪藏内容,将其添加到文本编辑器中
|
||
actionfrompopupinspecotrHandler = function(data) {
|
||
var self = this;
|
||
console.log("开始处理background发送来的内容")
|
||
if (data.add) { //如果存在add属性,则添加内容
|
||
//添加内容 到文本框
|
||
if(data.content == ' '){ // 没有内容时,不换行
|
||
self.editor.replaceSelection(data.content)
|
||
}else{
|
||
self.editor.replaceSelection(data.content+'\n\n')
|
||
}
|
||
parent.postMessage({
|
||
name: 'resetfrommrdocpopup'
|
||
}, '*');
|
||
if (data.title) {
|
||
//for auto extract content
|
||
self.title.val(data.title);
|
||
}
|
||
} else {// 如果不存在add属性,则移除ID所属的元素内容
|
||
//从uid移除内容
|
||
$('#' + data.uid, self.noteContent).remove();
|
||
}
|
||
};
|
||
|
||
// 处理background发送来的文集列表数据,将其遍历到文集下拉框
|
||
selectProjectsHandler = function(projects){
|
||
layer.closeAll('loading');
|
||
// 如果获取文集失败,关闭load层
|
||
if(projects.error){
|
||
return
|
||
}
|
||
var pro = $("#projects")
|
||
pro.empty(); //清空option
|
||
pro.append('<option value="">请选择一个文集</option>')
|
||
for (var i = 0, l = projects.length, project; i < l; i++) {
|
||
project = projects[i];
|
||
if (project.type==0) {
|
||
pro.append('<option value="' + project.id + '">[公开]' + project.name + '</option>');
|
||
}else if(project.type==1){
|
||
pro.append('<option value="' + project.id + '">[私密]' + project.name + '</option>');
|
||
}else if(project.type==2){
|
||
pro.append('<option value="' + project.id + '">[指定用户]' + project.name + '</option>');
|
||
}else if(project.type==3){
|
||
pro.append('<option value="' + project.id + '">[访问码]' + project.name + '</option>');
|
||
}
|
||
else {
|
||
pro.append('<option value="' + project.id + '">[受限]' + project.name + '</option>');
|
||
}
|
||
}
|
||
form.render();
|
||
};
|
||
|
||
// 处理background发来来的上传图片的URL,将其添加到文本编辑器中
|
||
pasteImageHandler = function(url){
|
||
layer.closeAll('loading');
|
||
self.editor.replaceSelection("![](" + url + ")\n\n")
|
||
}
|
||
|
||
// popup侦听消息
|
||
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
|
||
if (!sender || sender.id !== chrome.i18n.getMessage("@@extension_id")) return;
|
||
switch (request.name) {
|
||
case 'actionfrompopupinspecotr': // background将页面标记的数据发送过来
|
||
self.actionfrompopupinspecotrHandler(request.data);
|
||
break;
|
||
case 'checktokenvalue':
|
||
break;
|
||
case 'pasteimgurl': //粘贴上传图片
|
||
pasteImageHandler(request.data)
|
||
break;
|
||
case 'selectprojectsvalue':
|
||
selectProjectsHandler(request.data);
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}); |