Changeset 26180


Ignore:
Timestamp:
Dec 24, 2013, 6:23:13 PM (7 years ago)
Author:
mistic100
Message:

update for piwigo 2.6

Location:
extensions/flickr2piwigo
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • extensions/flickr2piwigo/admin.php

    r16070 r26180  
    11<?php
    2 if (!defined('FLICKR_PATH')) die('Hacking attempt!');
     2defined('FLICKR_PATH') or die('Hacking attempt!');
    33
    44global $template, $page, $conf;
    55
    6 $conf['flickr2piwigo'] = unserialize($conf['flickr2piwigo']);
    76load_language('plugin.lang', FLICKR_PATH);
    87
     
    1514include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
    1615$page['tab'] = (isset($_GET['tab'])) ? $_GET['tab'] : $page['tab'] = 'import';
    17  
     16
    1817$tabsheet = new tabsheet();
    1918$tabsheet->add('import', l10n('Import'), FLICKR_ADMIN . '-import');
     
    3130  'FLICKR_ADMIN' => FLICKR_ADMIN,
    3231  ));
     32
    3333$template->assign_var_from_handle('ADMIN_CONTENT', 'flickr2piwigo');
    34 
    35 ?>
  • extensions/flickr2piwigo/admin/config.php

    r24815 r26180  
    11<?php
    2 if (!defined('FLICKR_PATH')) die('Hacking attempt!');
     2defined('FLICKR_PATH') or die('Hacking attempt!');
    33
    44if (isset($_POST['save_config']))
     
    2121
    2222
    23 $template->set_filename('flickr2piwigo', dirname(__FILE__) . '/template/config.tpl');
    24 
    25 ?>
     23$template->set_filename('flickr2piwigo', realpath(FLICKR_PATH . 'admin/template/config.tpl'));
  • extensions/flickr2piwigo/admin/import.php

    r25789 r26180  
    11<?php
    2 if (!defined('FLICKR_PATH')) die('Hacking attempt!');
     2defined('FLICKR_PATH') or die('Hacking attempt!');
    33
    44set_time_limit(600);
     
    77
    88// check API parameters and connect to flickr
    9 if ( empty($conf['flickr2piwigo']['api_key']) or empty($conf['flickr2piwigo']['secret_key']) )
    10 {
    11   array_push($page['warnings'], l10n('Please fill your API keys on the configuration tab'));
     9if (empty($conf['flickr2piwigo']['api_key']) or empty($conf['flickr2piwigo']['secret_key']))
     10{
     11  $page['warnings'][] = l10n('Please fill your API keys on the configuration tab');
    1212  $_GET['action'] = 'error';
    1313}
    14 else if ( !test_remote_download() )
    15 {
    16   array_push($page['errors'], l10n('No download method available'));
     14else if (!test_remote_download())
     15{
     16  $page['errors'][] = l10n('No download method available');
    1717  $_GET['action'] = 'error';
    1818}
     
    2323  $flickr = new phpFlickr($conf['flickr2piwigo']['api_key'], $conf['flickr2piwigo']['secret_key']);
    2424  $flickr->enableCache('fs', FLICKR_FS_CACHE);
    25  
     25
    2626  // must authenticate
    2727  $u = $flickr->test_login();
     
    3030    $_GET['action'] = 'init_login';
    3131  }
    32  
     32
    3333  // generate token after authentication
    3434  if (!empty($_GET['frob']))
    3535  {
    3636    $flickr->auth_getToken($_GET['frob']);
    37     $_GET['action'] = 'logued';
    38   }
    39 }
    40 
    41 
    42 if (!isset($_GET['action'])) $_GET['action'] = 'main';
     37    $_GET['action'] = 'logged';
     38  }
     39}
     40
     41
     42if (!isset($_GET['action']))
     43{
     44  $_GET['action'] = 'main';
     45}
    4346
    4447
     
    5154    break;
    5255  }
    53  
     56
    5457  // call flickr login procedure
    5558  case 'login':
     
    5861    break;
    5962  }
    60  
     63
    6164  // message after login
    62   case 'logued':
     65  case 'logged':
    6366  {
    6467    $_SESSION['page_infos'][] = l10n('Successfully logged in to you Flickr account');
     
    6669    break;
    6770  }
    68  
     71
    6972  // logout
    7073  case 'logout':
     
    7578    break;
    7679  }
    77  
     80
    7881  // main menu
    7982  case 'main':
     
    8992    break;
    9093  }
    91  
     94
    9295  // list user albums
    9396  case 'list_albums':
     
    97100    $total_albums = $albums['total'];
    98101    $albums = $albums['photoset'];
    99    
     102
    100103    foreach ($albums as &$album)
    101104    {
     
    103106    }
    104107    unset($album);
    105    
     108
    106109    // not classed
    107110    $wo_albums = $flickr->photos_getNotInSet(NULL, NULL, NULL, NULL, 'photos', NULL, NULL, 1);
    108111    if ($wo_albums['photos']['total'] > 0)
    109112    {
    110       array_push($albums, array(
     113      $albums[] = array(
    111114        'id' => 'not_in_set',
    112115        'title' => l10n('Pictures without album'),
     
    114117        'photos' => $wo_albums['photos']['total'],
    115118        'U_LIST' => FLICKR_ADMIN . '-import&amp;action=list_photos&amp;album=not_in_set',
    116         ));
    117     }
    118    
     119        );
     120    }
     121
    119122    $template->assign(array(
    120123      'total_albums' => $total_albums,
     
    123126    break;
    124127  }
    125  
     128
    126129  // list photos of an album
    127130  case 'list_photos':
     
    130133    $flickr_prefix = 'flickr-'.$u['username'].'-';
    131134    $flickr_root_url = $flickr->urls_getUserPhotos($u['id']);
    132    
     135
    133136    // pagination
    134137    if (isset($_GET['start']))   $page['start'] = intval($_GET['start']);
     
    136139    if (isset($_GET['display'])) $page['display'] = $_GET['display']=='all' ? 500 : intval($_GET['display']);
    137140    else                         $page['display'] = 20;
    138    
     141
    139142    // get photos
    140143    if ($_GET['album'] == 'not_in_set')
     
    148151      $all_photos = $all_photos['photoset']['photo'];
    149152    }
    150    
     153
    151154    // get existing photos
    152155    $query = '
     
    157160    $existing_photos = simple_hash_from_query($query, 'id', 'file');
    158161    $existing_photos = array_map(create_function('$p', 'return preg_replace("#^'.$flickr_prefix.'([0-9]+)\.([a-z]{3,4})$#i", "$1", $p);'), $existing_photos);
    159    
     162
    160163    // remove existing photos
    161164    $duplicates = 0;
     
    168171      }
    169172    }
    170    
     173
    171174    if ($duplicates>0)
    172175    {
    173       $page['infos'][] = '<a href="admin.php?page=batch_manager&amp;prefilter=flickr">'
    174           .l10n_dec('One picture is not displayed because already existing in the database.', '%d pictures are not displayed because already existing in the database.', $duplicates)
     176      $page['infos'][] = '<a href="admin.php?page=batch_manager&amp;filter=prefilter-flickr">'
     177          .l10n_dec(
     178            'One picture is not displayed because already existing in the database.',
     179            '%d pictures are not displayed because already existing in the database.',
     180            $duplicates)
    175181        .'</a>';
    176182    }
    177    
     183
    178184    // displayed photos
    179185    $page_photos = array_slice($all_photos, $page['start'], $page['display']);
    180186    $all_elements = array_map(create_function('$p', 'return  \'"\'.$p["id"].\'"\';'), $all_photos);
    181    
     187
    182188    foreach ($page_photos as &$photo)
    183189    {
     
    187193    }
    188194    unset($photo);
    189    
     195
    190196    $template->assign(array(
    191197      'nb_thumbs_set' => count($all_photos),
     
    197203      'U_DISPLAY' => $self_url,
    198204      ));
    199      
     205
    200206    // get piwigo categories
    201207    $query = '
     
    204210;';
    205211    display_select_cat_wrapper($query, array(), 'category_parent_options');
    206    
     212
    207213    // get navbar
    208214    $nav_bar = create_navigation_bar(
     
    215221    break;
    216222  }
    217  
     223
    218224  // list all photos of the user
    219225  case 'list_all':
    220226  {
    221227    $flickr_prefix = 'flickr-'.$u['username'].'-';
    222    
     228
    223229    // get all photos in all albums
    224230    $all_albums = $flickr->photosets_getList($u['id']);
    225231    $all_albums = $all_albums['photoset'];
    226    
     232
    227233    $all_photos = array();
    228234    foreach ($all_albums as $album)
     
    230236      $album_photos = $flickr->photosets_getPhotos($album['id'], NULL, NULL, 500, NULL, 'photos');
    231237      $album_photos = $album_photos['photoset']['photo'];
    232      
     238
    233239      foreach ($album_photos as $photo)
    234240      {
     
    236242      }
    237243    }
    238    
     244
    239245    // get existing photos
    240246    $query = '
     
    245251    $existing_photos = simple_hash_from_query($query, 'id', 'file');
    246252    $existing_photos = array_map(create_function('$p', 'return preg_replace("#^'.$flickr_prefix.'([0-9]+)\.([a-z]{3,4})$#i", "$1", $p);'), $existing_photos);
    247    
     253
    248254    // remove existing photos
    249255    $duplicates = 0;
     
    265271    unset($photo);
    266272    $all_photos = array_values($all_photos);
    267    
     273
    268274    if ($duplicates>0)
    269275    {
    270       $page['infos'][] = '<a href="admin.php?page=batch_manager&amp;prefilter=flickr">'
    271           .l10n_dec('%d picture is not displayed because already existing in the database.', '%d pictures are not displayed because already existing in the database.', $duplicates)
     276      $page['infos'][] = '<a href="admin.php?page=batch_manager&amp;filter=prefilter-flickr">'
     277          .l10n_dec(
     278            'One picture is not displayed because already existing in the database.',
     279            '%d pictures are not displayed because already existing in the database.',
     280            $duplicates)
    272281        .'</a>';
    273282    }
    274    
     283
    275284    $template->assign(array(
    276285      'nb_elements' => count($all_photos),
    277       'all_elements' => json_encode($all_photos),
     286      'all_elements' => $all_photos,
    278287      'F_ACTION' => FLICKR_ADMIN . '-import&amp;action=import_set',
    279288      ));
    280      
     289
    281290    // get piwigo categories
    282291    $query = '
     
    287296    break;
    288297  }
    289  
     298
    290299  // success message after import
    291300  case 'import_set':
     
    293302    if (isset($_POST['done']))
    294303    {
    295       $_SESSION['page_infos'][] = sprintf(l10n('%d pictures imported'), $_POST['done']);
     304      $_SESSION['page_infos'][] = l10n('%d pictures imported', $_POST['done']);
    296305    }
    297306    redirect(FLICKR_ADMIN . '-import');
     
    300309
    301310
    302 $template->assign(array(
    303   'ACTION' => $_GET['action'],
    304   'GMAPS_LOADED' => !empty($pwg_loaded_plugins['rv_gmaps']) || !empty($pwg_loaded_plugins['piwigo-openstreetmap']),
    305   ));
    306 
    307 $template->set_filename('flickr2piwigo', dirname(__FILE__) . '/template/import.tpl');
    308 
    309 ?>
     311$template->assign('ACTION', $_GET['action']);
     312
     313$template->set_filename('flickr2piwigo', realpath(FLICKR_PATH . 'admin/template/import.tpl'));
  • extensions/flickr2piwigo/admin/template/config.tpl

    r16071 r26180  
    1 {combine_css path=$FLICKR_PATH|@cat:"admin/template/style.css"}
     1{combine_css path=$FLICKR_PATH|cat:'admin/template/style.css'}
    22
    33<div class="titrePage">
     
    77<form method="post" action="" class="properties">
    88<fieldset>
    9   <legend>{'Flickr logins'|@translate}</legend>
    10  
     9  <legend>{'Flickr logins'|translate}</legend>
     10
    1111  <ul>
    1212    <li>
    1313      <label>
    14         <span class="property">{'API key'|@translate}</span>
     14        <span class="property">{'API key'|translate}</span>
    1515        <input type="text" name="api_key" value="{$flickr2piwigo.api_key}" size="40">
    1616      </label>
     
    1919    <li>
    2020      <label>
    21         <span class="property">{'API secret'|@translate}</span>
     21        <span class="property">{'API secret'|translate}</span>
    2222        <input type="text" name="secret_key" value="{$flickr2piwigo.secret_key}" size="20">
    2323      </label>
     
    2626</fieldset>
    2727
    28 <p><input type="submit" name="save_config" value="{'Save Settings'|@translate}"></p>
     28<p><input type="submit" name="save_config" value="{'Save Settings'|translate}"></p>
    2929
    3030<fieldset>
    31   <legend>{'How do I get my Flickr API key?'|@translate}</legend>
    32  
    33   <p><b>{'Callback URL'|@translate} :</b> <span style="font-family:monospace;font-size:14px;">{$FLICKR_CALLBACK}</span></p>
     31  <legend>{'How do I get my Flickr API key?'|translate}</legend>
     32
     33  <p><b>{'Callback URL'|translate} :</b> <span style="font-family:monospace;font-size:14px;">{$FLICKR_CALLBACK}</span></p>
    3434  {$FLICKR_HELP_CONTENT}
    3535</fieldset>
    36  
     36
    3737</form>
  • extensions/flickr2piwigo/admin/template/import.list_all.tpl

    r25789 r26180  
    11{footer_script require='jquery.ajaxmanager,jquery.jgrowl'}
    2 /* global vars */
    3 var errorHead   = '{'ERROR'|@translate|@escape:'javascript'}';
    4 var errorMsg    = '{'an error happened'|@translate|@escape:'javascript'}';
    5 var successHead = '{'Success'|@translate|@escape:'javascript'}';
     2(function($){
     3  /* global vars */
     4  var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}];
     5  var import_done = 0;
     6  var import_selected = {$nb_elements};
     7  var queuedManager = $.manageAjax.create('queued', {
     8    queue: true,
     9    maxRequests: 1
     10  });
    611
    7 var import_done = 0;
    8 var import_selected = {$nb_elements};
    9 var queuedManager = jQuery.manageAjax.create('queued', {ldelim}
    10   queue: true, 
    11   maxRequests: 1
    12 });
     12  /* import queue */
     13  function performImport(photo, album, fills) {
     14    queuedManager.add({
     15      type: 'GET',
     16      dataType: 'json',
     17      url: 'ws.php',
     18      data: {
     19        method: 'pwg.images.addFlickr',
     20        id: photo,
     21        category: album,
     22        fills: fills,
     23        format: 'json'
     24      },
     25      success: function(data) {
     26        if (data['stat'] == 'ok') {
     27          $.jGrowl(data['result'], {
     28            theme: 'success', life: 4000, sticky: false,
     29            header: '{'Success'|translate}',
     30          });
     31          $("#photo-"+photo.id).fadeOut(function(){ $(this).remove(); });
     32        }
     33        else {
     34          $.jGrowl(data['result'], {
     35            theme: 'error', sticky: true,
     36            header: '{'ERROR'|translate}'
     37          });
     38        }
    1339
    14 {literal}
    15 /* import queue */
    16 function performImport(photo, album, fills) {
    17   queuedManager.add({
    18     type: 'GET',
    19     dataType: 'json',
    20     url: 'ws.php',
    21     data: { method: 'pwg.images.addFlickr', id: photo, category: album, fills: fills, format: 'json' },
    22     success: function(data) {
    23       if (data['stat'] == 'ok') {
    24         jQuery.jGrowl(data['result'], { theme: 'success', header: successHead, life: 4000, sticky: false });
    25         jQuery("#photo-"+photo.id).fadeOut(function(){ $(this).remove(); });
    26       } else {
    27         jQuery.jGrowl(data['result'], { theme: 'error', header: errorHead, sticky: true });
     40        import_done++;
     41        $("#progress").html(import_done +"/"+ import_selected);
     42
     43        if (import_done == import_selected) {
     44          $("#import_form").append('<input type="hidden" name="done" value="' + import_done + '">');
     45          $("#import_form").submit();
     46        }
     47      },
     48      error: function(data) {
     49        $.jGrowl('{'an error happened'|translate|escape:'javascript'}', {
     50          theme: 'error', sticky: true,
     51          header: '{'ERROR'|translate}'
     52        });
    2853      }
    29      
    30       import_done++;
    31       $("#progress").html(import_done +"/"+ import_selected);
    32      
    33       if (import_done == import_selected) {
    34         $("#import_form").append('<input type="hidden" name="done" value="' + import_done + '">');
    35         $("#import_form").submit();
    36       }
    37     },
    38     error: function(data) {
    39       jQuery.jGrowl(errorMsg, { theme: 'error', header: errorHead, sticky: true });
    40     }
    41   });
    42 }
     54    });
     55  }
    4356
     57  /* begin import */
     58  $('#beginImport').click(function() {
     59    $("#loader_import").fadeIn();
    4460
    45 $(document).ready(function() {
    46   //var all_elements = jQuery.parseJSON('{/literal}{$all_elements}{literal}');
    47   var all_elements = {/literal}{$all_elements}{literal};
    48  
    49   /* begin import */
    50   jQuery('#beginImport').click(function() {
    51     $("#loader_import").fadeIn();
    52    
    5361    if ($("input[name='album_mode']:checked").val() == 'identical') {
    5462      var album = 0;
    55     } else {
     63    }
     64    else {
    5665      var album = $("#albumSelect option:selected").val();
    5766    }
    58    
     67
    5968    var fills = '';
    6069    $("input[name^='fill_']:checked").each(function() {
    6170      fills+= $(this).attr("name") +',';
    62     }); 
    63    
     71    });
     72
    6473    import_selected = all_elements.length;
    6574    $("#progress").html("0/"+ import_selected);
    66    
     75
    6776    for (var i in all_elements) {
    6877      if (album == 0) this_album = all_elements[i]['albums'];
    6978      else            this_album = album;
    70      
     79
    7180      performImport(all_elements[i]['id'], this_album, fills);
    7281    }
    73    
     82
    7483    return false;
    7584  });
    76  
     85
    7786  /* album mode */
    7887  $("input[name='album_mode']").change(function() {
    7988    if ($(this).val() == 'one_album') {
    8089      $("#albumSelectWrapper").slideDown();
    81     } else {
     90    }
     91    else {
    8292      $("#albumSelectWrapper").slideUp();
    8393    }
    8494  });
    85 });
    86 {/literal}
     95}(jQuery));
    8796{/footer_script}
     97
    8898
    8999<form action="{$F_ACTION}" method="post" id="import_form">
    90100
    91101  <fieldset>
    92     <legend>{'Selection'|@translate}</legend>
     102    <legend>{'Selection'|translate}</legend>
    93103
    94104  {if $nb_elements}
    95     {'%d elements ready for importation'|@translate|@sprintf:$nb_elements}
     105    {'%d elements ready for importation'|translate:$nb_elements}
    96106  {else}
    97     <div>{'No photo in the current set.'|@translate}</div>
     107    <div>{'No photo in the current set.'|translate}</div>
    98108  {/if}
    99109  </fieldset>
    100  
     110
    101111  <fieldset>
    102     <legend>{'Import options'|@translate}</legend>
    103    
     112    <legend>{'Import options'|translate}</legend>
     113
    104114    <p>
    105       <label><input type="radio" name="album_mode" value="identical" checked="checked"> {'Reproduce flickr albums'|@translate}</label><br>
    106       <label><input type="radio" name="album_mode" value="one_album"> {'Import all photos in this album'|@translate} :</label>
     115      <label><input type="radio" name="album_mode" value="identical" checked="checked"> {'Reproduce flickr albums'|translate}</label><br>
     116      <label><input type="radio" name="album_mode" value="one_album"> {'Import all photos in this album'|translate} :</label>
    107117    </p>
    108118
     
    111121        {html_options options=$category_parent_options}
    112122      </select>
    113       {'... or '|@translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>
     123      {'... or '|translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|translate}">{'create a new album'|translate}</a>
    114124    </p>
    115    
     125
    116126    <p>
    117       <b>{'Fill these fields from Flickr datas'|@translate}:</b>
    118       <label><input type="checkbox" name="fill_name" checked="checked"> {'Photo name'|@translate}</label>
    119       <label><input type="checkbox" name="fill_author" checked="checked"> {'Author'|@translate}</label>
    120       <label><input type="checkbox" name="fill_tags" checked="checked"> {'Tags'|@translate}</label>
    121       <label><input type="checkbox" name="fill_taken" checked="checked"> {'Creation date'|@translate}</label>
    122       <label><input type="checkbox" name="fill_posted"> {'Post date'|@translate}</label>
     127      <b>{'Fill these fields from Flickr datas'|translate}:</b>
     128      <label><input type="checkbox" name="fill_name" checked="checked"> {'Photo name'|translate}</label>
     129      <label><input type="checkbox" name="fill_author" checked="checked"> {'Author'|translate}</label>
     130      <label><input type="checkbox" name="fill_tags" checked="checked"> {'Tags'|translate}</label>
     131      <label><input type="checkbox" name="fill_taken" checked="checked"> {'Creation date'|translate}</label>
     132      <label><input type="checkbox" name="fill_posted"> {'Post date'|translate}</label>
    123133      <label><input type="checkbox" name="fill_description" checked="checked"> {'Description'|@translate}</label>
    124       {if $GMAPS_LOADED}<label><input type="checkbox" name="fill_geotag" checked="checked"> {'Geolocalization'|@translate}</label>{/if}
     134      <label><input type="checkbox" name="fill_geotag" checked="checked"> {'Geolocalization'|@translate}</label>
    125135    </p>
    126    
     136
    127137    <p>
    128       <input type="submit" name="import_set" id="beginImport" value="{'Begin transfer'|@translate}" {if not $nb_elements}style="display:none;"{/if}>
    129       <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|@translate}</i> <span id="progress"></span></span>
     138      <input type="submit" name="import_set" id="beginImport" value="{'Begin transfer'|translate}" {if not $nb_elements}style="display:none;"{/if}>
     139      <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i> <span id="progress"></span></span>
    130140    </p>
    131141  </fieldset>
  • extensions/flickr2piwigo/admin/template/import.list_photos.tpl

    r25789 r26180  
    11{footer_script require='jquery.ajaxmanager,jquery.jgrowl'}
    2 /* global vars */
    3 var nb_thumbs_page = {$nb_thumbs_page};
    4 var nb_thumbs_set = {$nb_thumbs_set};
    5 var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}];
    6 
    7 var errorHead   = '{'ERROR'|@translate|@escape:'javascript'}';
    8 var errorMsg    = '{'an error happened'|@translate|@escape:'javascript'}';
    9 var successHead = '{'Success'|@translate|@escape:'javascript'}';
    10 var selectedMessage_pattern = "{'%d of %d photos selected'|@translate}";
    11 var selectedMessage_none = "{'No photo selected, %d photos in current set'|@translate}";
    12 var selectedMessage_all = "{'All %d photos are selected'|@translate}";
    13 var applyOnDetails_pattern = "{'on the %d selected photos'|@translate}";
    14 
    15 var import_done = 0;
    16 var import_selected = 0;
    17 var queuedManager = jQuery.manageAjax.create('queued', {ldelim}
    18   queue: true, 
    19   maxRequests: 1
    20 });
    21 
    22 {literal}
    23 /* Shift-click: select all photos between the click and the shift+click */
    24 jQuery(document).ready(function() {
     2(function($){
     3  /* global vars */
     4  var nb_thumbs_set = {$nb_thumbs_set};
     5  var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}];
     6  var import_done = 0;
     7  var import_selected = 0;
     8  var queuedManager = $.manageAjax.create('queued', {ldelim}
     9    queue: true,
     10    maxRequests: 1
     11  });
     12
     13  /* Shift-click: select all photos between the click and the shift+click */
    2514  var last_clicked=0;
    2615  var last_clickedstatus=true;
    27   jQuery.fn.enableShiftClick = function() {
     16  $.fn.enableShiftClick = function() {
    2817    var inputs = [];
    2918    var count=0;
     
    4433            input = $(inputs[i]);
    4534            $(input).attr('checked', last_clickedstatus);
    46             if (last_clickedstatus)
    47             {
     35            if (last_clickedstatus) {
    4836              $(input).siblings("span.wrap2").addClass("thumbSelected");
    4937            }
    50             else
    51             {
     38            else {
    5239              $(input).siblings("span.wrap2").removeClass("thumbSelected");
    5340            }
     
    6047        return true;
    6148      });
    62       $(this).click(function(event) {$(this).triggerHandler("shclick",event)});
     49      $(this).click(function(event) { $(this).triggerHandler("shclick",event); });
    6350    });
    6451  }
    65 });
    66 
    67 /* sprintf */
    68 function str_repeat(i, m) {
    69     for (var o = []; m > 0; o[--m] = i);
    70     return o.join('');
    71 }
    72 
    73 function sprintf() {
    74   var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = '';
    75   while (f) {
    76     if (m = /^[^\x25]+/.exec(f)) {
    77       o.push(m[0]);
    78     }
    79     else if (m = /^\x25{2}/.exec(f)) {
    80       o.push('%');
    81     }
    82     else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
    83       if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) {
    84         throw('Too few arguments.');
    85       }
    86       if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) {
    87         throw('Expecting number but found ' + typeof(a));
    88       }
    89       switch (m[7]) {
    90         case 'b': a = a.toString(2); break;
    91         case 'c': a = String.fromCharCode(a); break;
    92         case 'd': a = parseInt(a); break;
    93         case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
    94         case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
    95         case 'o': a = a.toString(8); break;
    96         case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
    97         case 'u': a = Math.abs(a); break;
    98         case 'x': a = a.toString(16); break;
    99         case 'X': a = a.toString(16).toUpperCase(); break;
    100       }
    101       a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a);
    102       c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
    103       x = m[5] - String(a).length - s.length;
    104       p = m[5] ? str_repeat(c, x) : '';
    105       o.push(s + (m[4] ? a + p : p + a));
    106     }
    107     else {
    108       throw('Huh ?!');
    109     }
    110     f = f.substring(m[0].length);
    111   }
    112   return o.join('');
    113 }
    114 
    115 /* update displaying */
    116 function checkPermitAction() {
    117   var nbSelected = 0;
    118   if ($("input[name=setSelected]").is(':checked')) {
    119     nbSelected = nb_thumbs_set;
    120   } else {
    121     $(".thumbnails input[type=checkbox]").each(function() {
    122       if ($(this).is(':checked')) nbSelected++;
    123     });
    124   }
    125 
    126   if (nbSelected == 0) {
    127     $("#beginImport").hide();
    128   } else {
    129     $("#beginImport").show();
    130   }
    131 
    132   $("#applyOnDetails").text(
    133     sprintf(
    134       applyOnDetails_pattern,
    135       nbSelected
    136     )
    137   );
    138 
    139   // display the number of currently selected photos in the "Selection" fieldset
    140   if (nbSelected == 0) {
    141     $("#selectedMessage").text(
     52
     53  /* update displaying */
     54  function checkPermitAction() {
     55    var nbSelected = 0;
     56    if ($("input[name=setSelected]").is(':checked')) {
     57      nbSelected = nb_thumbs_set;
     58    }
     59    else {
     60      $(".thumbnails input[type=checkbox]").each(function() {
     61        if ($(this).is(':checked')) nbSelected++;
     62      });
     63    }
     64
     65    if (nbSelected == 0) {
     66      $("#beginImport").hide();
     67    }
     68    else {
     69      $("#beginImport").show();
     70    }
     71
     72    $("#applyOnDetails").text(
    14273      sprintf(
    143         selectedMessage_none,
    144         nb_thumbs_set
     74        '{'on the %d selected photos'|translate|escape:javascript}',
     75        nbSelected
    14576      )
    14677    );
    147   } else if (nbSelected == nb_thumbs_set) {
    148     $("#selectedMessage").text(
    149       sprintf(
    150         selectedMessage_all,
    151         nb_thumbs_set
    152       )
    153     );
    154   } else {
    155     $("#selectedMessage").text(
    156       sprintf(
    157         selectedMessage_pattern,
    158         nbSelected,
    159         nb_thumbs_set
    160       )
    161     );
     78
     79    // display the number of currently selected photos in the "Selection" fieldset
     80    if (nbSelected == 0) {
     81      $("#selectedMessage").text(
     82        sprintf(
     83          '{'No photo selected, %d photos in current set'|translate|escape:javascript}',
     84          nb_thumbs_set
     85        )
     86      );
     87    }
     88    else if (nbSelected == nb_thumbs_set) {
     89      $("#selectedMessage").text(
     90        sprintf(
     91          '{'All %d photos are selected'|translate|escape:javascript}',
     92          nb_thumbs_set
     93        )
     94      );
     95    }
     96    else {
     97      $("#selectedMessage").text(
     98        sprintf(
     99          '{'%d of %d photos selected'|translate|escape:javascript}',
     100          nbSelected,
     101          nb_thumbs_set
     102        )
     103      );
     104    }
    162105  }
    163 }
    164 
    165 /* import queue */
    166 function performImport(photo, album, fills) {
    167   queuedManager.add({
    168     type: 'GET',
    169     dataType: 'json',
    170     url: 'ws.php',
    171     data: { method: 'pwg.images.addFlickr', id: photo, category: album, fills: fills, format: 'json' },
    172     success: function(data) {
    173       if (data['stat'] == 'ok') {
    174         jQuery.jGrowl(data['result'], { theme: 'success', header: successHead, life: 4000, sticky: false });
    175         jQuery("#photo-"+photo).fadeOut(function(){ $(this).remove(); });
    176       } else {
    177         jQuery.jGrowl(data['result'], { theme: 'error', header: errorHead, sticky: true });
     106
     107  /* import queue */
     108  function performImport(photo, album, fills) {
     109    queuedManager.add({
     110      type: 'GET',
     111      dataType: 'json',
     112      url: 'ws.php',
     113      data: {
     114        method: 'pwg.images.addFlickr',
     115        id: photo,
     116        category: album,
     117        fills: fills,
     118        format: 'json'
     119      },
     120      success: function(data) {
     121        if (data['stat'] == 'ok') {
     122          jQuery.jGrowl(data['result'], {
     123            theme: 'success', life: 4000, sticky: false,
     124            header: '{'Success'|translate}'
     125          });
     126          jQuery("#photo-"+photo).fadeOut(function(){ $(this).remove(); });
     127        }
     128        else {
     129          jQuery.jGrowl(data['result'], {
     130            theme: 'error', sticky: true,
     131            header: '{'ERROR'|translate}'
     132          });
     133        }
     134
     135        import_done++;
     136        $("#progress").html(import_done +"/"+ import_selected);
     137
     138        if (import_done == import_selected) {
     139          $("#import_form").append('<input type="hidden" name="done" value="' + import_done + '">');
     140          $("#import_form").submit();
     141        }
     142      },
     143      error: function(data) {
     144        jQuery.jGrowl('{'an error happened'|translate|@escape:'javascript'}', {
     145          theme: 'error', sticky: true,
     146          header: '{'ERROR'|translate}'
     147        });
    178148      }
    179      
    180       import_done++;
    181       $("#progress").html(import_done +"/"+ import_selected);
    182      
    183       if (import_done == import_selected) {
    184         $("#import_form").append('<input type="hidden" name="done" value="' + import_done + '">');
    185         $("#import_form").submit();
    186       }
    187     },
    188     error: function(data) {
    189       jQuery.jGrowl(errorMsg, { theme: 'error', header: errorHead, sticky: true });
    190     }
    191   });
    192 }
    193 
    194 
    195 $(document).ready(function() {
     149    });
     150  }
     151
     152
    196153  checkPermitAction();
    197154  $("a.preview-box").colorbox();
     
    206163
    207164  /* thumbnail click */
    208   $(".wrap1 label").click(function (event) {
    209     $("input[name=setSelected]").attr('checked', false);
     165  $(".wrap1 label").click(function(event) {
     166    $("input[name=setSelected]").prop('checked', false);
    210167
    211168    var wrap2 = $(this).children(".wrap2");
     
    215172
    216173    if ($(checkbox).is(':checked')) {
    217       $(wrap2).addClass("thumbSelected"); 
    218     }
    219     else {
    220       $(wrap2).removeClass('thumbSelected'); 
     174      $(wrap2).addClass("thumbSelected");
     175    }
     176    else {
     177      $(wrap2).removeClass('thumbSelected');
    221178    }
    222179
     
    225182
    226183  /* select all */
    227   $("#selectAll").click(function () {
    228     $("input[name=setSelected]").attr('checked', false);
    229    
     184  $("#selectAll").click(function() {
     185    $("input[name=setSelected]").prop('checked', false);
     186
    230187    $(".thumbnails label").each(function() {
    231188      var wrap2 = $(this).children(".wrap2");
    232189      var checkbox = $(this).children("input[type=checkbox]");
    233190
    234       $(checkbox).attr('checked', true);
    235       $(wrap2).addClass("thumbSelected"); 
    236     });
    237    
     191      $(checkbox).prop('checked', true);
     192      $(wrap2).addClass("thumbSelected");
     193    });
     194
    238195    checkPermitAction();
    239196    return false;
     
    241198
    242199  /* select none */
    243   $("#selectNone").click(function () {
    244     $("input[name=setSelected]").attr('checked', false);
    245    
     200  $("#selectNone").click(function() {
     201    $("input[name=setSelected]").prop('checked', false);
     202
    246203    $(".thumbnails label").each(function() {
    247204      var wrap2 = $(this).children(".wrap2");
    248205      var checkbox = $(this).children("input[type=checkbox]");
    249206
    250       $(checkbox).attr('checked', false);
    251       $(wrap2).removeClass("thumbSelected"); 
    252     });
    253    
     207      $(checkbox).prop('checked', false);
     208      $(wrap2).removeClass("thumbSelected");
     209    });
     210
    254211    checkPermitAction();
    255212    return false;
     
    257214
    258215  /* select invert */
    259   $("#selectInvert").click(function () {
    260     $("input[name=setSelected]").attr('checked', false);
    261    
     216  $("#selectInvert").click(function() {
     217    $("input[name=setSelected]").prop('checked', false);
     218
    262219    $(".thumbnails label").each(function() {
    263220      var wrap2 = $(this).children(".wrap2");
    264221      var checkbox = $(this).children("input[type=checkbox]");
    265222
    266       $(checkbox).attr('checked', !$(checkbox).is(':checked'));
     223      $(checkbox).prop('checked', !$(checkbox).is(':checked'));
    267224
    268225      if ($(checkbox).is(':checked')) {
    269         $(wrap2).addClass("thumbSelected");
    270       } else {
    271         $(wrap2).removeClass('thumbSelected');
     226        $(wrap2).addClass("thumbSelected");
    272227      }
    273     });
    274    
    275     checkPermitAction();
    276     return false;
    277   });
    278  
     228      else {
     229        $(wrap2).removeClass('thumbSelected');
     230      }
     231    });
     232
     233    checkPermitAction();
     234    return false;
     235  });
     236
    279237  /* select set */
    280   $("#selectSet").click(function () {
    281     $("input[name=setSelected]").attr('checked', true);
    282    
     238  $("#selectSet").click(function() {
     239    $("input[name=setSelected]").prop('checked', true);
     240
    283241    $(".thumbnails label").each(function() {
    284242      var wrap2 = $(this).children(".wrap2");
    285243      var checkbox = $(this).children("input[type=checkbox]");
    286244
    287       $(checkbox).attr('checked', true);
    288       $(wrap2).addClass("thumbSelected"); 
    289     });
    290    
    291     checkPermitAction();
    292     return false;
    293   });
    294  
     245      $(checkbox).prop('checked', true);
     246      $(wrap2).addClass("thumbSelected");
     247    });
     248
     249    checkPermitAction();
     250    return false;
     251  });
     252
    295253  /* begin import */
    296254  jQuery('#beginImport').click(function() {
    297255    $("#loader_import").fadeIn();
    298256    var album = $("#albumSelect option:selected").val();
    299    
     257
    300258    var fills = '';
    301259    $("input[name^='fill_']:checked").each(function() {
    302260      fills+= $(this).attr("name") +',';
    303     }); 
    304    
     261    });
     262
    305263    if (jQuery('input[name="setSelected"]').attr('checked')) {
    306264      import_selected = all_elements.length;
    307265      $("#progress").html("0/"+ import_selected);
    308      
     266
    309267      for (var i in all_elements) {
    310268        performImport(all_elements[i], album, fills);
    311269      }
    312                 } else {
     270                }
     271    else {
    313272      import_selected = $("input[name='selection[]']:checked").length;
    314273      $("#progress").html("0/"+ import_selected);
    315      
     274
    316275                        jQuery("input[name='selection[]']:checked").each(function() {
    317276        performImport(jQuery(this).attr('value'), album, fills);
    318277      });
    319278    }
    320    
    321     return false;
    322   });
    323  
     279
     280    return false;
     281  });
     282
    324283  /* pagination loader */
    325284  jQuery('#navigation a').click(function() {
    326285    $("#loader_display").fadeIn();
    327286  });
    328 });
    329 {/literal}
     287}(jQuery));
    330288{/footer_script}
     289
    331290
    332291<div id="batchManagerGlobal">
     
    334293
    335294  <fieldset>
    336     <legend>{'Selection'|@translate}</legend>
     295    <legend>{'Selection'|translate}</legend>
    337296
    338297  {if !empty($thumbnails)}
    339298    <p id="checkActions">
    340       {'Select:'|@translate}
     299      {'Select:'|translate}
    341300    {if $nb_thumbs_set > $nb_thumbs_page}
    342       <a href="#" id="selectAll">{'The whole page'|@translate}</a>,
    343       <a href="#" id="selectSet">{'The whole set'|@translate}</a>,
     301      <a href="#" id="selectAll">{'The whole page'|translate}</a>,
     302      <a href="#" id="selectSet">{'The whole set'|translate}</a>,
    344303    {else}
    345       <a href="#" id="selectAll">{'All'|@translate}</a>,
     304      <a href="#" id="selectAll">{'All'|translate}</a>,
    346305    {/if}
    347       <a href="#" id="selectNone">{'None'|@translate}</a>,
    348       <a href="#" id="selectInvert">{'Invert'|@translate}</a>
     306      <a href="#" id="selectNone">{'None'|translate}</a>,
     307      <a href="#" id="selectInvert">{'Invert'|translate}</a>
    349308
    350309      <span id="selectedMessage"></span>
    351310      <input type="checkbox" name="setSelected" style="display:none">
    352       <span id="loader_display" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|@translate}</i></span>
     311      <span id="loader_display" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i></span>
    353312    </p>
    354313
     
    359318                                        <label>
    360319                                                <span class="wrap2">
    361                                                 <div class="actions"><a href="{$thumbnail.src}" class="preview-box">{'Zoom'|@translate}</a> &middot; <a href="{$thumbnail.url}" target="_blank" title="{'Open Flickr page in a new tab'|@translate}">Flickr</a></div>
     320                                                <div class="actions"><a href="{$thumbnail.src}" class="preview-box">{'Zoom'|translate}</a> &middot; <a href="{$thumbnail.url}" target="_blank" title="{'Open Flickr page in a new tab'|translate}">Flickr</a></div>
    362321                                                        <span>
    363                                                                 <img src="{$thumbnail.thumb}" alt="{$thumbnail.title}" title="{$thumbnail.title|@escape:'html'}" class="thumbnail">
     322                                                                <img src="{$thumbnail.thumb}" alt="{$thumbnail.title}" title="{$thumbnail.title|escape:'html'}" class="thumbnail">
    364323                                                        </span>
    365324                                                </span>
     
    370329      {/foreach}
    371330    </ul>
    372    
    373    
     331
     332
    374333    <div style="clear:both;" id="navigation">
    375334    {if !empty($navbar) }
    376335      <div style="float:left">
    377       {include file='navigation_bar.tpl'|@get_extent:'navbar'}
     336      {include file='navigation_bar.tpl'|get_extent:'navbar'}
    378337      </div>
    379338    {/if}
    380    
    381       <div style="float:right;margin-top:10px;">{'display'|@translate}
     339
     340      <div style="float:right;margin-top:10px;">{'display'|translate}
    382341        <a href="{$U_DISPLAY}&amp;display=20">20</a>
    383342        &middot; <a href="{$U_DISPLAY}&amp;display=50">50</a>
    384343        &middot; <a href="{$U_DISPLAY}&amp;display=100">100</a>
    385         &middot; <a href="{$U_DISPLAY}&amp;display=all">{'all'|@translate}</a>
    386         {'photos per page'|@translate}
     344        &middot; <a href="{$U_DISPLAY}&amp;display=all">{'all'|translate}</a>
     345        {'photos per page'|translate}
    387346      </div>
    388347    </div>
    389348
    390349  {else}
    391     <div>{'No photo in the current set.'|@translate}</div>
     350    <div>{'No photo in the current set.'|translate}</div>
    392351  {/if}
    393352  </fieldset>
    394  
     353
    395354  <fieldset>
    396     <legend>{'Import options'|@translate}</legend>
     355    <legend>{'Import options'|translate}</legend>
    397356
    398357    <p>
    399       <label for="albumSelect"><b>{'Album'|@translate}:</b></label>
     358      <label for="albumSelect"><b>{'Album'|translate}:</b></label>
    400359      <select style="width:400px" name="associate" id="albumSelect" size="1">
    401360        {html_options options=$category_parent_options}
    402361      </select>
    403       {'... or '|@translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>
     362      {'... or '|translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|translate}">{'create a new album'|translate}</a>
    404363    </p>
    405    
     364
    406365    <p>
    407       <b>{'Fill these fields from Flickr datas'|@translate}:</b>
    408       <label><input type="checkbox" name="fill_name" checked="checked"> {'Photo name'|@translate}</label>
    409       <label><input type="checkbox" name="fill_author" checked="checked"> {'Author'|@translate}</label>
    410       <label><input type="checkbox" name="fill_tags" checked="checked"> {'Tags'|@translate}</label>
    411       <label><input type="checkbox" name="fill_taken" checked="checked"> {'Creation date'|@translate}</label>
    412       <label><input type="checkbox" name="fill_posted"> {'Post date'|@translate}</label>
     366      <b>{'Fill these fields from Flickr datas'|translate}:</b>
     367      <label><input type="checkbox" name="fill_name" checked="checked"> {'Photo name'|translate}</label>
     368      <label><input type="checkbox" name="fill_author" checked="checked"> {'Author'|translate}</label>
     369      <label><input type="checkbox" name="fill_tags" checked="checked"> {'Tags'|translate}</label>
     370      <label><input type="checkbox" name="fill_taken" checked="checked"> {'Creation date'|translate}</label>
     371      <label><input type="checkbox" name="fill_posted"> {'Post date'|translate}</label>
    413372      <label><input type="checkbox" name="fill_description" checked="checked"> {'Description'|@translate}</label>
    414       {if $GMAPS_LOADED}<label><input type="checkbox" name="fill_geotag" checked="checked"> {'Geolocalization'|@translate}</label>{/if}
     373      <label><input type="checkbox" name="fill_geotag" checked="checked"> {'Geolocalization'|@translate}</label>
    415374    </p>
    416375
    417376    <p>
    418377      <input type="hidden" name="album" value="{$album}">
    419       <input type="submit" name="import_set" id="beginImport" value="{'Begin transfer'|@translate}" style="display:none;">
    420       <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|@translate}</i> <span id="progress"></span></span>
     378      <input type="submit" name="import_set" id="beginImport" value="{'Begin transfer'|translate}" style="display:none;">
     379      <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i> <span id="progress"></span></span>
    421380    </p>
    422381  </fieldset>
  • extensions/flickr2piwigo/admin/template/import.tpl

    r25789 r26180  
    1 {combine_css path=$FLICKR_PATH|@cat:"admin/template/style.css"}
     1{combine_css path=$FLICKR_PATH|cat:'admin/template/style.css'}
    22
    33{include file='include/colorbox.inc.tpl'}
    44{include file='include/add_album.inc.tpl'}
     5{combine_script id='common' load='footer' path='admin/themes/default/js/common.js'}
    56{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'}
    67{combine_script id='jquery.jgrowl' load='footer' require='jquery' path='themes/default/js/plugins/jquery.jgrowl_minimized.js'}
     
    1314{* <!-- LOGIN --> *}
    1415{if $ACTION == 'init_login'}
    15 <p><input type="submit" onClick="javascript:window.location.href ='{$flickr_login}';" value="{'Login'|@translate}"></p>
     16<p><input type="submit" onclick="javascript:window.location.href ='{$flickr_login}';" value="{'Login'|translate}"></p>
    1617
    1718{* <!-- MAIN MENU --> *}
    18 {elseif $ACTION == 'main'}
    19 {footer_script}{literal}
     19{else if $ACTION == 'main'}
     20
     21{footer_script}
    2022jQuery('input[type="submit"]').click(function() {
    2123  window.location.href = $(this).attr("data");
     
    2426  $("#loader_import").fadeIn();
    2527});
    26 {/literal}{/footer_script}
     28{/footer_script}
    2729
    2830<p>
    29   <b>{'Logged in as'|@translate}</b> : <a href="{$profile_url}" target="_blank">{$username}</a><br><br>
    30   <input type="submit" data="{$logout_url}" value="{'Logout'|@translate}">
     31  <b>{'Logged in as'|translate}</b> : <a href="{$profile_url}" target="_blank">{$username}</a><br><br>
     32  <input type="submit" data="{$logout_url}" value="{'Logout'|translate}">
    3133</p>
    3234<br>
    3335<p>
    34   <input type="submit" data="{$list_albums_url}" class="load" value="{'List my albums'|@translate}">
    35   <input type="submit" data="{$import_all_url}" class="load" value="{'Import all my pictures'|@translate}">
     36  <input type="submit" data="{$list_albums_url}" class="load" value="{'List my albums'|translate}">
     37  <input type="submit" data="{$import_all_url}" class="load" value="{'Import all my pictures'|translate}">
    3638  <br>
    37   <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|@translate}</i></span>
     39  <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i></span>
    3840</p>
    3941
    4042{* <!-- ALBUMS LIST --> *}
    41 {elseif $ACTION == 'list_albums'}
    42 {footer_script}{literal}
     43{else if $ACTION == 'list_albums'}
     44
     45{footer_script}
    4346jQuery('.load').click(function() {
    4447  $("#loader_import").fadeIn();
    4548});
    46 {/literal}{/footer_script}
     49{/footer_script}
    4750
    48 <h3>{'%d albums'|@translate|@sprintf:$total_albums}</h3>
     51<h3>{'%d albums'|translate:$total_albums}</h3>
    4952<ul id="albumsList">
    5053{foreach from=$albums item=album}
    5154  <li {if $album.id == "not_in_set"}class="not_in_set"{/if}>
    52     <b><a href="{$album.U_LIST}" class="load">{$album.title}</a></b> <i>{'(%d photos)'|@translate|@sprintf:$album.photos}</i>
    53     {if $album.description}- {$album.description|@truncate:100}{/if}
     55    <b><a href="{$album.U_LIST}" class="load">{$album.title}</a></b> <i>{'(%d photos)'|translate:$album.photos}</i>
     56    {if $album.description}- {$album.description|truncate:100}{/if}
    5457  </li>
    5558{/foreach}
    5659</ul>
    57 <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|@translate}</i></span>
     60<span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i></span>
    5861
    5962{* <!-- PHOTOS LIST --> *}
    60 {elseif $ACTION == 'list_photos'}
    61 {include file=$FLICKR_ABS_PATH|@cat:'admin/template/import.list_photos.tpl'}
     63{else if $ACTION == 'list_photos'}
     64{include file=$FLICKR_ABS_PATH|cat:'admin/template/import.list_photos.tpl'}
    6265
    6366{* <!-- IMPORT ALL --> *}
    64 {elseif $ACTION == 'list_all'}
    65 {include file=$FLICKR_ABS_PATH|@cat:'admin/template/import.list_all.tpl'}
     67{else if $ACTION == 'list_all'}
     68{include file=$FLICKR_ABS_PATH|cat:'admin/template/import.list_all.tpl'}
    6669
    6770{/if}
  • extensions/flickr2piwigo/include/functions.inc.php

    r21288 r26180  
    11<?php
    2 if (!defined('FLICKR_PATH')) die('Hacking attempt!');
     2defined('FLICKR_PATH') or die('Hacking attempt!');
    33
    44/**
     
    3030      return false;
    3131    }
    32    
     32
    3333    $return = ($dest === true) ? true : false;
    34    
     34
    3535    /* curl */
    3636    if (function_exists('curl_init'))
     
    4141      }
    4242      $ch = curl_init();
    43      
     43
    4444      curl_setopt($ch, CURLOPT_URL, $src);
    4545      curl_setopt($ch, CURLOPT_HEADER, false);
     
    6565        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    6666      }
    67      
     67
    6868      $out = curl_exec($ch);
    6969      curl_close($ch);
    70      
     70
    7171      if ($out === false)
    7272      {
     
    9090        return false;
    9191      }
    92      
     92
    9393      $opts = array(
    9494        'http' => array(
     
    100100
    101101      $context = stream_context_create($opts);
    102      
     102
    103103      if (($file = file_get_contents($src, false, $context)) === false)
    104104      {
    105105        return 'file_error';
    106106      }
    107      
     107
    108108      if (!$return)
    109109      {
     
    116116      }
    117117    }
    118    
     118
    119119    return false;
    120120  }
    121121}
    122 
    123 ?>
  • extensions/flickr2piwigo/include/ws_functions.inc.php

    r25790 r26180  
    11<?php
    2 if (!defined('FLICKR_PATH')) die('Hacking attempt!');
     2defined('FLICKR_PATH') or die('Hacking attempt!');
    33
    44function flickr_add_ws_method($arr)
    55{
    66  $service = &$arr[0];
    7  
     7
    88  $service->addMethod(
    99    'pwg.images.addFlickr',
     
    1414      'fills' => array('default' =>null),
    1515      ),
    16     'Used by Flickr2Piwigo'
     16    'Used by Flickr2Piwigo',
     17    null,
     18    array('hidden'=>true)
    1719    );
    1820}
     
    2426    return new PwgError(403, 'Forbidden');
    2527  }
    26  
     28
    2729  global $conf;
    28   $conf['flickr2piwigo'] = unserialize($conf['flickr2piwigo']);
    29  
    30   if ( empty($conf['flickr2piwigo']['api_key']) or empty($conf['flickr2piwigo']['secret_key']) )
     30
     31  if (empty($conf['flickr2piwigo']['api_key']) or empty($conf['flickr2piwigo']['secret_key']))
    3132  {
    3233    return new PwgError(null, l10n('Please fill your API keys on the configuration tab'));
    3334  }
    34  
     35
    3536  include_once(PHPWG_ROOT_PATH . 'admin/include/functions.php');
    3637  include_once(PHPWG_ROOT_PATH . 'admin/include/functions_upload.inc.php');
    3738  include_once(FLICKR_PATH . 'include/functions.inc.php');
    38  
     39
    3940  if (test_remote_download() === false)
    4041  {
    4142    return new PwgError(null, l10n('No download method available'));
    4243  }
    43  
     44
    4445  // init flickr API
    4546  include_once(FLICKR_PATH . 'include/phpFlickr/phpFlickr.php');
    4647  $flickr = new phpFlickr($conf['flickr2piwigo']['api_key'], $conf['flickr2piwigo']['secret_key']);
    4748  $flickr->enableCache('fs', FLICKR_FS_CACHE);
    48  
     49
    4950  // user
    5051  $u = $flickr->test_login();
    51   if ( $u === false or empty($_SESSION['phpFlickr_auth_token']) )
     52  if ($u === false or empty($_SESSION['phpFlickr_auth_token']))
    5253  {
    5354    return new PwgError(403, l10n('API not authenticated'));
    5455  }
    55  
     56
    5657  // photos infos
    5758  $photo_f = $flickr->photos_getInfo($photo['id']);
     
    5960  $photo['url'] = $flickr->get_biggest_size($photo['id'], 'original');
    6061  $photo['path'] = FLICKR_FS_CACHE . 'flickr-'.$u['username'].'-'.$photo['id'].'.'.get_extension($photo['url']);
    61  
     62
    6263  // copy file
    6364  if (download_remote_file($photo['url'], $photo['path']) == false)
     
    6566    return new PwgError(null, l10n('Can\'t download file'));
    6667  }
    67  
     68
    6869  // category
    6970  if (!preg_match('#^[0-9]+$#', $photo['category']))
    7071  {
    7172    $categories_names = explode(',', $photo['category']);
    72    
     73
    7374    $photo['category'] = array();
    7475    foreach ($categories_names as $category_name)
     
    7980;';
    8081      $result = pwg_query($query);
    81      
     82
    8283      if (pwg_db_num_rows($result))
    8384      {
    8485        list($cat_id) = pwg_db_fetch_row($result);
    85         array_push($photo['category'], $cat_id);
     86        $photo['category'][] = $cat_id;
    8687      }
    8788      else
    8889      {
    89        
     90
    9091        $cat = create_virtual_category($category_name);
    91         array_push($photo['category'], $cat['id']);
     92        $photo['category'][] = $cat['id'];
    9293      }
    9394    }
     
    9798    $photo['category'] = array($photo['category']);
    9899  }
    99  
     100
    100101  // add photo
    101102  $photo['image_id'] = add_uploaded_file($photo['path'], basename($photo['path']), $photo['category']);
    102  
     103
    103104  // do some updates
    104105  if (!empty($photo['fills']))
     
    106107    $photo['fills'] = rtrim($photo['fills'], ',');
    107108    $photo['fills'] = explode(',', $photo['fills']);
    108  
     109
    109110    $updates = array();
    110     if (in_array('fill_name', $photo['fills']))   $updates['name'] = pwg_db_real_escape_string($photo['title']); 
     111    if (in_array('fill_name', $photo['fills']))   $updates['name'] = pwg_db_real_escape_string($photo['title']);
    111112    if (in_array('fill_posted', $photo['fills'])) $updates['date_available'] = date('Y-m-d H:i:s', $photo['dates']['posted']);
    112113    if (in_array('fill_taken', $photo['fills']))  $updates['date_creation'] = $photo['dates']['taken'];
     
    115116    if (in_array('fill_geotag', $photo['fills']) and !empty($photo['location']) )
    116117    {
    117       $updates['lat'] = pwg_db_real_escape_string($photo['location']['latitude']);
    118       $updates['lon'] = pwg_db_real_escape_string($photo['location']['longitude']);
     118      $updates['latitude'] = pwg_db_real_escape_string($photo['location']['latitude']);
     119      $updates['longitude'] = pwg_db_real_escape_string($photo['location']['longitude']);
    119120    }
    120    
     121
    121122    if (count($updates))
    122123    {
     
    127128        );
    128129    }
    129    
    130     if ( !empty($photo['tags']['tag']) and in_array('fill_tags', $photo['fills']) )
     130
     131    if (!empty($photo['tags']['tag']) and in_array('fill_tags', $photo['fills']))
    131132    {
    132133      $raw_tags = array_map(create_function('$t', 'return $t["_content"];'), $photo['tags']['tag']);
     
    135136    }
    136137  }
    137  
    138   return sprintf(l10n('Photo "%s" imported'), $photo['title']);
     138
     139  return l10n('Photo "%s" imported', $photo['title']);
    139140}
    140 
    141 ?>
  • extensions/flickr2piwigo/main.inc.php

    r24815 r26180  
    1 <?php 
     1<?php
    22/*
    33Plugin Name: Flickr2Piwigo
     
    99*/
    1010
    11 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
     11defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
    1212
    1313global $conf;
    1414
    15 define('FLICKR_PATH',     PHPWG_PLUGINS_PATH . basename(dirname(__FILE__)) . '/');
    16 define('FLICKR_ADMIN',    get_root_url() . 'admin.php?page=plugin-' . basename(dirname(__FILE__)));
     15define('FLICKR_ID',       basename(dirname(__FILE__)));
     16define('FLICKR_PATH',     PHPWG_PLUGINS_PATH . FLICKR_ID . '/');
     17define('FLICKR_ADMIN',    get_root_url() . 'admin.php?page=plugin-' . FLICKR_ID);
    1718define('FLICKR_FS_CACHE', PHPWG_ROOT_PATH . $conf['data_location'] . 'flickr_cache/');
     19define('FLICKR_VERSION',  'auto');
    1820
     21
     22include_once(FLICKR_PATH . 'include/ws_functions.inc.php');
     23
     24
     25add_event_handler('init', 'flickr_init');
     26add_event_handler('ws_add_methods', 'flickr_add_ws_method');
    1927
    2028if (defined('IN_ADMIN'))
    2129{
    2230  add_event_handler('get_admin_plugin_menu_links', 'flickr_admin_menu');
     31
    2332  add_event_handler('get_batch_manager_prefilters', 'flickr_add_batch_manager_prefilters');
    2433  add_event_handler('perform_batch_manager_prefilters', 'flickr_perform_batch_manager_prefilters', EVENT_HANDLER_PRIORITY_NEUTRAL, 2);
    25   add_event_handler('loc_begin_admin_page', 'flickr_prefilter_from_url');
    2634
    27   function flickr_admin_menu($menu) 
     35  function flickr_admin_menu($menu)
    2836  {
    29     array_push($menu, array(
     37    $menu[] = array(
    3038      'NAME' => 'Flickr2Piwigo',
    3139      'URL' => FLICKR_ADMIN,
    32     ));
     40      );
    3341    return $menu;
    3442  }
    35  
     43
    3644  function flickr_add_batch_manager_prefilters($prefilters)
    3745  {
    38     array_push($prefilters, array(
     46    $prefilters[] = array(
    3947      'ID' => 'flickr',
    4048      'NAME' => l10n('Imported from Flickr'),
    41     ));
     49      );
    4250    return $prefilters;
    4351  }
     
    5462      $filter_sets[] = array_from_query($query, 'id');
    5563    }
    56    
     64
    5765    return $filter_sets;
    58   }
    59  
    60   function flickr_prefilter_from_url()
    61   {
    62     global $page;
    63     if ($page['page'] == 'batch_manager' && @$_GET['prefilter'] == 'flickr')
    64     {
    65       $_SESSION['bulk_manager_filter'] = array('prefilter' => 'flickr');
    66       unset($_GET['prefilter']);
    67     }
    6866  }
    6967}
    7068
    7169
    72 include_once(FLICKR_PATH . 'include/ws_functions.inc.php');
     70function flickr_init()
     71{
     72  global $conf;
     73  include_once(FLICKR_PATH . 'maintain.inc.php');
     74  $maintain = new flickr2piwigo_maintain(FLICKR_ID);
     75  $maintain->autoUpdate(FLICKR_VERSION, 'install');
    7376
    74 add_event_handler('ws_add_methods', 'flickr_add_ws_method');
    75 
    76 ?>
     77  $conf['flickr2piwigo'] = unserialize($conf['flickr2piwigo']);
     78}
  • extensions/flickr2piwigo/maintain.inc.php

    r24815 r26180  
    11<?php
    2 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
     2defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
    33
    4 define(
    5   'flickr2piwigo_default_config',
    6   serialize(array(
     4class flickr2piwigo_maintain extends PluginMaintain
     5{
     6  private $installed = false;
     7
     8  private $default_conf = array(
    79    'api_key' => null,
    810    'secret_key' => null,
    9     ))
    10   );
     11    );
    1112
     13  function install($plugin_version, &$errors=array())
     14  {
     15    global $conf;
    1216
    13 function plugin_install()
    14 {
    15   global $conf;
    16  
    17   conf_update_param('flickr2piwigo', flickr2piwigo_default_config);
    18  
    19   mkgetdir(PHPWG_ROOT_PATH . $conf['data_location'] . 'flickr_cache/', MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
    20 }
     17    if (empty($conf['flickr2piwigo']))
     18    {
     19      $conf['flickr2piwigo'] = serialize($this->default_conf);
     20      conf_update_param('flickr2piwigo', $conf['flickr2piwigo']);
     21    }
    2122
    22 function plugin_activate()
    23 {
    24   global $conf;
     23    mkgetdir(PHPWG_ROOT_PATH . $conf['data_location'] . 'flickr_cache/', MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
    2524
    26   if (empty($conf['flickr2piwigo']))
     25    $this->installed = true;
     26  }
     27
     28  function activate($plugin_version, &$errors=array())
    2729  {
    28     conf_update_param('flickr2piwigo', flickr2piwigo_default_config);
     30    if (!$this->installed)
     31    {
     32      $this->install($plugin_version, $errors);
     33    }
    2934  }
    30  
    31   if (!file_exists(PHPWG_ROOT_PATH . $conf['data_location'] . 'flickr_cache/'))
     35
     36  function deactivate()
    3237  {
    33     mkgetdir(PHPWG_ROOT_PATH . $conf['data_location'] . 'flickr_cache/', MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
     38  }
     39
     40  function uninstall()
     41  {
     42    global $conf;
     43
     44    conf_delete_param('flickr2piwigo');
     45
     46    self::rrmdir(PHPWG_ROOT_PATH . $conf['data_location'] . 'flickr_cache/');
     47  }
     48
     49  static function rrmdir($dir)
     50  {
     51    if (!is_dir($dir))
     52    {
     53      return false;
     54    }
     55    $dir = rtrim($dir, '/');
     56    $objects = scandir($dir);
     57    $return = true;
     58
     59    foreach ($objects as $object)
     60    {
     61      if ($object !== '.' && $object !== '..')
     62      {
     63        $path = $dir.'/'.$object;
     64        if (filetype($path) == 'dir')
     65        {
     66          $return = $return && self::rrmdir($path);
     67        }
     68        else
     69        {
     70          $return = $return && @unlink($path);
     71        }
     72      }
     73    }
     74
     75    return $return && @rmdir($dir);
    3476  }
    3577}
    36 
    37 function plugin_uninstall()
    38 {
    39   global $conf;
    40  
    41   pwg_query('DELETE FROM `'. CONFIG_TABLE .'` WHERE param = "flickr2piwigo";');
    42   unset($conf['flickr2piwigo']);
    43  
    44   rrmdir(PHPWG_ROOT_PATH . $conf['data_location'] . 'flickr_cache/');
    45 }
    46 
    47 function rrmdir($dir)
    48 {
    49   if (!is_dir($dir))
    50   {
    51     return false;
    52   }
    53   $dir = rtrim($dir, '/');
    54   $objects = scandir($dir);
    55   $return = true;
    56  
    57   foreach ($objects as $object)
    58   {
    59     if ($object !== '.' && $object !== '..')
    60     {
    61       $path = $dir.'/'.$object;
    62       if (filetype($path) == 'dir')
    63       {
    64         $return = $return && rrmdir($path);
    65       }
    66       else
    67       {
    68         $return = $return && @unlink($path);
    69       }
    70     }
    71   }
    72  
    73   return $return && @rmdir($dir);
    74 }
    75 
    76 ?>
Note: See TracChangeset for help on using the changeset viewer.