ตั้งค่าการอ่าน

ค่าเริ่มต้น

  • เลื่อนอัตโนมัติ
    Code for Dek-d Customization

    ลำดับตอนที่ #14 : [code] Article Command - ทางลัดเข้าไปแก้ไขบทความ/นิยาย

    • เนื้อหาตอนนี้เปิดให้อ่าน
    • 226
      0
      30 ม.ค. 59

    เนื่องจากเป็นคนที่แก้บทความบ่อยมาก (บ่อยจนคนที่กดเป็นแฟนคลับไว้ถึงกับกดยกเลิก) เราจึงพบปัญหาว่า เมื่อเราพบสิ่งที่อยากจะแก้ในตอนของบทความหรือในหน้าหลักของบทความนั้น เราต้องคลิกหลายรอบเพื่อเข้าไปยังหน้าหลักของตัว 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.

    ติดตามเรื่องนี้
    เก็บเข้าคอลเล็กชัน

    นิยายที่ผู้อ่านนิยมอ่านต่อ ดูทั้งหมด

    loading
    กำลังโหลด...

    อีบุ๊ก ดูทั้งหมด

    loading
    กำลังโหลด...

    ความคิดเห็น

    ×