1 | <?php |
---|
2 | /** |
---|
3 | * @brief blogroll, a plugin for Dotclear 2 |
---|
4 | * |
---|
5 | * @package Dotclear |
---|
6 | * @subpackage Plugins |
---|
7 | * |
---|
8 | * @copyright Olivier Meunier & Association Dotclear |
---|
9 | * @copyright GPL-2.0-only |
---|
10 | */ |
---|
11 | |
---|
12 | if (!defined('DC_CONTEXT_ADMIN')) {return;} |
---|
13 | |
---|
14 | $id = html::escapeHTML($_REQUEST['id']); |
---|
15 | |
---|
16 | try { |
---|
17 | $rs = $blogroll->getLink($id); |
---|
18 | } catch (Exception $e) { |
---|
19 | $core->error->add($e->getMessage()); |
---|
20 | } |
---|
21 | |
---|
22 | if (!$core->error->flag() && $rs->isEmpty()) { |
---|
23 | $core->error->add(__('No such link or title')); |
---|
24 | } else { |
---|
25 | $link_title = $rs->link_title; |
---|
26 | $link_href = $rs->link_href; |
---|
27 | $link_desc = $rs->link_desc; |
---|
28 | $link_lang = $rs->link_lang; |
---|
29 | $link_xfn = $rs->link_xfn; |
---|
30 | } |
---|
31 | |
---|
32 | # Update a link |
---|
33 | if (isset($rs) && !$rs->is_cat && !empty($_POST['edit_link'])) { |
---|
34 | $link_title = html::escapeHTML($_POST['link_title']); |
---|
35 | $link_href = html::escapeHTML($_POST['link_href']); |
---|
36 | $link_desc = html::escapeHTML($_POST['link_desc']); |
---|
37 | $link_lang = html::escapeHTML($_POST['link_lang']); |
---|
38 | |
---|
39 | $link_xfn = ''; |
---|
40 | |
---|
41 | if (!empty($_POST['identity'])) { |
---|
42 | $link_xfn .= $_POST['identity']; |
---|
43 | } else { |
---|
44 | if (!empty($_POST['friendship'])) { |
---|
45 | $link_xfn .= ' ' . $_POST['friendship']; |
---|
46 | } |
---|
47 | if (!empty($_POST['physical'])) { |
---|
48 | $link_xfn .= ' met'; |
---|
49 | } |
---|
50 | if (!empty($_POST['professional'])) { |
---|
51 | $link_xfn .= ' ' . implode(' ', $_POST['professional']); |
---|
52 | } |
---|
53 | if (!empty($_POST['geographical'])) { |
---|
54 | $link_xfn .= ' ' . $_POST['geographical']; |
---|
55 | } |
---|
56 | if (!empty($_POST['family'])) { |
---|
57 | $link_xfn .= ' ' . $_POST['family']; |
---|
58 | } |
---|
59 | if (!empty($_POST['romantic'])) { |
---|
60 | $link_xfn .= ' ' . implode(' ', $_POST['romantic']); |
---|
61 | } |
---|
62 | } |
---|
63 | |
---|
64 | try { |
---|
65 | $blogroll->updateLink($id, $link_title, $link_href, $link_desc, $link_lang, trim($link_xfn)); |
---|
66 | dcPage::addSuccessNotice(__('Link has been successfully updated')); |
---|
67 | http::redirect($p_url . '&edit=1&id=' . $id); |
---|
68 | } catch (Exception $e) { |
---|
69 | $core->error->add($e->getMessage()); |
---|
70 | } |
---|
71 | } |
---|
72 | |
---|
73 | # Update a category |
---|
74 | if (isset($rs) && $rs->is_cat && !empty($_POST['edit_cat'])) { |
---|
75 | $link_desc = html::escapeHTML($_POST['link_desc']); |
---|
76 | |
---|
77 | try { |
---|
78 | $blogroll->updateCategory($id, $link_desc); |
---|
79 | dcPage::addSuccessNotice(__('Category has been successfully updated')); |
---|
80 | http::redirect($p_url . '&edit=1&id=' . $id); |
---|
81 | } catch (Exception $e) { |
---|
82 | $core->error->add($e->getMessage()); |
---|
83 | } |
---|
84 | } |
---|
85 | |
---|
86 | # Languages combo |
---|
87 | $links = $blogroll->getLangs(['order' => 'asc']); |
---|
88 | $lang_combo = dcAdminCombos::getLangsCombo($links, true); |
---|
89 | |
---|
90 | ?> |
---|
91 | <html> |
---|
92 | <head> |
---|
93 | <title>Blogroll</title> |
---|
94 | </head> |
---|
95 | |
---|
96 | <body> |
---|
97 | <?php |
---|
98 | echo dcPage::breadcrumb( |
---|
99 | [ |
---|
100 | html::escapeHTML($core->blog->name) => '', |
---|
101 | __('Blogroll') => $p_url |
---|
102 | ]) . |
---|
103 | dcPage::notices(); |
---|
104 | ?> |
---|
105 | |
---|
106 | <?php echo '<p><a class="back" href="' . $p_url . '">' . __('Return to blogroll') . '</a></p>'; ?> |
---|
107 | |
---|
108 | <?php |
---|
109 | if (isset($rs) && $rs->is_cat) { |
---|
110 | echo |
---|
111 | '<form action="' . $p_url . '" method="post">' . |
---|
112 | '<h3>' . __('Edit category') . '</h3>' . |
---|
113 | |
---|
114 | '<p><label for="link_desc" class="required classic"><abbr title="' . __('Required field') . '">*</abbr> ' . __('Title:') . '</label> ' . |
---|
115 | form::field('link_desc', 30, 255, [ |
---|
116 | 'default' => html::escapeHTML($link_desc), |
---|
117 | 'extra_html' => 'required placeholder="' . __('Title') . '" lang="' . $core->auth->getInfo('user_lang') . '" spellcheck="true"' |
---|
118 | ]) . |
---|
119 | |
---|
120 | form::hidden('edit', 1) . |
---|
121 | form::hidden('id', $id) . |
---|
122 | $core->formNonce() . |
---|
123 | '<input type="submit" name="edit_cat" value="' . __('Save') . '"/></p>' . |
---|
124 | '</form>'; |
---|
125 | } |
---|
126 | if (isset($rs) && !$rs->is_cat) { |
---|
127 | |
---|
128 | echo |
---|
129 | '<form action="' . $core->adminurl->get('admin.plugin') . '" method="post" class="two-cols fieldset">' . |
---|
130 | |
---|
131 | '<div class="col30 first-col">' . |
---|
132 | '<h3>' . __('Edit link') . '</h3>' . |
---|
133 | |
---|
134 | '<p><label for="link_title" class="required"><abbr title="' . __('Required field') . '">*</abbr> ' . __('Title:') . '</label> ' . |
---|
135 | form::field('link_title', 30, 255, [ |
---|
136 | 'default' => html::escapeHTML($link_title), |
---|
137 | 'extra_html' => 'required placeholder="' . __('Title') . '" lang="' . $core->auth->getInfo('user_lang') . '" spellcheck="true"' |
---|
138 | ]) . |
---|
139 | '</p>' . |
---|
140 | |
---|
141 | '<p><label for="link_href" class="required"><abbr title="' . __('Required field') . '">*</abbr> ' . __('URL:') . '</label> ' . |
---|
142 | form::url('link_href', [ |
---|
143 | 'size' => 30, |
---|
144 | 'default' => html::escapeHTML($link_href), |
---|
145 | 'extra_html' => 'required placeholder="' . __('URL') . '"' |
---|
146 | ]) . |
---|
147 | '</p>' . |
---|
148 | |
---|
149 | '<p><label for="link_desc">' . __('Description:') . '</label> ' . |
---|
150 | form::field('link_desc', 30, 255, |
---|
151 | [ |
---|
152 | 'default' => html::escapeHTML($link_desc), |
---|
153 | 'extra_html' => 'lang="' . $core->auth->getInfo('user_lang') . '" spellcheck="true"' |
---|
154 | ]) . '</p>' . |
---|
155 | |
---|
156 | '<p><label for="link_lang">' . __('Language:') . '</label> ' . |
---|
157 | form::combo('link_lang', $lang_combo, $link_lang) . |
---|
158 | '</p>' . |
---|
159 | |
---|
160 | '</div>' . |
---|
161 | |
---|
162 | # XFN nightmare |
---|
163 | '<div class="col70 last-col">' . |
---|
164 | '<h3>' . __('XFN information') . '</h3>' . |
---|
165 | '<p class="clear form-note">' . __('More information on <a href="https://en.wikipedia.org/wiki/XHTML_Friends_Network">Wikipedia</a> website') . '</p>' . |
---|
166 | |
---|
167 | '<div class="table-outer">' . |
---|
168 | '<table class="noborder">' . |
---|
169 | |
---|
170 | '<tr class="line">' . |
---|
171 | '<th>' . __('_xfn_Me') . '</th>' . |
---|
172 | '<td><p>' . '<label class="classic">' . |
---|
173 | form::checkbox(['identity'], 'me', ($link_xfn == 'me')) . ' ' . |
---|
174 | __('_xfn_Another link for myself') . '</label></p></td>' . |
---|
175 | '</tr>' . |
---|
176 | |
---|
177 | '<tr class="line">' . |
---|
178 | '<th>' . __('_xfn_Friendship') . '</th>' . |
---|
179 | '<td><p>' . |
---|
180 | '<label class="classic">' . form::radio(['friendship'], 'contact', |
---|
181 | strpos($link_xfn, 'contact') !== false) . __('_xfn_Contact') . '</label> ' . |
---|
182 | '<label class="classic">' . form::radio(['friendship'], 'acquaintance', |
---|
183 | strpos($link_xfn, 'acquaintance') !== false) . __('_xfn_Acquaintance') . '</label> ' . |
---|
184 | '<label class="classic">' . form::radio(['friendship'], 'friend', |
---|
185 | strpos($link_xfn, 'friend') !== false) . __('_xfn_Friend') . '</label> ' . |
---|
186 | '<label class="classic">' . form::radio(['friendship'], '') . __('None') . '</label>' . |
---|
187 | '</p></td>' . |
---|
188 | '</tr>' . |
---|
189 | |
---|
190 | '<tr class="line">' . |
---|
191 | '<th>' . __('_xfn_Physical') . '</th>' . |
---|
192 | '<td><p>' . |
---|
193 | '<label class="classic">' . form::checkbox(['physical'], 'met', |
---|
194 | strpos($link_xfn, 'met') !== false) . __('_xfn_Met') . '</label>' . |
---|
195 | '</p></td>' . |
---|
196 | '</tr>' . |
---|
197 | |
---|
198 | '<tr class="line">' . |
---|
199 | '<th>' . __('_xfn_Professional') . '</th>' . |
---|
200 | '<td><p>' . |
---|
201 | '<label class="classic">' . form::checkbox(['professional[]'], 'co-worker', |
---|
202 | strpos($link_xfn, 'co-worker') !== false) . __('_xfn_Co-worker') . '</label> ' . |
---|
203 | '<label class="classic">' . form::checkbox(['professional[]'], 'colleague', |
---|
204 | strpos($link_xfn, 'colleague') !== false) . __('_xfn_Colleague') . '</label>' . |
---|
205 | '</p></td>' . |
---|
206 | '</tr>' . |
---|
207 | |
---|
208 | '<tr class="line">' . |
---|
209 | '<th>' . __('_xfn_Geographical') . '</th>' . |
---|
210 | '<td><p>' . |
---|
211 | '<label class="classic">' . form::radio(['geographical'], 'co-resident', |
---|
212 | strpos($link_xfn, 'co-resident') !== false) . __('_xfn_Co-resident') . '</label> ' . |
---|
213 | '<label class="classic">' . form::radio(['geographical'], 'neighbor', |
---|
214 | strpos($link_xfn, 'neighbor') !== false) . __('_xfn_Neighbor') . '</label> ' . |
---|
215 | '<label class="classic">' . form::radio(['geographical'], '') . __('None') . '</label>' . |
---|
216 | '</p></td>' . |
---|
217 | '</tr>' . |
---|
218 | |
---|
219 | '<tr class="line">' . |
---|
220 | '<th>' . __('_xfn_Family') . '</th>' . |
---|
221 | '<td><p>' . |
---|
222 | '<label class="classic">' . form::radio(['family'], 'child', |
---|
223 | strpos($link_xfn, 'child') !== false) . __('_xfn_Child') . '</label> ' . |
---|
224 | '<label class="classic">' . form::radio(['family'], 'parent', |
---|
225 | strpos($link_xfn, 'parent') !== false) . __('_xfn_Parent') . '</label> ' . |
---|
226 | '<label class="classic">' . form::radio(['family'], 'sibling', |
---|
227 | strpos($link_xfn, 'sibling') !== false) . __('_xfn_Sibling') . '</label> ' . |
---|
228 | '<label class="classic">' . form::radio(['family'], 'spouse', |
---|
229 | strpos($link_xfn, 'spouse') !== false) . __('_xfn_Spouse') . '</label> ' . |
---|
230 | '<label class="classic">' . form::radio(['family'], 'kin', |
---|
231 | strpos($link_xfn, 'kin') !== false) . __('_xfn_Kin') . '</label> ' . |
---|
232 | '<label class="classic">' . form::radio(['family'], '') . __('None') . '</label>' . |
---|
233 | '</p></td>' . |
---|
234 | '</tr>' . |
---|
235 | |
---|
236 | '<tr class="line">' . |
---|
237 | '<th>' . __('_xfn_Romantic') . '</th>' . |
---|
238 | '<td><p>' . |
---|
239 | '<label class="classic">' . form::checkbox(['romantic[]'], 'muse', |
---|
240 | strpos($link_xfn, 'muse') !== false) . __('_xfn_Muse') . '</label> ' . |
---|
241 | '<label class="classic">' . form::checkbox(['romantic[]'], 'crush', |
---|
242 | strpos($link_xfn, 'crush') !== false) . __('_xfn_Crush') . '</label> ' . |
---|
243 | '<label class="classic">' . form::checkbox(['romantic[]'], 'date', |
---|
244 | strpos($link_xfn, 'date') !== false) . __('_xfn_Date') . '</label> ' . |
---|
245 | '<label class="classic">' . form::checkbox(['romantic[]'], 'sweetheart', |
---|
246 | strpos($link_xfn, 'sweetheart') !== false) . __('_xfn_Sweetheart') . '</label> ' . |
---|
247 | '</p></td>' . |
---|
248 | '</tr>' . |
---|
249 | '</table></div>' . |
---|
250 | |
---|
251 | '</div>' . |
---|
252 | '<p class="clear">' . form::hidden('p', 'blogroll') . |
---|
253 | form::hidden('edit', 1) . |
---|
254 | form::hidden('id', $id) . |
---|
255 | $core->formNonce() . |
---|
256 | '<input type="submit" name="edit_link" value="' . __('Save') . '"/></p>' . |
---|
257 | |
---|
258 | '</form>'; |
---|
259 | } |
---|
260 | ?> |
---|
261 | </body> |
---|
262 | </html> |
---|