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