| 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> |
|---|