From e37f8cfa7817bb4d9f7330838542666b74e52b94 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 4 Jun 2020 19:50:13 +0300 Subject: don't use declare() for static objects with no inheritance because apparently it's not actually needed by AMD --- js/Article.js | 586 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 291 insertions(+), 295 deletions(-) (limited to 'js/Article.js') diff --git a/js/Article.js b/js/Article.js index 3056dd666..197bfb3ab 100644 --- a/js/Article.js +++ b/js/Article.js @@ -1,355 +1,351 @@ 'use strict' /* global __, ngettext */ -define(["dojo/_base/declare"], function (declare) { - Article = { - _scroll_reset_timeout: false, - getScoreClass: function (score) { - if (score > 500) { - return "score-high"; - } else if (score > 0) { - return "score-half-high"; - } else if (score < -100) { - return "score-low"; - } else if (score < 0) { - return "score-half-low"; - } else { - return "score-neutral"; - } - }, - getScorePic: function (score) { - if (score > 500) { - return "trending_up"; - } else if (score > 0) { - return "trending_up"; - } else if (score < 0) { - return "trending_down"; - } else { - return "trending_neutral"; - } - }, - selectionSetScore: function () { - const ids = Headlines.getSelected(); +const Article = { + _scroll_reset_timeout: false, + getScoreClass: function (score) { + if (score > 500) { + return "score-high"; + } else if (score > 0) { + return "score-half-high"; + } else if (score < -100) { + return "score-low"; + } else if (score < 0) { + return "score-half-low"; + } else { + return "score-neutral"; + } + }, + getScorePic: function (score) { + if (score > 500) { + return "trending_up"; + } else if (score > 0) { + return "trending_up"; + } else if (score < 0) { + return "trending_down"; + } else { + return "trending_neutral"; + } + }, + selectionSetScore: function () { + const ids = Headlines.getSelected(); - if (ids.length > 0) { - const score = prompt(__("Please enter new score for selected articles:")); + if (ids.length > 0) { + const score = prompt(__("Please enter new score for selected articles:")); - if (!isNaN(parseInt(score))) { - ids.each((id) => { - const row = $("RROW-" + id); + if (!isNaN(parseInt(score))) { + ids.each((id) => { + const row = $("RROW-" + id); - if (row) { - row.setAttribute("data-score", score); + if (row) { + row.setAttribute("data-score", score); - const pic = row.select(".icon-score")[0]; + const pic = row.select(".icon-score")[0]; - pic.innerHTML = Article.getScorePic(score); - pic.setAttribute("title", score); + pic.innerHTML = Article.getScorePic(score); + pic.setAttribute("title", score); - ["score-low", "score-high", "score-half-low", "score-half-high", "score-neutral"] - .each(function(scl) { - if (row.hasClassName(scl)) - row.removeClassName(scl); - }); + ["score-low", "score-high", "score-half-low", "score-half-high", "score-neutral"] + .each(function(scl) { + if (row.hasClassName(scl)) + row.removeClassName(scl); + }); - row.addClassName(Article.getScoreClass(score)); - } - }); - } - - } else { - alert(__("No articles selected.")); + row.addClassName(Article.getScoreClass(score)); + } + }); } - }, - setScore: function (id, pic) { - const row = pic.up("div[id*=RROW]"); - if (row) { - const score_old = row.getAttribute("data-score"); - const score = prompt(__("Please enter new score for this article:"), score_old); + } else { + alert(__("No articles selected.")); + } + }, + setScore: function (id, pic) { + const row = pic.up("div[id*=RROW]"); - if (!isNaN(parseInt(score))) { - row.setAttribute("data-score", score); + if (row) { + const score_old = row.getAttribute("data-score"); + const score = prompt(__("Please enter new score for this article:"), score_old); - const pic = row.select(".icon-score")[0]; + if (!isNaN(parseInt(score))) { + row.setAttribute("data-score", score); - pic.innerHTML = Article.getScorePic(score); - pic.setAttribute("title", score); + const pic = row.select(".icon-score")[0]; - ["score-low", "score-high", "score-half-low", "score-half-high", "score-neutral"] - .each(function(scl) { - if (row.hasClassName(scl)) - row.removeClassName(scl); - }); + pic.innerHTML = Article.getScorePic(score); + pic.setAttribute("title", score); - row.addClassName(Article.getScoreClass(score)); - } + ["score-low", "score-high", "score-half-low", "score-half-high", "score-neutral"] + .each(function(scl) { + if (row.hasClassName(scl)) + row.removeClassName(scl); + }); + + row.addClassName(Article.getScoreClass(score)); } - }, - cdmUnsetActive: function (event) { - const row = $("RROW-" + Article.getActive()); + } + }, + cdmUnsetActive: function (event) { + const row = $("RROW-" + Article.getActive()); - if (row) { - row.removeClassName("active"); + if (row) { + row.removeClassName("active"); - if (event) - event.stopPropagation(); + if (event) + event.stopPropagation(); - return false; - } - }, - close: function () { - if (dijit.byId("content-insert")) - dijit.byId("headlines-wrap-inner").removeChild( - dijit.byId("content-insert")); - - Article.setActive(0); - }, - displayUrl: function (id) { - const query = {op: "rpc", method: "getlinktitlebyid", id: id}; - - xhrJson("backend.php", query, (reply) => { - if (reply && reply.link) { - prompt(__("Article URL:"), reply.link); - } - }); - }, - openInNewWindow: function (id) { - const w = window.open(""); + return false; + } + }, + close: function () { + if (dijit.byId("content-insert")) + dijit.byId("headlines-wrap-inner").removeChild( + dijit.byId("content-insert")); - if (w) { - w.opener = null; - w.location = "backend.php?op=article&method=redirect&id=" + id; + Article.setActive(0); + }, + displayUrl: function (id) { + const query = {op: "rpc", method: "getlinktitlebyid", id: id}; - Headlines.toggleUnread(id, 0); + xhrJson("backend.php", query, (reply) => { + if (reply && reply.link) { + prompt(__("Article URL:"), reply.link); } - }, - render: function (article) { - App.cleanupMemory("content-insert"); + }); + }, + openInNewWindow: function (id) { + const w = window.open(""); - dijit.byId("headlines-wrap-inner").addChild( - dijit.byId("content-insert")); + if (w) { + w.opener = null; + w.location = "backend.php?op=article&method=redirect&id=" + id; - const c = dijit.byId("content-insert"); + Headlines.toggleUnread(id, 0); + } + }, + render: function (article) { + App.cleanupMemory("content-insert"); - try { - c.domNode.scrollTop = 0; - } catch (e) { - } + dijit.byId("headlines-wrap-inner").addChild( + dijit.byId("content-insert")); - c.attr('content', article); - PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED, c.domNode); + const c = dijit.byId("content-insert"); - //Headlines.correctHeadlinesOffset(Article.getActive()); + try { + c.domNode.scrollTop = 0; + } catch (e) { + } - try { - c.focus(); - } catch (e) { - } - }, - formatComments: function(hl) { - let comments = ""; + c.attr('content', article); + PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED, c.domNode); - if (hl.comments || hl.num_comments > 0) { - let comments_msg = __("comments"); + //Headlines.correctHeadlinesOffset(Article.getActive()); - if (hl.num_comments > 0) { - comments_msg = hl.num_comments + " " + ngettext("comment", "comments", hl.num_comments) - } + try { + c.focus(); + } catch (e) { + } + }, + formatComments: function(hl) { + let comments = ""; - comments = `(${comments_msg})`; + if (hl.comments || hl.num_comments > 0) { + let comments_msg = __("comments"); + + if (hl.num_comments > 0) { + comments_msg = hl.num_comments + " " + ngettext("comment", "comments", hl.num_comments) } - return comments; - }, - formatOriginallyFrom: function(hl) { - return hl.orig_feed ? ` - ${__('Originally from:')} ${hl.orig_feed[0]} - ` : ""; - }, - unpack: function(row) { - if (row.hasAttribute("data-content")) { - console.log("unpacking: " + row.id); + comments = `(${comments_msg})`; + } - const container = row.querySelector(".content-inner"); + return comments; + }, + formatOriginallyFrom: function(hl) { + return hl.orig_feed ? ` + ${__('Originally from:')} ${hl.orig_feed[0]} + ` : ""; + }, + unpack: function(row) { + if (row.hasAttribute("data-content")) { + console.log("unpacking: " + row.id); - container.innerHTML = row.getAttribute("data-content").trim(); + const container = row.querySelector(".content-inner"); - // blank content element might screw up onclick selection and keyboard moving - if (container.textContent.length == 0) - container.innerHTML += " "; + container.innerHTML = row.getAttribute("data-content").trim(); - // in expandable mode, save content for later, so that we can pack unfocused rows back - if (App.isCombinedMode() && $("main").hasClassName("expandable")) - row.setAttribute("data-content-original", row.getAttribute("data-content")); + // blank content element might screw up onclick selection and keyboard moving + if (container.textContent.length == 0) + container.innerHTML += " "; - row.removeAttribute("data-content"); + // in expandable mode, save content for later, so that we can pack unfocused rows back + if (App.isCombinedMode() && $("main").hasClassName("expandable")) + row.setAttribute("data-content-original", row.getAttribute("data-content")); - PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row); - } - }, - pack: function(row) { - if (row.hasAttribute("data-content-original")) { - console.log("packing", row.id); - row.setAttribute("data-content", row.getAttribute("data-content-original")); - row.removeAttribute("data-content-original"); - - row.querySelector(".content-inner").innerHTML = " "; - } - }, - view: function (id, no_expand) { - this.setActive(id); - Headlines.scrollToArticleId(id); - - if (!no_expand) { - const hl = Headlines.objectById(id); - - if (hl) { - - const comments = this.formatComments(hl); - const originally_from = this.formatOriginallyFrom(hl); - - const article = `
-
-
- -
${hl.updated_long}
-
-
-
${hl.buttons_left}
-
${comments}
-
${hl.author}
- label_outline - ${hl.tags_str} -  (+) -
${hl.buttons}
-
+ row.removeAttribute("data-content"); + + PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row); + } + }, + pack: function(row) { + if (row.hasAttribute("data-content-original")) { + console.log("packing", row.id); + row.setAttribute("data-content", row.getAttribute("data-content-original")); + row.removeAttribute("data-content-original"); + + row.querySelector(".content-inner").innerHTML = " "; + } + }, + view: function (id, no_expand) { + this.setActive(id); + Headlines.scrollToArticleId(id); + + if (!no_expand) { + const hl = Headlines.objectById(id); + + if (hl) { + + const comments = this.formatComments(hl); + const originally_from = this.formatOriginallyFrom(hl); + + const article = `
+
+
+ +
${hl.updated_long}
-
${hl.note}
-
- ${originally_from} - ${hl.content} - ${hl.enclosures} +
+
${hl.buttons_left}
+
${comments}
+
${hl.author}
+ label_outline + ${hl.tags_str} +  (+) +
${hl.buttons}
-
`; +
+
${hl.note}
+
+ ${originally_from} + ${hl.content} + ${hl.enclosures} +
+
`; - Headlines.toggleUnread(id, 0); - this.render(article); - } + Headlines.toggleUnread(id, 0); + this.render(article); } + } - return false; - }, - editTags: function (id) { - const query = "backend.php?op=article&method=editArticleTags¶m=" + encodeURIComponent(id); - - if (dijit.byId("editTagsDlg")) - dijit.byId("editTagsDlg").destroyRecursive(); - - const dialog = new dijit.Dialog({ - id: "editTagsDlg", - title: __("Edit article Tags"), - style: "width: 600px", - execute: function () { - if (this.validate()) { - Notify.progress("Saving article tags...", true); - - xhrPost("backend.php", this.attr('value'), (transport) => { - try { - Notify.close(); - dialog.hide(); - - const data = JSON.parse(transport.responseText); - - if (data) { - const id = data.id; - - const tags = $("ATSTR-" + id); - const tooltip = dijit.byId("ATSTRTIP-" + id); - - if (tags) tags.innerHTML = data.content; - if (tooltip) tooltip.attr('label', data.content_full); - } - } catch (e) { - App.Error.report(e); + return false; + }, + editTags: function (id) { + const query = "backend.php?op=article&method=editArticleTags¶m=" + encodeURIComponent(id); + + if (dijit.byId("editTagsDlg")) + dijit.byId("editTagsDlg").destroyRecursive(); + + const dialog = new dijit.Dialog({ + id: "editTagsDlg", + title: __("Edit article Tags"), + style: "width: 600px", + execute: function () { + if (this.validate()) { + Notify.progress("Saving article tags...", true); + + xhrPost("backend.php", this.attr('value'), (transport) => { + try { + Notify.close(); + dialog.hide(); + + const data = JSON.parse(transport.responseText); + + if (data) { + const id = data.id; + + const tags = $("ATSTR-" + id); + const tooltip = dijit.byId("ATSTRTIP-" + id); + + if (tags) tags.innerHTML = data.content; + if (tooltip) tooltip.attr('label', data.content_full); } - }); - } - }, - href: query - }); + } catch (e) { + App.Error.report(e); + } + }); + } + }, + href: query + }); - const tmph = dojo.connect(dialog, 'onLoad', function () { - dojo.disconnect(tmph); + const tmph = dojo.connect(dialog, 'onLoad', function () { + dojo.disconnect(tmph); - new Ajax.Autocompleter('tags_str', 'tags_choices', - "backend.php?op=article&method=completeTags", - {tokens: ',', paramName: "search"}); - }); + new Ajax.Autocompleter('tags_str', 'tags_choices', + "backend.php?op=article&method=completeTags", + {tokens: ',', paramName: "search"}); + }); - dialog.show(); - }, - cdmMoveToId: function (id, params) { - params = params || {}; + dialog.show(); + }, + cdmMoveToId: function (id, params) { + params = params || {}; - const force_to_top = params.force_to_top || false; + const force_to_top = params.force_to_top || false; - const ctr = $("headlines-frame"); - const row = $("RROW-" + id); + const ctr = $("headlines-frame"); + const row = $("RROW-" + id); - if (!row || !ctr) return; + if (!row || !ctr) return; - if (force_to_top || !App.Scrollable.fitsInContainer(row, ctr)) { - ctr.scrollTop = row.offsetTop; - } - }, - setActive: function (id) { - if (id != Article.getActive()) { - console.log("setActive", id, "was", Article.getActive()); - - $$("div[id*=RROW][class*=active]").each((row) => { - row.removeClassName("active"); - Article.pack(row); - }); + if (force_to_top || !App.Scrollable.fitsInContainer(row, ctr)) { + ctr.scrollTop = row.offsetTop; + } + }, + setActive: function (id) { + if (id != Article.getActive()) { + console.log("setActive", id, "was", Article.getActive()); + + $$("div[id*=RROW][class*=active]").each((row) => { + row.removeClassName("active"); + Article.pack(row); + }); - const row = $("RROW-" + id); + const row = $("RROW-" + id); - if (row) { - Article.unpack(row); + if (row) { + Article.unpack(row); - row.removeClassName("Unread"); - row.addClassName("active"); + row.removeClassName("Unread"); + row.addClassName("active"); - PluginHost.run(PluginHost.HOOK_ARTICLE_SET_ACTIVE, row.getAttribute("data-article-id")); - } + PluginHost.run(PluginHost.HOOK_ARTICLE_SET_ACTIVE, row.getAttribute("data-article-id")); } - }, - getActive: function () { - const row = document.querySelector("#headlines-frame > div[id*=RROW][class*=active]"); - - if (row) - return row.getAttribute("data-article-id"); - else - return 0; - }, - scrollByPages: function (page_offset) { - App.Scrollable.scrollByPages($("content-insert"), page_offset); - }, - scroll: function (offset) { - App.Scrollable.scroll($("content-insert"), offset); - }, - mouseIn: function (id) { - this.post_under_pointer = id; - }, - mouseOut: function (id) { - this.post_under_pointer = false; - }, - getUnderPointer: function () { - return this.post_under_pointer; } + }, + getActive: function () { + const row = document.querySelector("#headlines-frame > div[id*=RROW][class*=active]"); + + if (row) + return row.getAttribute("data-article-id"); + else + return 0; + }, + scrollByPages: function (page_offset) { + App.Scrollable.scrollByPages($("content-insert"), page_offset); + }, + scroll: function (offset) { + App.Scrollable.scroll($("content-insert"), offset); + }, + mouseIn: function (id) { + this.post_under_pointer = id; + }, + mouseOut: function (id) { + this.post_under_pointer = false; + }, + getUnderPointer: function () { + return this.post_under_pointer; } - - return Article; -}); +} -- cgit v1.2.3