Replace deprecated Addon::*registerHook by Hook::*register
[friendica-addons.git/.git] / smileybutton / smileybutton.php
1 <?php
2 /**
3  * Name: Smileybutton
4  * Description: Adds a smileybutton to the Inputbox
5  * Version: 0.2
6  * Author: Johannes Schwab <https://friendica.jschwab.org/profile/ddorian>
7  */
8 use Friendica\Core\Hook;
9 use Friendica\Core\Logger;
10
11 function smileybutton_install() {
12         //Register hooks
13         Hook::register('jot_tool', 'addon/smileybutton/smileybutton.php', 'show_button');
14
15         Logger::log("installed smileybutton");
16 }
17
18
19 function smileybutton_uninstall() {
20         //Delet registered hooks
21         Hook::unregister('jot_tool',    'addon/smileybutton/smileybutton.php', 'show_button');
22
23         Logger::log("removed smileybutton");
24 }
25
26
27
28 function show_button(Friendica\App $a, &$b) {
29         // Disable if theme is quattro
30         // TODO add style for quattro
31         if ($a->getCurrentTheme() == 'quattro')
32                 return;
33
34         // Disable for mobile because most mobiles have a smiley key for ther own
35         if ($a->is_mobile || $a->is_tablet)
36                 return;
37
38         /**
39          *
40          * I have copied this from /include/text.php, removed doubles
41          * and escaped them.
42          *
43          */
44
45         $texts =  [
46                 '&lt;3',
47                 '&lt;/3',
48                 ':-)',
49                 ';-)',
50                 ':-(',
51                 ':-P',
52                 ':-X',
53                 ':-D',
54                 ':-O',
55                 '\\\\o/',
56                 'O_o',
57                 ":\'(",
58                 ":-!",
59                 ":-/",
60                 ":-[",
61                 "8-)",
62                 ':beer',
63                 ':coffee',
64                 ':facepalm',
65                 ':like',
66                 ':dislike',
67                 '~friendica',
68                 'red#'
69
70         ];
71
72         $icons = [
73                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-heart.gif" alt="<3" />',
74                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-brokenheart.gif" alt="</3" />',
75                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-smile.gif" alt=":-)" />',
76                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-wink.gif" alt=";-)" />',
77                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-frown.gif" alt=":-(" />',
78                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-tongue-out.gif" alt=":-P" />',
79                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-kiss.gif" alt=":-X" />',
80                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-laughing.gif" alt=":-D" />',
81                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-surprised.gif" alt=":-O" />',
82                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-thumbsup.gif" alt="\\o/" />',
83                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-Oo.gif" alt="O_o" />',
84                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-cry.gif" alt=":\'(" />',
85                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-foot-in-mouth.gif" alt=":-!" />',
86                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-undecided.gif" alt=":-/" />',
87                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-embarassed.gif" alt=":-[" />',
88                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-cool.gif" alt="8-)" />',
89                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/beer_mug.gif" alt=":beer" />',
90                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/coffee.gif" alt=":coffee" />',
91                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/smiley-facepalm.gif" alt=":facepalm" />',
92                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/like.gif" alt=":like" />',
93                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/dislike.gif" alt=":dislike" />',
94                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/friendica-16.png" alt="~friendica" />',
95                 '<img class="smiley" src="' . $a->getBaseURL() . '/images/rhash-16.png" alt="red" />'
96         ];
97
98         // Call hooks to get aditional smileies from other addons
99         $params = ['texts' => $texts, 'icons' => $icons, 'string' => ""]; //changed
100         Hook::callAll('smilie', $params);
101
102         //Generate html for smiley list
103         $s = "<table class=\"smiley-preview\"><tr>\n\t";
104         for($x = 0; $x < count($params['texts']); $x ++) {
105                 $icon = $params['icons'][$x];
106                 $icon = str_replace('/>', 'onclick="smileybutton_addsmiley(\'' . $params['texts'][$x] . '\')"/>', $icon);
107                 $icon = str_replace('class="smiley"', 'class="smiley_preview"', $icon);
108                 $s .= "<td>" . $icon . "</td>";
109                 if (($x+1) % (sqrt(count($params['texts']))+1) == 0) {
110                         $s .= "</tr>\n\t<tr>";
111                 }
112         }
113         $s .= "\t</tr></table>";
114
115         //Add css to header
116         $css_file = 'addon/smileybutton/view/' . $a->getCurrentTheme() . '.css';
117         if (! file_exists($css_file))
118                 $css_file = 'addon/smileybutton/view/default.css';
119         $css_url = $a->getBaseURL().'/'.$css_file;
120
121         $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.$css_url.'" media="all" />'."\r\n";
122
123
124         //Get the correct image for the theme
125         $image = 'addon/smileybutton/view/' . $a->getCurrentTheme() . '.png';
126         if (! file_exists($image))
127                 $image = 'addon/smileybutton/view/default.png';
128         $image_url = $a->getBaseURL().'/'.$image;
129
130         //Add the hmtl and script to the page
131         $b = <<< EOT
132         <div id="profile-smiley-wrapper" style="display: block;" >
133                 <img src="$image_url" class="smiley_button" onclick="toggle_smileybutton()" alt="smiley">
134                 <div id="smileybutton" style="display:none;">
135                 $s
136                 </div>
137         </div>
138
139         <script>
140                 var smileybutton_is_shown = 0;
141                 function toggle_smileybutton() {
142                         if (! smileybutton_is_shown) {
143                                 $("#smileybutton").show();
144                                 smileybutton_is_shown = 1;
145                         } else {
146                                 $("#smileybutton").hide();
147                                 smileybutton_is_shown = 0;
148                         }
149                 }
150
151                 function smileybutton_addsmiley(text) {
152                         if(plaintext == "none") {
153                                 var v = $("#profile-jot-text").val();
154                                 v = v + text;
155                                 $("#profile-jot-text").val(v);
156                                 $("#profile-jot-text").focus();
157                         } else {
158                                 var v = tinymce.activeEditor.getContent();
159                                 v = v + text;
160                                 tinymce.activeEditor.setContent(v);
161                                 tinymce.activeEditor.focus();
162                         }
163                 }
164         </script>
165 EOT;
166 }