Dotclear

source: plugins/blogroll/index.php @ 0:54703be25dd6

Revision 0:54703be25dd6, 10.5 KB checked in by Dsls <dsls@…>, 14 years ago (diff)

2.3 branch (trunk) first checkin

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2010 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_CONTEXT_ADMIN')) { return; }
13
14$blogroll = new dcBlogroll($core->blog);
15
16if (!empty($_REQUEST['edit']) && !empty($_REQUEST['id'])) {
17     include dirname(__FILE__).'/edit.php';
18     return;
19}
20
21$default_tab = '';
22$link_title = $link_href = $link_desc = $link_lang = '';
23$cat_title = '';
24
25# Import links
26if (!empty($_POST['import_links']) && !empty($_FILES['links_file']))
27{
28     $default_tab = 'import-links';
29     
30     try
31     {
32          files::uploadStatus($_FILES['links_file']);
33          $ifile = DC_TPL_CACHE.'/'.md5(uniqid());
34          if (!move_uploaded_file($_FILES['links_file']['tmp_name'],$ifile)) {
35               throw new Exception(__('Unable to move uploaded file.'));
36          }
37         
38          require_once dirname(__FILE__).'/class.dc.importblogroll.php';
39          try {
40               $imported = dcImportBlogroll::loadFile($ifile);
41               @unlink($ifile);
42          } catch (Exception $e) {
43               @unlink($ifile);
44               throw $e;
45          }
46         
47         
48          if (empty($imported)) {
49               unset($imported);
50               throw new Exception(__('Nothing to import'));
51          }
52     }
53     catch (Exception $e)
54     {
55          $core->error->add($e->getMessage());
56     }
57}
58
59if (!empty($_POST['import_links_do'])) {
60     foreach ($_POST['entries'] as $idx) {
61          $link_title = $_POST['title'][$idx];
62          $link_href  = $_POST['url'][$idx];
63          $link_desc  = $_POST['desc'][$idx];
64          try {
65               $blogroll->addLink($link_title,$link_href,$link_desc,'');
66          } catch (Exception $e) {
67               $core->error->add($e->getMessage());
68               $default_tab = 'import-links';
69          }
70     }
71     http::redirect($p_url.'&importlinks=1');     
72}
73
74if (!empty($_POST['cancel_import'])) {
75     $core->error->add(__('Import operation cancelled.'));
76     $default_tab = 'import-links';     
77}
78
79# Add link
80if (!empty($_POST['add_link']))
81{
82     $link_title = $_POST['link_title'];
83     $link_href = $_POST['link_href'];
84     $link_desc = $_POST['link_desc'];
85     $link_lang = $_POST['link_lang'];
86     
87     try {
88          $blogroll->addLink($link_title,$link_href,$link_desc,$link_lang);
89          http::redirect($p_url.'&addlink=1');
90     } catch (Exception $e) {
91          $core->error->add($e->getMessage());
92          $default_tab = 'add-link';
93     }
94}
95
96# Add category
97if (!empty($_POST['add_cat']))
98{
99     $cat_title = $_POST['cat_title'];
100     
101     try {
102          $blogroll->addCategory($cat_title);
103          http::redirect($p_url.'&addcat=1');
104     } catch (Exception $e) {
105          $core->error->add($e->getMessage());
106          $default_tab = 'add-cat';
107     }
108}
109
110# Delete link
111if (!empty($_POST['removeaction']) && !empty($_POST['remove'])) {
112     foreach ($_POST['remove'] as $k => $v)
113     {
114          try {
115               $blogroll->delItem($v);
116          } catch (Exception $e) {
117               $core->error->add($e->getMessage());
118               break;
119          }
120     }
121     
122     if (!$core->error->flag()) {
123          http::redirect($p_url.'&removed=1');
124     }
125}
126
127# Order links
128$order = array();
129if (empty($_POST['links_order']) && !empty($_POST['order'])) {
130     $order = $_POST['order'];
131     asort($order);
132     $order = array_keys($order);
133} elseif (!empty($_POST['links_order'])) {
134     $order = explode(',',$_POST['links_order']);
135}
136
137if (!empty($_POST['saveorder']) && !empty($order))
138{
139     foreach ($order as $pos => $l) {
140          $pos = ((integer) $pos)+1;
141         
142          try {
143               $blogroll->updateOrder($l,$pos);
144          } catch (Exception $e) {
145               $core->error->add($e->getMessage());
146          }
147     }
148     
149     if (!$core->error->flag()) {
150          http::redirect($p_url.'&neworder=1');
151     }
152}
153
154
155# Get links
156try {
157     $rs = $blogroll->getLinks();
158} catch (Exception $e) {
159     $core->error->add($e->getMessage());
160}
161
162?>
163<html>
164<head>
165  <title>Blogroll</title>
166  <?php echo dcPage::jsToolMan(); ?>
167  <?php echo dcPage::jsConfirmClose('links-form','add-link-form','add-category-form'); ?>
168  <script type="text/javascript">
169  //<![CDATA[
170 
171  var dragsort = ToolMan.dragsort();
172  $(function() {
173     dragsort.makeTableSortable($("#links-list").get(0),
174     dotclear.sortable.setHandle,dotclear.sortable.saveOrder);
175     
176     $('.checkboxes-helpers').each(function() {
177          dotclear.checkboxesHelpers(this);
178     });
179  });
180 
181  dotclear.sortable = {
182       setHandle: function(item) {
183          var handle = $(item).find('td.handle').get(0);
184          while (handle.firstChild) {
185               handle.removeChild(handle.firstChild);
186          }
187         
188          item.toolManDragGroup.setHandle(handle);
189          handle.className = handle.className+' handler';
190       },
191       
192       saveOrder: function(item) {
193          var group = item.toolManDragGroup;
194          var order = document.getElementById('links_order');
195          group.register('dragend', function() {
196               order.value = '';
197               items = item.parentNode.getElementsByTagName('tr');
198               
199               for (var i=0; i<items.length; i++) {
200                    order.value += items[i].id.substr(2)+',';
201               }
202          });
203       }
204  };
205  //]]>
206  </script>
207  <?php echo dcPage::jsPageTabs($default_tab); ?>
208</head>
209
210<body>
211<h2><?php echo html::escapeHTML($core->blog->name); ?> &rsaquo; Blogroll</h2>
212
213<?php
214if (!empty($_GET['neworder'])) {
215     echo '<p class="message">'.__('Items order has been successfully updated').'</p>';
216}
217
218if (!empty($_GET['removed'])) {
219          echo '<p class="message">'.__('Items have been successfully removed.').'</p>';
220}
221
222if (!empty($_GET['addlink'])) {
223          echo '<p class="message">'.__('Link has been successfully created.').'</p>';
224}
225
226if (!empty($_GET['addcat'])) {
227          echo '<p class="message">'.__('category has been successfully created.').'</p>';
228}
229
230if (!empty($_GET['importlinks'])) {
231          echo '<p class="message">'.__('links have been successfully imported.').'</p>';
232}
233?>
234
235<div class="multi-part" title="<?php echo __('Blogroll'); ?>">
236<form action="plugin.php" method="post" id="links-form">
237<table class="maximal dragable">
238<thead>
239<tr>
240  <th colspan="3"><?php echo __('Title'); ?></th>
241  <th><?php echo __('Description'); ?></th>
242  <th><?php echo __('URL'); ?></th>
243  <th><?php echo __('Lang'); ?></th>
244</tr>
245</thead>
246<tbody id="links-list">
247<?php
248while ($rs->fetch())
249{
250     $position = (string) $rs->index()+1;
251     
252     echo
253     '<tr class="line" id="l_'.$rs->link_id.'">'.
254     '<td class="handle minimal">'.form::field(array('order['.$rs->link_id.']'),2,5,$position).'</td>'.
255     '<td class="minimal">'.form::checkbox(array('remove[]'),$rs->link_id).'</td>';
256     
257     
258     if ($rs->is_cat)
259     {
260          echo
261          '<td colspan="5"><strong><a href="'.$p_url.'&amp;edit=1&amp;id='.$rs->link_id.'">'.
262          html::escapeHTML($rs->link_desc).'</a></strong></td>';
263     }
264     else
265     {
266          echo
267          '<td><a href="'.$p_url.'&amp;edit=1&amp;id='.$rs->link_id.'">'.
268          html::escapeHTML($rs->link_title).'</a></td>'.
269          '<td>'.html::escapeHTML($rs->link_desc).'</td>'.
270          '<td>'.html::escapeHTML($rs->link_href).'</td>'.
271          '<td>'.html::escapeHTML($rs->link_lang).'</td>';
272     }
273     
274     echo '</tr>';
275}
276?>
277</tbody>
278</table>
279<?php
280     if (!$rs->isEmpty()) {
281          echo
282          '<div class="two-cols">'.
283          '<p class="col">'.form::hidden('links_order','').
284          form::hidden(array('p'),'blogroll').
285          $core->formNonce().
286          '<input type="submit" name="saveorder" value="'.__('Save order').'"></p>'.
287         
288          '<p class="col right"><input type="submit" name="removeaction"'.
289          'value="'.__('Delete selected links').'" '.
290          'onclick="return window.confirm(\''.html::escapeJS(
291               __('Are you sure you want to delete selected links?')).'\');" /></p>'.
292          '</div>';
293     } else {
294          echo
295          '<div><p>'.__('The link list is empty.').'</p></div>';
296     }
297?>
298</form>
299</div>
300
301<?php
302echo
303'<div class="multi-part" id="add-link" title="'.__('Add a link').'">'.
304'<form action="plugin.php" method="post" id="add-link-form">'.
305'<fieldset class="two-cols"><legend>'.__('Add a new link').'</legend>'.
306'<p class="col"><label class="required" title="'.__('Required field').'">'.__('Title:').' '.
307form::field('link_title',30,255,$link_title,'',2).
308'</label></p>'.
309
310'<p class="col"><label class="required" title="'.__('Required field').'">'.__('URL:').' '.
311form::field('link_href',30,255,$link_href,'',3).
312'</label></p>'.
313
314'<p class="col"><label>'.__('Description:').' '.
315form::field('link_desc',30,255,$link_desc,'',4).
316'</label></p>'.
317
318'<p class="col"><label>'.__('Language:').' '.
319form::field('link_lang',5,5,$link_lang,'',5).
320'</label></p>'.
321'<p>'.form::hidden(array('p'),'blogroll').
322$core->formNonce().
323'<input type="submit" name="add_link" value="'.__('save').'" tabindex="6" /></p>'.
324'</fieldset>'.
325'</form>'.
326'</div>';
327
328echo
329'<div class="multi-part" id="add-cat" title="'.__('Add a category').'">'.
330'<form action="plugin.php" method="post" id="add-category-form">'.
331'<fieldset><legend>'.__('Add a new category').'</legend>'.
332'<p><label class=" classic required" title="'.__('Required field').'">'.__('Title:').' '.
333form::field('cat_title',30,255,$cat_title,'',7).'</label> '.
334form::hidden(array('p'),'blogroll').
335$core->formNonce().
336'<input type="submit" name="add_cat" value="'.__('save').'" tabindex="8" /></p>'.
337'</fieldset>'.
338'</form>'.
339'</div>';
340
341echo
342'<div class="multi-part" id="import-links" title="'.__('Import links').'">';
343if (!isset($imported)) {
344     echo
345     '<form action="plugin.php" method="post" id="import-links-form" enctype="multipart/form-data">'.
346     '<fieldset><legend>'.__('Import links').'</legend>'.
347     '<p><label class=" classic required" title="'.__('Required field').'">'.__('OPML or XBEL File:').' '.
348     '<input type="file" name="links_file" /></label></p>'.
349     '<p>'.form::hidden(array('p'),'blogroll').
350     $core->formNonce().
351     '<input type="submit" name="import_links" value="'.__('import').'" tabindex="10" /></p>'.
352     '</fieldset>'.
353     '</form>';
354}
355else {
356     echo
357     '<form action="plugin.php" method="post" id="import-links-form">'.
358     '<fieldset><legend>'.__('Import links').'</legend>';
359     if (empty($imported)) {
360          echo '<p>'.__('Nothing to import').'</p>';
361     }
362     else {
363          echo
364          '<table class="clear maximal"><tr>'.
365          '<th colspan="2">'.__('Title').'</th>'.
366          '<th>'.__('Description').'</th>'.
367          '</tr>';
368         
369          $i = 0;
370          foreach ($imported as $entry) {
371               $url   = html::escapeHTML($entry->link);
372               $title = html::escapeHTML($entry->title);
373               $desc  = html::escapeHTML($entry->desc);
374               
375               echo 
376               '<tr><td>'.form::checkbox(array('entries[]'),$i,'','','').'</td>'.
377               '<td nowrap><a href="'.$url.'">'.$title.'</a>'.
378               '<input type="hidden" name="url['.$i.']" value="'.$url.'" />'.
379               '<input type="hidden" name="title['.$i.']" value="'.$title.'" />'.
380               '</td>'.
381               '<td>'.$desc.
382               '<input type="hidden" name="desc['.$i.']" value="'.$desc.'" />'.
383               '</td></tr>'."\n";           
384               $i++;
385          }
386          echo
387          '</table>'.
388          '<div class="two-cols">'.
389          '<p class="col checkboxes-helpers"></p>'.
390         
391          '<p class="col right">'.
392          form::hidden(array('p'),'blogroll').
393          $core->formNonce().
394          '<input type="submit" name="cancel_import" value="'.__('cancel').'" tabindex="10" />&nbsp;'.
395          '<input type="submit" name="import_links_do" value="'.__('import').'" tabindex="11" /></p>'.
396          '</div>';
397     }
398     echo
399     '</fieldset>'.
400     '</form>';
401}
402echo '</div>';
403?>
404
405</body>
406</html>
Note: See TracBrowser for help on using the repository browser.

Sites map