From 4f698eb875fb62ec3dc1ab71eafd48c08f509778 Mon Sep 17 00:00:00 2001
From: Hypolite Petovan <hypolite@mrpetovan.com>
Date: Mon, 8 Feb 2021 11:02:34 -0500
Subject: [PATCH] [smileybutton] Rework addon

- Add frio style
- Remove reference to removed tinymce editor
---
 smileybutton/smileybutton.php      | 97 +++++++++++++-----------------
 smileybutton/view/default.css      | 16 ++++-
 smileybutton/view/duepuntozero.css | 20 +++++-
 smileybutton/view/frio.css         | 31 ++++++++++
 smileybutton/view/smoothly.css     | 17 +++++-
 smileybutton/view/vier.css         | 44 ++++++++++++--
 6 files changed, 159 insertions(+), 66 deletions(-)
 create mode 100644 smileybutton/view/frio.css

diff --git a/smileybutton/smileybutton.php b/smileybutton/smileybutton.php
index fc420773..f01a6201 100644
--- a/smileybutton/smileybutton.php
+++ b/smileybutton/smileybutton.php
@@ -2,38 +2,34 @@
 /**
  * Name: Smileybutton
  * Description: Adds a smileybutton to the Inputbox
- * Version: 0.2
+ * Version: 1.0
  * Author: Johannes Schwab <https://friendica.jschwab.org/profile/ddorian>
+ * Maintainer: Hypolite Petovan <https://friendica.mrpetovan.com/profile/hypolite>
  */
+
 use Friendica\Core\Hook;
-use Friendica\Core\Logger;
 use Friendica\DI;
 
-function smileybutton_install() {
+function smileybutton_install()
+{
 	//Register hooks
-	Hook::register('jot_tool', 'addon/smileybutton/smileybutton.php', 'show_button');
-
-	Logger::log("installed smileybutton");
+	Hook::register('jot_tool', 'addon/smileybutton/smileybutton.php', 'smileybutton_jot_tool');
 }
 
-function show_button(Friendica\App $a, &$b) {
+function smileybutton_jot_tool(Friendica\App $a, &$b)
+{
 	// Disable if theme is quattro
 	// TODO add style for quattro
-	if ($a->getCurrentTheme() == 'quattro')
+	if ($a->getCurrentTheme() == 'quattro') {
 		return;
+	}
 
-	// Disable for mobile because most mobiles have a smiley key for ther own
-	if (DI::mode()->isMobile() || DI::mode()->isMobile())
+	// Disable for mobile because they have a smiley key of their own
+	if (DI::mode()->isMobile() || DI::mode()->isMobile()) {
 		return;
+	}
 
-	/**
-	 *
- 	 * I have copied this from /include/text.php, removed doubles
-	 * and escaped them.
-	 *
-	 */
-
-	$texts =  [
+	$texts = [
 		'&lt;3',
 		'&lt;/3',
 		':-)',
@@ -45,19 +41,18 @@ function show_button(Friendica\App $a, &$b) {
 		':-O',
 		'\\\\o/',
 		'O_o',
-		":\'(",
-		":-!",
-		":-/",
-		":-[",
-		"8-)",
+		':\'(',
+		':-!',
+		':-/',
+		':-[',
+		'8-)',
 		':beer',
 		':coffee',
 		':facepalm',
 		':like',
 		':dislike',
-                '~friendica',
-                'red#'
-
+		'~friendica',
+		'red#',
 	];
 
 	$icons = [
@@ -87,42 +82,41 @@ function show_button(Friendica\App $a, &$b) {
 	];
 
 	// Call hooks to get aditional smileies from other addons
-	$params = ['texts' => $texts, 'icons' => $icons, 'string' => ""]; //changed
+	$params = ['texts' => $texts, 'icons' => $icons, 'string' => '']; //changed
 	Hook::callAll('smilie', $params);
 
 	//Generate html for smiley list
-	$s = "<table class=\"smiley-preview\"><tr>\n\t";
-	for($x = 0; $x < count($params['texts']); $x ++) {
+	$s = '<table class="smiley-preview"><tr>';
+	for ($x = 0; $x < count($params['texts']); $x++) {
 		$icon = $params['icons'][$x];
-		$icon = str_replace('/>', 'onclick="smileybutton_addsmiley(\'' . $params['texts'][$x] . '\')"/>', $icon);
-		$icon = str_replace('class="smiley"', 'class="smiley_preview"', $icon);
-		$s .= "<td>" . $icon . "</td>";
-		if (($x+1) % (sqrt(count($params['texts']))+1) == 0) {
-			$s .= "</tr>\n\t<tr>";
+		$s .= '<td onclick="smileybutton_addsmiley(\'' . $params['texts'][$x] . '\')">' . $icon . '</td>';
+		if (($x + 1) % (sqrt(count($params['texts'])) + 1) == 0) {
+			$s .= '</tr><tr>';
 		}
 	}
-	$s .= "\t</tr></table>";
+	$s .= '</tr></table>';
 
 	//Add css to header
 	$css_file = 'addon/smileybutton/view/' . $a->getCurrentTheme() . '.css';
-	if (! file_exists($css_file))
+	if (!file_exists($css_file)) {
 		$css_file = 'addon/smileybutton/view/default.css';
-	$css_url = DI::baseUrl()->get().'/'.$css_file;
-
-	DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.$css_url.'" media="all" />'."\r\n";
+	}
 
+	DI::page()->registerStylesheet($css_file);
 
 	//Get the correct image for the theme
 	$image = 'addon/smileybutton/view/' . $a->getCurrentTheme() . '.png';
-	if (! file_exists($image))
+	if (!file_exists($image)) {
 		$image = 'addon/smileybutton/view/default.png';
-	$image_url = DI::baseUrl()->get().'/'.$image;
+	}
+
+	$image_url = DI::baseUrl()->get() . '/' . $image;
 
 	//Add the hmtl and script to the page
 	$b = <<< EOT
-	<div id="profile-smiley-wrapper" style="display: block;" >
-		<img src="$image_url" class="smiley_button" onclick="toggle_smileybutton()" alt="smiley">
-		<div id="smileybutton" style="display:none;">
+	<div id="profile-smiley-wrapper">
+		<button type="button" class="btn btn-link smiley_button" onclick="toggle_smileybutton()"><img src="$image_url" alt="smiley"></button>
+		<div id="smileybutton">
 		$s
 		</div>
 	</div>
@@ -140,18 +134,11 @@ function show_button(Friendica\App $a, &$b) {
 		}
 
 		function smileybutton_addsmiley(text) {
-			if(plaintext == "none") {
-				var v = $("#profile-jot-text").val();
-				v = v + text;
-				$("#profile-jot-text").val(v);
-				$("#profile-jot-text").focus();
-			} else {
-				var v = tinymce.activeEditor.getContent();
-				v = v + text;
-				tinymce.activeEditor.setContent(v);
-				tinymce.activeEditor.focus();
-			}
+			var v = $("#profile-jot-text").val();
+			v = v + text;
+			$("#profile-jot-text").val(v).focus();
 		}
 	</script>
 EOT;
 }
+
diff --git a/smileybutton/view/default.css b/smileybutton/view/default.css
index 16120360..5fd60928 100644
--- a/smileybutton/view/default.css
+++ b/smileybutton/view/default.css
@@ -1,9 +1,17 @@
-img.smiley_button {
+#profile-smiley-wrapper {
+	display: block;
+}
+
+#smileybutton {
+	display: none;
+}
+
+.smiley_button > img {
 	height: 18px;
 	width: 18px;
 }
 
-img.smiley_preview {
+table.smiley-preview img.smiley {
 	max-height: 25px;
 	max-width: 25px;
 }
@@ -11,3 +19,7 @@ img.smiley_preview {
 table.smiley-preview {
 	border: 1px solid #AAAAAA;
 }
+
+table.smiley-preview td {
+	cursor: pointer;
+}
diff --git a/smileybutton/view/duepuntozero.css b/smileybutton/view/duepuntozero.css
index 0f4ef4ae..92ff4eba 100644
--- a/smileybutton/view/duepuntozero.css
+++ b/smileybutton/view/duepuntozero.css
@@ -1,14 +1,26 @@
-img.smiley_button {
+#profile-smiley-wrapper {
+	display: block;
+}
+
+#smileybutton {
+	display: none;
+}
+
+.smiley_button {
 	height: 18px;
 	width: 18px;
 	position: relative;
 	left: 285px;
 	top: -45px;
+	padding: 0;
+	border: 0;
+	background: none;
 }
 
-img.smiley_preview {
+table.smiley-preview img.smiley {
 	max-height: 25px;
 	max-width: 25px;
+	cursor: pointer;
 }
 
 table.smiley-preview {
@@ -19,3 +31,7 @@ table.smiley-preview {
 	left: 285px;
 	top: -36px;
 }
+
+table.smiley-preview td {
+	cursor: pointer;
+}
diff --git a/smileybutton/view/frio.css b/smileybutton/view/frio.css
new file mode 100644
index 00000000..dce84826
--- /dev/null
+++ b/smileybutton/view/frio.css
@@ -0,0 +1,31 @@
+#profile-smiley-wrapper {
+	display: block;
+}
+
+#smileybutton {
+	display: none;
+}
+
+.smiley_button > img {
+	height: 14px;
+	width: 14px;
+}
+
+table.smiley-preview img.smiley {
+	max-height: 25px;
+	max-width: 25px;
+}
+
+table.smiley-preview {
+	border: 1px solid #AAAAAA;
+}
+
+table.smiley-preview td {
+	cursor: pointer;
+}
+
+#profile-smiley-wrapper > .btn-link {
+	position: relative;
+	display: block;
+	padding: 10px 15px;
+}
diff --git a/smileybutton/view/smoothly.css b/smileybutton/view/smoothly.css
index 14ed961a..2f30799f 100644
--- a/smileybutton/view/smoothly.css
+++ b/smileybutton/view/smoothly.css
@@ -1,4 +1,12 @@
-img.smiley_button {
+#profile-smiley-wrapper {
+	display: block;
+}
+
+#smileybutton {
+	display: none;
+}
+
+.smiley_button > img {
 	height: 22px;
 	width: 22px;
 	position: relative;
@@ -8,9 +16,10 @@ img.smiley_button {
 	border-radius: 0px;
 }
 
-img.smiley_preview {
+table.smiley-preview img.smiley {
 	max-height: 25px;
 	max-width: 25px;
+	cursor: pointer;
 }
 
 table.smiley-preview {
@@ -19,3 +28,7 @@ table.smiley-preview {
 	border-radius: 5px;
 	margin: 5px;
 }
+
+table.smiley-preview td {
+	cursor: pointer;
+}
diff --git a/smileybutton/view/vier.css b/smileybutton/view/vier.css
index 4f237800..5862759b 100644
--- a/smileybutton/view/vier.css
+++ b/smileybutton/view/vier.css
@@ -1,15 +1,49 @@
-img.smiley_button {
+#profile-smiley-wrapper {
+	float: left;
+	margin-left: 15px;
+	cursor: pointer;
+	height: 10px;
+	display: inline-block;
+}
+
+#profile-smiley-wrapper .btn {
+	padding: 0;
+	margin: 0;
+	border: 0;
+	background: none;
+	width: 20px;
+	height: 20px;
+	line-height: inherit;
+	display: inline-block;
+	overflow: hidden;
+	padding: 1px;
+	color: #999;
+	vertical-align: text-top;
+}
+
+#smileybutton {
+	position: absolute;
+	z-index: 99;
+	display: none;
+}
+
+.smiley_button > img {
 	height: 18px;
 	width: 18px;
 	margin-right: 18px;
 }
 
-img.smiley_preview {
+table.smiley-preview {
+	background-color: #FFF;
+	box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+}
+
+table.smiley-preview img.smiley {
 	max-height: 25px;
 	max-width: 25px;
+	cursor: pointer;
 }
 
-table.smiley-preview {
-	border: 1px solid #999999;
-	margin-left: 10px;
+table.smiley-preview td {
+	cursor: pointer;
 }
-- 
2.39.5