Browse Source

shorten_expanded: use dojo button, don't break attachment dropdown, other fixes

Andrew Dolgov 1 year ago
parent
commit
7adf937936
2 changed files with 29 additions and 19 deletions
  1. 3 3
      plugins/shorten_expanded/init.css
  2. 26 16
      plugins/shorten_expanded/init.js

+ 3 - 3
plugins/shorten_expanded/init.css

@@ -1,9 +1,9 @@
-div.contentSizeWrapper {
+.content-shrink-wrap {
 	overflow : hidden;
 	text-overflow: ellipsis;
 	height : 800px;
 }
 
-button.expandPrompt {
-	margin-top : 20px;
+.expand-prompt {
+	margin-top : 16px;
 }

+ 26 - 16
plugins/shorten_expanded/init.js

@@ -1,17 +1,19 @@
-var _shorten_expanded_threshold = 1.5; //window heights
+const _shorten_expanded_threshold = 1.5; //window heights
 
-function expandSizeWrapper(id) {
-	const row = $(id);
+Plugins.Shorten_Expanded = {
+	expand: function(id) {
+		const row = $(id);
 
-	if (row) {
-		const content = row.select(".contentSizeWrapper")[0];
-		const link = row.select(".expandPrompt")[0];
+		if (row) {
+			const content = row.select(".content-shrink-wrap")[0];
+			const link = row.select(".expand-prompt")[0];
 
-		if (content) content.removeClassName("contentSizeWrapper");
-		if (link) Element.hide(link);
-	}
+			if (content) content.removeClassName("content-shrink-wrap");
+			if (link) Element.hide(link);
+		}
 
-	return false;
+		return false;
+	}
 }
 
 require(['dojo/_base/kernel', 'dojo/ready'], function  (dojo, ready) {
@@ -19,19 +21,27 @@ require(['dojo/_base/kernel', 'dojo/ready'], function  (dojo, ready) {
 		PluginHost.register(PluginHost.HOOK_ARTICLE_RENDERED_CDM, function(row) {
 			window.setTimeout(function() {
 				if (row) {
+
 					const c_inner = row.select(".content-inner")[0];
 					const c_inter = row.select(".intermediate")[0];
 
 					if (c_inner && c_inter &&
 						row.offsetHeight >= _shorten_expanded_threshold * window.innerHeight) {
 
-						c_inter.parentNode.removeChild(c_inter);
+						let tmp = document.createElement("div");
+
+						c_inter.select("> *:not([class*='attachments'])").each(function(p) {
+							p.parentNode.removeChild(p);
+							tmp.appendChild(p);
+						});
+
+						c_inner.innerHTML = `<div class="content-shrink-wrap">
+							${c_inner.innerHTML}
+							${tmp.innerHTML}</div>							
+							<button dojoType="dijit.form.Button" class="alt-info expand-prompt" onclick="return Plugins.Shorten_Expanded.expand('${row.id}')" href="#">
+								${__("Click to expand article")}</button>`;
 
-						c_inner.innerHTML = "<div class='contentSizeWrapper'>" +
-							c_inner.innerHTML +
-							c_inter.innerHTML + "</div>" +
-							"<button class='expandPrompt' onclick='return expandSizeWrapper(\""+row.id+"\")' href='#'>" +
-								__("Click to expand article") + "</button>";
+						dojo.parser.parse(c_inner);
 
 						Headlines.unpackVisible();
 					}