Changeset 25654


Ignore:
Timestamp:
11/23/13 16:16:27 (6 years ago)
Author:
mistic100
Message:
  • add quick edit form for picture (todo: album)
  • add "Delete photo" button
Location:
extensions/AdminTools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • extensions/AdminTools/include/events.inc.php

    r25629 r25654  
    2121    'USER' => $MultiView->get_user(), 
    2222    'CURRENT_USERNAME' => $user['id']==$conf['guest_id'] ? l10n('guest') : $user['username'], 
     23    'PWG_TOKEN' => get_pwg_token(), 
    2324    ); 
    2425 
     
    2728  { 
    2829    global $picture; 
     30 
     31    include_once(PHPWG_ROOT_PATH . 'admin/include/functions.php'); 
    2932 
    3033    $url_self = duplicate_picture_url(); 
     
    3841      )); 
    3942 
     43    $template->set_prefilter('picture', 'admintools_remove_privacy'); 
     44 
    4045    $query = 'SELECT element_id FROM ' . CADDIE_TABLE . ' 
    4146      WHERE element_id = ' . $page['image_id'] .';'; 
     
    6368      $url_self, 
    6469      array('action'=>'add_to_caddie') 
     70      ); 
     71 
     72    // gets tags 
     73    $query = ' 
     74SELECT id, name 
     75  FROM '.IMAGE_TAG_TABLE.' AS it 
     76    JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id 
     77  WHERE image_id = '.$page['image_id'].' 
     78;'; 
     79    $tag_selection = get_taglist($query); 
     80 
     81    $query = ' 
     82SELECT id, name 
     83  FROM '.TAGS_TABLE.' 
     84;'; 
     85    $tags = get_taglist($query, false); 
     86 
     87    $tpl_vars['QUICK_EDIT'] = array( 
     88      'file' => $picture['current']['file'], 
     89      'name' => $picture['current']['name'], 
     90      'comment' => $picture['current']['comment'], 
     91      'author' => $picture['current']['author'], 
     92      'level' => $picture['current']['level'], 
     93      'date_creation' => substr($picture['current']['date_creation'], 0, 10), 
     94      'date_creation_time' => substr($picture['current']['date_creation'], 11, 5), 
     95      'tag_selection' => $tag_selection, 
     96      'tags' => $tags, 
    6597      ); 
    6698  } 
     
    122154  $template->parse('ato'); 
    123155} 
     156 
     157function admintools_remove_privacy($content) 
     158{ 
     159  $search = '{if $display_info.privacy_level and isset($available_permission_levels)}'; 
     160  $replace = '{if false}'; 
     161  return str_replace($search, $replace, $content); 
     162} 
     163 
     164function admintools_save_picture() 
     165{ 
     166  global $page, $conf; 
     167 
     168  if (isset($_GET['delete']) and get_pwg_token()==@$_GET['pwg_token']) 
     169  { 
     170    include_once(PHPWG_ROOT_PATH . 'admin/include/functions.php'); 
     171 
     172    delete_elements(array($page['image_id']), true); 
     173    invalidate_user_cache(); 
     174 
     175    if (isset($page['category'])) 
     176    { 
     177      redirect( 
     178        make_index_url( 
     179          array( 
     180            'category' => $page['category'] 
     181            ) 
     182          ) 
     183        ); 
     184    } 
     185 
     186    redirect(make_index_url()); 
     187  } 
     188 
     189  if (@$_POST['action'] == 'quick_edit') 
     190  { 
     191    include_once(PHPWG_ROOT_PATH . 'admin/include/functions.php'); 
     192 
     193    $data = array( 
     194      'name' => $_POST['name'], 
     195      'author' => $_POST['author'], 
     196      'level' => $_POST['level'], 
     197      ); 
     198 
     199    if ($conf['allow_html_descriptions']) 
     200    { 
     201      $data['comment'] = @$_POST['comment']; 
     202    } 
     203    else 
     204    { 
     205      $data['comment'] = strip_tags(@$_POST['comment']); 
     206    } 
     207 
     208    if (!empty($_POST['date_creation']) and strtotime($_POST['date_creation']) !== false) 
     209    { 
     210      $data['date_creation'] = $_POST['date_creation'] .' '. $_POST['date_creation_time']; 
     211    } 
     212 
     213    single_update( 
     214      IMAGES_TABLE, 
     215      $data, 
     216      array('id' => $page['image_id']) 
     217      ); 
     218 
     219    $tag_ids = array(); 
     220    if (!empty($_POST['tags'])) 
     221    { 
     222      $tag_ids = get_tag_ids($_POST['tags']); 
     223    } 
     224    set_tags($tag_ids, $page['image_id']); 
     225  } 
     226} 
  • extensions/AdminTools/main.inc.php

    r25617 r25654  
    3434{ 
    3535  add_event_handler('loc_after_page_header', 'admintools_add_public_controller'); 
     36  add_event_handler('loc_begin_picture', 'admintools_save_picture'); 
    3637} 
    3738 
  • extensions/AdminTools/template/public_controller.tpl

    r25629 r25654  
    22{combine_css path='admin/themes/default/fontello/css/fontello.css'} 
    33{combine_css path=$ADMINTOOLS_PATH|cat:'template/fontello/css/fontello-ato.css'} 
     4 
     5{if isset($ato.QUICK_EDIT)} 
     6  {*<!-- colorbox -->*} 
     7  {combine_script id='jquery.colorbox' load='footer' require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'} 
     8  {combine_css id='colorbox' path='themes/default/js/plugins/colorbox/style2/colorbox.css'} 
     9 
     10  {*<!-- tokeninput -->*} 
     11  {combine_script id='jquery.tokeninput' load='footer' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'} 
     12  {combine_css path='themes/default/js/plugins/jquery.tokeninput.css'} 
     13 
     14  {*<!-- datepicker -->*} 
     15  {combine_script id='jquery.ui.datepicker' load='footer' path='themes/default/js/ui/jquery.ui.datepicker.js'} 
     16 
     17  {assign var=datepicker_language value='themes/default/js/ui/i18n/jquery.ui.datepicker-'|cat:$lang_info.code|cat:'.js'} 
     18  {if 'PHPWG_ROOT_PATH'|@constant|@cat:$datepicker_language|@file_exists} 
     19  {combine_script id='jquery.ui.datepicker'|cat:$lang_info.code load='footer' path=$datepicker_language} 
     20  {/if} 
     21 
     22  {combine_css path='themes/default/js/ui/theme/jquery.ui.core.css'} 
     23  {combine_css path='themes/default/js/ui/theme/jquery.ui.theme.css'} 
     24  {combine_css path='themes/default/js/ui/theme/jquery.ui.datepicker.css'} 
     25{/if} 
     26 
    427 
    528<div id="ato_header_closed"><a href="#" class="icon-tools"></a></div> 
     
    2144    <li class="parent"><a href="#" class="icon-pencil">{'Edit'|translate}</a> 
    2245      <ul> 
    23         <li><a href="#" class="icon-ato-flash edit-quick">{'Quick edit'|translate}</a></li> 
     46        <li><a href="#ato_quick_edit" class="icon-ato-flash edit-quick">{'Quick edit'|translate}</a></li> 
    2447        <li><a class="icon-ato-doc-text-inv" href="{$ato.U_EDIT}">{'Properties page'|translate}</a></li> 
    2548      </ul> 
     
    3457  {if isset($ato.IS_CATEGORY)} 
    3558    <li><a class="icon-plus-circled" href="{$ato.U_SITE_ADMIN}photos_add&amp;album={$ato.CATEGORY_ID}">{'Add Photos'|translate}</a></li> 
     59  {/if} 
     60  {if isset($ato.IS_PICTURE)} 
     61    <li><a class="icon-ato-cancel" href="{$ato.U_SELF}delete&amp;pwg_token={$ato.PWG_TOKEN}" onclick="return confirm('{'Are you sure?'|translate|escape:javascript}')">{'delete photo'|translate|ucfirst}</a></li> 
    3662  {/if} 
    3763 
     
    7096</div> 
    7197 
     98{if isset($ato.QUICK_EDIT)} 
     99<div style="display:none;"> 
     100  <div id="ato_quick_edit"> 
     101    <form method="post" action="{$ato.U_SELF}"> 
     102      <fieldset class="left"> 
     103        <img src="{$current.derivatives.square->get_url()}" width="100" height="100"> 
     104        <br><input type="submit" value="{'Save'|translate}"> 
     105        <br><a href="#" class="icon-ato-cancel close-edit">{'Cancel'|translate}</a> 
     106      </fieldset> 
     107 
     108      <fieldset class="main"> 
     109        <label for="quick_edit_name">{'Name'|translate}</label> 
     110        <input type="text" name="name" id="quick_edit_name" value="{$ato.QUICK_EDIT.name|escape:html}"> 
     111 
     112        <label for="quick_edit_author">{'Author'|translate}</label> 
     113        <input type="text" name="author" id="quick_edit_author" value="{$ato.QUICK_EDIT.author|escape:html}"> 
     114 
     115 
     116        <label for="quick_edit_date_creation">{'Creation date'|translate}</label> 
     117        <input type="text" name="date_creation" id="quick_edit_date_creation" class="datepicker" value="{$ato.QUICK_EDIT.date_creation}"> 
     118        <input type="hidden" name="date_creation_time" value="{$ato.QUICK_EDIT.date_creation_time}"> 
     119 
     120        <label for="quick_edit_tags">{'Tags'|translate}</label> 
     121        <select name="tags" id="quick_edit_tags" class="tags"> 
     122        {foreach from=$ato.QUICK_EDIT.tag_selection item=tag} 
     123          <option value="{$tag.id}" class="selected">{$tag.name}</option> 
     124        {/foreach} 
     125        </select> 
     126 
     127        <label for="quick_edit_comment">{'Description'|translate}</label> 
     128        <textarea name="comment" id="quick_edit_comment">{$ato.QUICK_EDIT.comment}</textarea> 
     129 
     130        <label for="quick_edit_level">{'Who can see this photo?'|@translate}</label> 
     131        <select name="level" size="1"> 
     132          {html_options options=$available_permission_levels selected=$ato.QUICK_EDIT.level} 
     133        </select> 
     134      </fieldset> 
     135 
     136      <input type="hidden" name="action" value="quick_edit"> 
     137    </form> 
     138  </div> 
     139</div> 
     140{/if} 
     141 
    72142{footer_script require='jquery'} 
    73143(function($){ 
     
    111181  }); 
    112182 
     183{*<!-- select boxes -->*} 
    113184  $ato.find('.switcher').on({ 
    114185    'change': function() { 
     
    120191  }); 
    121192 
     193{*<!-- toggle toolbar -->*} 
    122194  $ato.find('.close-panel').on('click', function(e) { 
    123195    $ato.slideUp(); 
     
    128200    e.preventDefault(); 
    129201  }); 
    130    
     202 
    131203  $ato_closed.on('click', function(e) { 
    132204    $ato.slideDown(); 
     
    193265{/if} 
    194266 
     267{* <!-- quick edit -->*} 
     268{if isset($ato.QUICK_EDIT)} 
     269  var $ato_edit = $('#ato_quick_edit'); 
     270 
     271  $ato_edit.css('background-color', $("#the_page #content").css('background-color')); 
     272 
     273  $ato_edit.find('.close-edit').on('click', function(e) { 
     274    $.colorbox.close() 
     275    e.preventDefault(); 
     276  }); 
     277 
     278  $ato_edit.find('.datepicker').datepicker({ 
     279    dateFormat: 'yy-mm-dd' 
     280  }); 
     281 
     282  $ato_edit.find('.tags').tokenInput( 
     283    [{foreach from=$ato.QUICK_EDIT.tags item=tag name=tags}{ldelim}"name":"{$tag.name|escape:javascript}","id":"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}], 
     284    { 
     285      hintText: '{'Type in a search term'|@translate}', 
     286      noResultsText: '{'No results'|@translate}', 
     287      searchingText: '{'Searching...'|@translate}', 
     288      newText: ' ({'new'|@translate})', 
     289      animateDropdown: false, 
     290      preventDuplicates: true, 
     291      allowFreeTagging: true 
     292    } 
     293  ); 
     294 
     295  $(".edit-quick").colorbox({ 
     296    inline: true, 
     297    transition: 'none', 
     298    title: '{'Quick edit'|translate|escape:javascript}', 
     299    width: 500, 
     300    top: 50 
     301  }); 
     302{/if} 
     303 
    195304}(jQuery)); 
    196305{/footer_script} 
  • extensions/AdminTools/template/style.css

    r25619 r25654  
    11.icon-ato-null:before { content: ' '; } 
     2 
     3.token-input-dropdown { 
     4  z-index:10000 !important; 
     5} 
    26 
    37#ato_header, #ato_header_closed { 
     
    125129  color:#d00; 
    126130} 
     131 
     132 
     133#ato_quick_edit { 
     134  padding:10px; 
     135} 
     136  #ato_quick_edit fieldset { 
     137    margin:0; 
     138    padding:0; 
     139    border:none; 
     140  } 
     141  #ato_quick_edit fieldset.left { 
     142    float:left; 
     143    width:100px; 
     144    text-align:center; 
     145  } 
     146    #ato_quick_edit input[type="submit"] { 
     147      margin:1.5em 0; 
     148    } 
     149  #ato_quick_edit fieldset.main { 
     150    margin:0 0 0 110px; 
     151  } 
     152    #ato_quick_edit label { 
     153      display:block; 
     154      font-weight:bold; 
     155    } 
     156    #ato_quick_edit input, #ato_quick_edit textarea, #ato_quick_edit select { 
     157      width:100%; 
     158      margin:0 0 1em 0; 
     159      border-radius:2px; 
     160      padding:2px; 
     161      -moz-box-sizing:border-box; 
     162      box-sizing:border-box; 
     163    } 
     164    #ato_quick_edit textarea { 
     165      height:110px; 
     166    } 
     167    #ato_quick_edit ul.token-input-list { 
     168      width:100%; 
     169      margin:0 0 1em 0; 
     170    } 
Note: See TracChangeset for help on using the changeset viewer.