]>
Commit | Line | Data |
---|---|---|
ef8be8ea | 1 | <?php |
ef8be8ea | 2 | function module_pref_labels($link) { |
ef8be8ea | 3 | |
b4e75b2a | 4 | $subop = $_REQUEST["subop"]; |
ef8be8ea | 5 | |
b8776a07 AD |
6 | if ($subop == "color-set") { |
7 | $kind = db_escape_string($_REQUEST["kind"]); | |
8 | $ids = split(',', db_escape_string($_REQUEST["ids"])); | |
9 | $color = db_escape_string($_REQUEST["color"]); | |
b6ba48c1 AD |
10 | $fg = db_escape_string($_REQUEST["fg"]); |
11 | $bg = db_escape_string($_REQUEST["bg"]); | |
b8776a07 AD |
12 | |
13 | foreach ($ids as $id) { | |
b6ba48c1 AD |
14 | |
15 | if ($kind == "fg" || $kind == "bg") { | |
16 | db_query($link, "UPDATE ttrss_labels2 SET | |
17 | ${kind}_color = '$color' WHERE id = '$id' | |
18 | AND owner_uid = " . $_SESSION["uid"]); | |
19 | } else { | |
20 | db_query($link, "UPDATE ttrss_labels2 SET | |
21 | fg_color = '$fg', bg_color = '$bg' WHERE id = '$id' | |
22 | AND owner_uid = " . $_SESSION["uid"]); | |
23 | } | |
905ff52a AD |
24 | |
25 | $caption = db_escape_string(label_find_caption($link, $id, $_SESSION["uid"])); | |
26 | ||
27 | /* Remove cached data */ | |
28 | ||
29 | db_query($link, "UPDATE ttrss_user_entries SET label_cache = '' | |
30 | WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $_SESSION["uid"]); | |
31 | ||
b8776a07 AD |
32 | } |
33 | ||
aec9df48 AD |
34 | return; |
35 | } | |
36 | ||
37 | if ($subop == "color-reset") { | |
38 | $ids = split(',', db_escape_string($_REQUEST["ids"])); | |
39 | ||
40 | foreach ($ids as $id) { | |
41 | db_query($link, "UPDATE ttrss_labels2 SET | |
42 | fg_color = '', bg_color = '' WHERE id = '$id' | |
43 | AND owner_uid = " . $_SESSION["uid"]); | |
905ff52a AD |
44 | |
45 | $caption = db_escape_string(label_find_caption($link, $id, $_SESSION["uid"])); | |
46 | ||
47 | /* Remove cached data */ | |
48 | ||
49 | db_query($link, "UPDATE ttrss_user_entries SET label_cache = '' | |
50 | WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $_SESSION["uid"]); | |
aec9df48 AD |
51 | } |
52 | ||
b8776a07 AD |
53 | } |
54 | ||
ceb30ba4 | 55 | if ($subop == "save") { |
071ec48f | 56 | |
ceb30ba4 | 57 | $id = db_escape_string($_REQUEST["id"]); |
9c5e85fe | 58 | $caption = db_escape_string(trim($_REQUEST["value"])); |
071ec48f | 59 | |
ceb30ba4 | 60 | db_query($link, "BEGIN"); |
10fa6615 | 61 | |
ceb30ba4 AD |
62 | $result = db_query($link, "SELECT caption FROM ttrss_labels2 |
63 | WHERE id = '$id' AND owner_uid = ". $_SESSION["uid"]); | |
ef8be8ea | 64 | |
ceb30ba4 AD |
65 | if (db_num_rows($result) != 0) { |
66 | $old_caption = db_fetch_result($result, 0, "caption"); | |
a4919a16 | 67 | |
ceb30ba4 AD |
68 | $result = db_query($link, "SELECT id FROM ttrss_labels2 |
69 | WHERE caption = '$caption' AND owner_uid = ". $_SESSION["uid"]); | |
ef8be8ea | 70 | |
ceb30ba4 AD |
71 | if (db_num_rows($result) == 0) { |
72 | if ($caption) { | |
73 | $result = db_query($link, "UPDATE ttrss_labels2 SET | |
74 | caption = '$caption' WHERE id = '$id' AND | |
75 | owner_uid = " . $_SESSION["uid"]); | |
ef8be8ea | 76 | |
ceb30ba4 | 77 | /* Update filters that reference label being renamed */ |
ef8be8ea | 78 | |
7a13338b AD |
79 | $old_caption = db_escape_string($old_caption); |
80 | ||
ceb30ba4 AD |
81 | db_query($link, "UPDATE ttrss_filters SET |
82 | action_param = '$caption' WHERE action_param = '$old_caption' | |
83 | AND action_id = 7 | |
84 | AND owner_uid = " . $_SESSION["uid"]); | |
ef8be8ea | 85 | |
9c5e85fe | 86 | print $_REQUEST["value"]; |
625acd1c AD |
87 | } else { |
88 | print $old_caption; | |
ceb30ba4 AD |
89 | } |
90 | } else { | |
91 | print $old_caption; | |
ef8be8ea | 92 | } |
ef8be8ea AD |
93 | } |
94 | ||
ceb30ba4 | 95 | db_query($link, "COMMIT"); |
ef8be8ea AD |
96 | |
97 | return; | |
98 | } | |
99 | ||
ef8be8ea AD |
100 | if ($subop == "remove") { |
101 | ||
b4e75b2a | 102 | $ids = split(",", db_escape_string($_REQUEST["ids"])); |
ef8be8ea | 103 | |
f6f7817d | 104 | foreach ($ids as $id) { |
1380f8ee | 105 | label_remove($link, $id, $_SESSION["uid"]); |
ef8be8ea | 106 | } |
f6f7817d | 107 | |
ef8be8ea AD |
108 | } |
109 | ||
110 | if ($subop == "add") { | |
b4e75b2a | 111 | $caption = db_escape_string($_REQUEST["caption"]); |
1c31e190 | 112 | $output = db_escape_string($_REQUEST["output"]); |
ef8be8ea | 113 | |
ceb30ba4 | 114 | if ($caption) { |
caf1f12f | 115 | |
6b2ee18d | 116 | if (label_create($link, $caption)) { |
1c31e190 AD |
117 | if (!$output) { |
118 | print T_sprintf("Created label <b>%s</b>", htmlspecialchars($caption)); | |
119 | } | |
ceb30ba4 | 120 | } |
6b2ee18d | 121 | |
1c31e190 AD |
122 | if ($output == "select") { |
123 | header("Content-Type: text/xml"); | |
124 | ||
10249c41 | 125 | print "<rpc-reply><payload>"; |
1c31e190 AD |
126 | |
127 | print_label_select($link, "select_label", | |
128 | $caption, ""); | |
129 | ||
10249c41 | 130 | print "</payload></rpc-reply>"; |
1c31e190 | 131 | } |
5e6f933a AD |
132 | } |
133 | ||
134 | return; | |
ef8be8ea AD |
135 | } |
136 | ||
fe8d2059 AD |
137 | set_pref($link, "_PREFS_ACTIVE_TAB", "labelConfig"); |
138 | ||
b4e75b2a | 139 | $sort = db_escape_string($_REQUEST["sort"]); |
ef8be8ea AD |
140 | |
141 | if (!$sort || $sort == "undefined") { | |
ceb30ba4 | 142 | $sort = "caption"; |
ef8be8ea AD |
143 | } |
144 | ||
b4e75b2a | 145 | $label_search = db_escape_string($_REQUEST["search"]); |
112d2aec | 146 | |
b4e75b2a | 147 | if (array_key_exists("search", $_REQUEST)) { |
112d2aec AD |
148 | $_SESSION["prefs_label_search"] = $label_search; |
149 | } else { | |
150 | $label_search = $_SESSION["prefs_label_search"]; | |
151 | } | |
152 | ||
577399e8 | 153 | print "<div style='float : right'> |
112d2aec | 154 | <input id=\"label_search\" size=\"20\" type=\"search\" |
4cf6fc6a AD |
155 | onfocus=\"javascript:disableHotkeys();\" |
156 | onblur=\"javascript:enableHotkeys();\" | |
112d2aec | 157 | onchange=\"javascript:updateLabelList()\" value=\"$label_search\"> |
577399e8 | 158 | <button onclick=\"javascript:updateLabelList()\">".__('Search')."</button> |
112d2aec | 159 | </div>"; |
0d32b41e | 160 | |
ef8be8ea AD |
161 | print "<div class=\"prefGenericAddBox\">"; |
162 | ||
577399e8 AD |
163 | print"<button onclick=\"return addLabel()\">". |
164 | __('Create label')."</button> "; | |
1e5548db | 165 | |
577399e8 AD |
166 | print "<button onclick=\"javascript:removeSelectedLabels()\">". |
167 | __('Remove')."</button> "; | |
1e5548db | 168 | |
577399e8 AD |
169 | print "<button onclick=\"labelColorReset()\">". |
170 | __('Clear colors')."</button>"; | |
1e5548db AD |
171 | |
172 | ||
173 | print "</div>"; | |
ef8be8ea | 174 | |
112d2aec | 175 | if ($label_search) { |
1638fc4e AD |
176 | |
177 | $label_search = split(" ", $label_search); | |
178 | $tokens = array(); | |
179 | ||
180 | foreach ($label_search as $token) { | |
181 | ||
182 | $token = trim($token); | |
183 | array_push($tokens, "(UPPER(caption) LIKE UPPER('%$token%'))"); | |
184 | ||
185 | } | |
186 | ||
187 | $label_search_query = "(" . join($tokens, " AND ") . ") AND "; | |
188 | ||
112d2aec AD |
189 | } else { |
190 | $label_search_query = ""; | |
191 | } | |
192 | ||
ef8be8ea | 193 | $result = db_query($link, "SELECT |
2eb9c95c | 194 | * |
ef8be8ea | 195 | FROM |
ceb30ba4 | 196 | ttrss_labels2 |
ef8be8ea | 197 | WHERE |
112d2aec | 198 | $label_search_query |
ef8be8ea AD |
199 | owner_uid = ".$_SESSION["uid"]." |
200 | ORDER BY $sort"); | |
201 | ||
202 | // print "<div id=\"infoBoxShadow\"><div id=\"infoBox\">PLACEHOLDER</div></div>"; | |
203 | ||
204 | if (db_num_rows($result) != 0) { | |
205 | ||
ef8be8ea AD |
206 | print "<p><table width=\"100%\" cellspacing=\"0\" |
207 | class=\"prefLabelList\" id=\"prefLabelList\">"; | |
208 | ||
209 | print "<tr><td class=\"selectPrompt\" colspan=\"8\"> | |
e8d0177d | 210 | ".__('Select:')." |
a998dbef AD |
211 | <a href=\"#\" onclick=\"selectPrefRows('label', true)\">".__('All')."</a>, |
212 | <a href=\"#\" onclick=\"selectPrefRows('label', false)\">".__('None')."</a> | |
ef8be8ea AD |
213 | </td</tr>"; |
214 | ||
4d23f96e | 215 | /* print "<tr class=\"title\"> |
ef8be8ea | 216 | <td width=\"5%\"> </td> |
4d23f96e | 217 | <td width=\"95%\"><a href=\"javascript:updateLabelList('caption')\">".__('Caption')."</a></td> |
ef8be8ea | 218 | </td> |
4d23f96e | 219 | </tr>"; */ |
ef8be8ea AD |
220 | |
221 | $lnum = 0; | |
222 | ||
223 | while ($line = db_fetch_assoc($result)) { | |
224 | ||
225 | $class = ($lnum % 2) ? "even" : "odd"; | |
226 | ||
227 | $label_id = $line["id"]; | |
ceb30ba4 AD |
228 | $this_row_id = "id=\"LILRR-$label_id\""; |
229 | ||
ef8be8ea AD |
230 | print "<tr class=\"$class\" $this_row_id>"; |
231 | ||
ceb30ba4 | 232 | $line["caption"] = htmlspecialchars($line["caption"]); |
2eb9c95c AD |
233 | |
234 | $fg_color = $line["fg_color"]; | |
235 | $bg_color = $line["bg_color"]; | |
236 | ||
aec9df48 AD |
237 | if (!$fg_color) $fg_color = ""; |
238 | if (!$bg_color) $bg_color = ""; | |
2eb9c95c | 239 | |
4d23f96e | 240 | print "<td width='5%' align='center'><input |
a998dbef | 241 | onclick='toggleSelectRow(this);' |
ef8be8ea AD |
242 | type=\"checkbox\" id=\"LICHK-".$line["id"]."\"></td>"; |
243 | ||
76b2bc65 | 244 | $id = $line['id']; |
c17d514b | 245 | |
aec9df48 AD |
246 | print "<td>"; |
247 | ||
248 | print "<div class='labelColorIndicator' id='LICID-$id' | |
2eb9c95c | 249 | style='color : $fg_color; background-color : $bg_color' |
7daf349a | 250 | title='".__('Click to change color')."' |
b6ba48c1 AD |
251 | onclick=\"colorPicker('$id', '$fg_color', '$bg_color')\">α"; |
252 | print_color_picker($id); | |
253 | print "</div>"; | |
c17d514b | 254 | |
c17d514b | 255 | |
aec9df48 | 256 | print "<span class='prefsLabelEntry' |
2eb9c95c | 257 | id=\"LILT-".$line["id"]."\">" . $line["caption"] . |
c17d514b AD |
258 | "</span>"; |
259 | ||
76b2bc65 | 260 | print "</td>"; |
ef8be8ea AD |
261 | |
262 | print "</tr>"; | |
263 | ||
264 | ++$lnum; | |
265 | } | |
a5bd7bf0 | 266 | |
ef8be8ea | 267 | print "</table>"; |
ef8be8ea | 268 | |
ef8be8ea AD |
269 | |
270 | } else { | |
a5bd7bf0 AD |
271 | print "<p>"; |
272 | if (!$label_search) { | |
cea04d61 | 273 | print_warning(__('No labels defined.')); |
a5bd7bf0 | 274 | } else { |
cea04d61 | 275 | print_warning(__('No matching labels found.')); |
a5bd7bf0 AD |
276 | } |
277 | print "</p>"; | |
278 | ||
ef8be8ea AD |
279 | } |
280 | } | |
1d4a2918 AD |
281 | |
282 | function print_color_picker($id) { | |
283 | ||
284 | print "<div id=\"colorPicker-$id\" | |
285 | onmouseover=\"colorPickerActive(true)\" | |
286 | onmouseout=\"colorPickerActive(false)\" | |
287 | class=\"colorPicker\" style='display : none'>"; | |
288 | ||
289 | $color_picker_pairs = array( | |
290 | array('#ff0000', '#ffffff'), | |
291 | array('#009000', '#ffffff'), | |
292 | array('#0000ff', '#ffffff'), | |
293 | array('#ff00ff', '#ffffff'), | |
294 | array('#009090', '#ffffff'), | |
295 | ||
296 | array('#ffffff', '#ff0000'), | |
297 | array('#000000', '#00ff00'), | |
298 | array('#ffffff', '#0000ff'), | |
299 | array('#ffffff', '#ff00ff'), | |
300 | array('#000000', '#00ffff'), | |
301 | ||
302 | array('#7b07e1', '#ffffff'), | |
303 | array('#0091b4', '#ffffff'), | |
304 | array('#00aa71', '#ffffff'), | |
305 | array('#7d9e01', '#ffffff'), | |
306 | array('#e14a00', '#ffffff'), | |
307 | ||
308 | array('#ffffff', '#7b07e1'), | |
309 | array('#ffffff', '#00b5e1'), | |
310 | array('#ffffff', '#00e196'), | |
311 | array('#ffffff', '#b3e100'), | |
312 | array('#ffffff', '#e14a00'), | |
313 | ||
314 | array('#000000', '#ffffff'), | |
315 | array('#ffffff', '#000000'), | |
316 | array('#ffffff', '#909000'), | |
317 | array('#063064', '#fff7d5'), | |
318 | array('#ffffff', '#4E4E90'), | |
319 | ); | |
320 | ||
321 | foreach ($color_picker_pairs as $c) { | |
322 | $fg_color = $c[0]; | |
323 | $bg_color = $c[1]; | |
324 | ||
325 | print "<div class='colorPickerEntry' | |
326 | style='color : $fg_color; background-color : $bg_color;' | |
327 | onclick=\"colorPickerDo('$id', '$fg_color', '$bg_color')\">α</div>"; | |
328 | ||
329 | } | |
330 | ||
331 | print "<br clear='both'>"; | |
332 | ||
333 | print "<br/><b>".__('custom color:')."</b>"; | |
334 | print "<div class=\"ccPrompt\" onclick=\"labelColorAsk('$id', 'fg')\">".__("foreground")."</div>"; | |
335 | print "<div class=\"ccPrompt\" onclick=\"labelColorAsk('$id', 'bg')\">".__("background")."</div>"; | |
336 | ||
337 | print "</div>"; | |
338 | } | |
339 | ||
ef8be8ea | 340 | ?> |