คืนค่าการตั้งค่าทั้งหมด
คุณแน่ใจว่าต้องการคืนค่าการตั้งค่าทั้งหมด ?
ลำดับตอนที่ #14 : [code] Article Command - ทางลัดเข้าไปแก้ไขบทความ/นิยาย
เนื่องจากเป็นคนที่แก้บทความบ่อยมาก (บ่อยจนคนที่กดเป็นแฟนคลับไว้ถึงกับกดยกเลิก) เราจึงพบปัญหาว่า เมื่อเราพบสิ่งที่อยากจะแก้ในตอนของบทความหรือในหน้าหลักของบทความนั้น เราต้องคลิกหลายรอบเพื่อเข้าไปยังหน้าหลักของตัว Writer3 และคลิกอีกหลายครั้งพอสมควรเพื่อเข้าไปยังตอนที่ต้องการจะแก้ไข
ด้วยเหตุนั้นเราจีงเขียนโค้ดที่จะทำการแทรกเมนูสำหรับการแก้ไขหน้าหลักหรือตอนย่อยของบทความลงไปในเมนูของเด็กดี ดังรูป
โดยโค้ดจะทำการตรวจสอบว่าเราเป็นเจ้าของหน้าหลักหรือตอนย่อยนั้นๆ หรือเปล่า ซึ่งถ้าเราเป็นเจ้าของ โค้ดจะทำการเพิ่มเมนู "แก้ไขหน้าหลัก" หรือ "แก้ไขตอนย่อย" หรือทั้งสองเมนู ขึ้นอยู่กับประเภทของหน้าเว็บ
หลักจากที่เราเขียนโค้นี้เเสร็จไปสักพัก ก็พบว่าเพื่อที่จะใช้โค้ดนี้ ผู้ใช้ต้องคัดลอกโค้ดนี้ไปใส่ไว้ในทุกๆ ตอนของบทความเพื่อที่จะใช้งานมันได้ ซึ่งทำให้ความซับซ้อนของโค้ดในบทความนั้นเยอะขึ้น เราจึงทำการเขียนใหม่ ให้โค้ดสามารถใช้งานแบบ Google Chrome Extension ได้ ซึ่งสามารถโหลดได้ที่นี่
สามารถดูตัวอย่างได้ที่นี่
var User = {};
User.getCurrentUser = function () {
var f = {};
$("#usermenu a[href^=\"http://my.dek-d.com/\"").get().forEach(function (e, i, a) {
var rx = /my\.dek-d\.com\/([\w\d-_]+)\/.*/;
var r = e.href.match(rx);
if(r !== null) { if(this[r[1]] !== undefined) { this[r[1]] += 1; } else { this[r[1]] = 0; } }
}, f);
var mi = "dekdee";
for(var i in f) { if(f[i] > f[mi]) { mi = i; } }
return mi;
};
var Article = {};
Article.init = function () {
this.href = document.location.href;
this._idRegex = /[\?&]id=(\d+)/;
this._chapterRegex = /[\?&]chapter=(\d+)/;
this._authorIdRegex = /my\.dek-d\.com\/([\w\d-_]+)[\/.]*/;
this.TYPE_UNKNOWN = 0;
this.TYPE_MAIN = 1;
this.TYPE_CHAPTER = 2;
};
Article.getType = function () {
if(this.getChapter() == null) {
return this.TYPE_MAIN;
} else {
return this.TYPE_CHAPTER;
}
};
Article.getAuthorId = function () {
var t = document.querySelector("ul.name_story li:last-of-type a");
var r = t.href.match(this._authorIdRegex);
if(r && r.length == 2) {
return r[1];
}
return r;
};
Article.getId = function () {
var r = this.href.match(this._idRegex);
if(r && r.length == 2) {
return r[1];
}
return r;
};
Article.getChapter = function () {
var r = this.href.match(this._chapterRegex);
if(r && r.length == 2) {
return r[1];
}
return r;
};
Article.init();
var AuthorCommand = {};
AuthorCommand.init = function () {
this._editorBaseURL = "http://my.dek-d.com/krerkkiat/control/writer3/story-editor.php?";
var currentUser = User.getCurrentUser();
var author = Article.getAuthorId();
if(currentUser === author) {
var text = "";
var url = null;
if(Article.getType() == Article.TYPE_MAIN) {
text = "แก้ไขหน้าหลัก";
url = this._editorBaseURL + "story_id=" + Article.getId() + "&chapter=-1";
} else {
text = "แก้ไขตอนนี้";
url = this._editorBaseURL + "story_id=" + Article.getId() + "&chapter=" + Article.getChapter();
}
this.injectMenuItem(this.createMenuItem(text, url));
}
};
AuthorCommand.createMenuItem = function (text, link) {
var li = document.createElement("li");
li.setAttribute("class", "normalsize");
var a = document.createElement("a");
a.setAttribute("href", link);
a.textContent = text;
li.appendChild(a);
return li;
};
AuthorCommand.injectMenuItem = function (el) {
$(el).insertAfter($("ul.welcome-screen-ul li "));
};
AuthorCommand.init();
See the Pen Dek-D - Article Command by Krerkkiat Chusap (@krerkkiat) on CodePen.
ความคิดเห็น