diff options
Diffstat (limited to 'admin')
109 files changed, 1280 insertions, 532 deletions
diff --git a/admin/album.php b/admin/album.php index d1186aae1..f5e692a9f 100644 --- a/admin/album.php +++ b/admin/album.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/album_notification.php b/admin/album_notification.php index cafaad170..fb2a1b027 100644 --- a/admin/album_notification.php +++ b/admin/album_notification.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -46,7 +46,7 @@ $page['cat'] = $category['id']; // +-----------------------------------------------------------------------+ // info by email to an access granted group of category informations -if (isset($_POST['submitEmail']) and !empty($_POST['group'])) +if (isset($_POST['submitEmail'])) { set_make_full_url(); @@ -54,6 +54,8 @@ if (isset($_POST['submitEmail']) and !empty($_POST['group'])) is empty find child representative_picture_id */ if (!empty($category['representative_picture_id'])) { + $img = array(); + $query = ' SELECT id, file, path, representative_ext FROM '.IMAGES_TABLE.' @@ -65,56 +67,124 @@ SELECT id, file, path, representative_ext { $element = pwg_db_fetch_assoc($result); - $img_url = '<a href="'. - make_picture_url(array( - 'image_id' => $element['id'], - 'image_file' => $element['file'], - 'category' => $category - )) - .'" class="thumblnk"><img src="'.DerivativeImage::url(IMG_THUMB, $element).'"></a>'; + $img = array( + 'link' => make_picture_url( + array( + 'image_id' => $element['id'], + 'image_file' => $element['file'], + 'category' => $category + ) + ), + 'src' => DerivativeImage::url(IMG_THUMB, $element), + ); } } - if (!isset($img_url)) - { - $img_url = ''; - } - - pwg_mail_group( - $_POST['group'], - array( - 'subject' => l10n('[%s] Visit album %s', $conf['gallery_title'], trigger_change('render_category_name', $category['name'], 'admin_cat_list')), - // TODO : change this language variable to 'Visit album %s' - // TODO : 'language_selected' => .... - ), - array( - 'filename' => 'cat_group_info', - 'assign' => array( - 'IMG_URL' => $img_url, - 'CAT_NAME' => trigger_change('render_category_name', $category['name'], 'admin_cat_list'), - 'LINK' => make_index_url(array( - 'category' => array( - 'id' => $category['id'], - 'name' => trigger_change('render_category_name', $category['name'], 'admin_cat_list'), - 'permalink' => $category['permalink'] - ) - )), - 'CPL_CONTENT' => empty($_POST['mail_content']) ? '' : stripslashes($_POST['mail_content']), - ) + $args = array( + 'subject' => l10n('[%s] Visit album %s', $conf['gallery_title'], trigger_change('render_category_name', $category['name'], 'admin_cat_list')), + // TODO : change this language variable to 'Visit album %s' + // TODO : 'language_selected' => .... + ); + + $tpl = array( + 'filename' => 'cat_group_info', + 'assign' => array( + 'IMG' => $img, + 'CAT_NAME' => trigger_change('render_category_name', $category['name'], 'admin_cat_list'), + 'LINK' => make_index_url( + array( + 'category' => array( + 'id' => $category['id'], + 'name' => trigger_change('render_category_name', $category['name'], 'admin_cat_list'), + 'permalink' => $category['permalink'] + ) + ) + ), + 'CPL_CONTENT' => empty($_POST['mail_content']) ? '' : stripslashes($_POST['mail_content']), ) ); - unset_make_full_url(); + if ('users' == $_POST['who'] and isset($_POST['users']) and count($_POST['users']) > 0) + { + check_input_parameter('users', $_POST, true, PATTERN_ID); - $query = ' + // TODO code very similar to function pwg_mail_group. We'd better create + // a function pwg_mail_users that could be called from here and from + // pwg_mail_group + + // TODO to make checks even better, we should check that theses users + // have access to this album. No real privacy issue here, even if we + // send the email to a user without permission. + + $query = ' +SELECT + ui.user_id, + ui.status, + ui.language, + u.'.$conf['user_fields']['email'].' AS email, + u.'.$conf['user_fields']['username'].' AS username + FROM '.USER_INFOS_TABLE.' AS ui + JOIN '.USERS_TABLE.' AS u ON u.'.$conf['user_fields']['id'].' = ui.user_id + WHERE ui.user_id IN ('.implode(',', $_POST['users']).') +;'; + $users = query2array($query); + $usernames = array(); + + foreach ($users as $u) + { + $usernames[] = $u['username']; + + $authkey = create_user_auth_key($u['user_id'], $u['status']); + + $user_tpl = $tpl; + + if ($authkey !== false) + { + $user_tpl['assign']['LINK'] = add_url_params($tpl['assign']['LINK'], array('auth' => $authkey['auth_key'])); + + if (isset($user_tpl['assign']['IMG']['link'])) + { + $user_tpl['assign']['IMG']['link'] = add_url_params( + $user_tpl['assign']['IMG']['link'], + array('auth' => $authkey['auth_key']) + ); + } + } + + $user_args = $args; + if (isset($authkey)) + { + $user_args['auth_key'] = $authkey['auth_key']; + } + + switch_lang_to($u['language']); + pwg_mail($u['email'], $user_args, $user_tpl); + switch_lang_back(); + } + + $message = l10n_dec('%d mail was sent.', '%d mails were sent.', count($users)); + $message.= ' ('.implode(', ', $usernames).')'; + + $page['infos'][] = $message; + } + elseif ('group' == $_POST['who'] and !empty($_POST['group'])) + { + check_input_parameter('group', $_POST, false, PATTERN_ID); + + pwg_mail_group($_POST['group'], $args, $tpl); + + $query = ' SELECT name FROM '.GROUPS_TABLE.' WHERE id = '.$_POST['group'].' ;'; - list($group_name) = pwg_db_fetch_row(pwg_query($query)); + list($group_name) = pwg_db_fetch_row(pwg_query($query)); - $page['infos'][] = l10n('An information email was sent to group "%s"', $group_name); + $page['infos'][] = l10n('An information email was sent to group "%s"', $group_name); + } + + unset_make_full_url(); } // +-----------------------------------------------------------------------+ @@ -135,6 +205,19 @@ $template->assign( ) ); +if ($conf['auth_key_duration'] > 0) +{ + $template->assign( + 'auth_key_duration', + time_since( + strtotime('now -'.$conf['auth_key_duration'].' second'), + 'second', + null, + false + ) + ); +} + // +-----------------------------------------------------------------------+ // | form construction | // +-----------------------------------------------------------------------+ @@ -189,6 +272,64 @@ SELECT } } +// all users with status != guest and permitted to this this album (for a +// perfect search, we should also check that album is not only filled with +// private photos) +$query = ' +SELECT + user_id + FROM '.USER_INFOS_TABLE.' + WHERE status != \'guest\' +;'; +$all_user_ids = query2array($query, null, 'user_id'); + +if ('private' == $category['status']) +{ + $user_ids_access_indirect = array(); + + if (isset($group_ids) and count($group_ids) > 0) + { + $query = ' +SELECT + user_id + FROM '.USER_GROUP_TABLE.' + WHERE group_id IN ('.implode(',', $group_ids).') +'; + $user_ids_access_indirect = query2array($query, null, 'user_id'); + } + + $query = ' +SELECT + user_id + FROM '.USER_ACCESS_TABLE.' + WHERE cat_id = '.$category['id'].' +;'; + $user_ids_access_direct = query2array($query, null, 'user_id'); + + $user_ids_access = array_unique(array_merge($user_ids_access_direct, $user_ids_access_indirect)); + + $user_ids = array_intersect($user_ids_access, $all_user_ids); +} +else +{ + $user_ids = $all_user_ids; +} + +if (count($user_ids) > 0) +{ + $query = ' +SELECT + '.$conf['user_fields']['id'].' AS id, + '.$conf['user_fields']['username'].' AS username + FROM '.USERS_TABLE.' + WHERE id IN ('.implode(',', $user_ids).') +;'; + + $users = query2array($query, 'id', 'username'); + + $template->assign('user_options', $users); +} + // +-----------------------------------------------------------------------+ // | sending html code | // +-----------------------------------------------------------------------+ diff --git a/admin/batch_manager.php b/admin/batch_manager.php index 257b11bb9..e81c59f0a 100644 --- a/admin/batch_manager.php +++ b/admin/batch_manager.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -63,6 +63,21 @@ DELETE FROM '.CADDIE_TABLE.' redirect(get_root_url().'admin.php?page='.$_GET['page']); } + + if ('delete_orphans' == $_GET['action']) + { + $deleted_count = delete_elements(get_orphans(), true); + + if ($deleted_count > 0) + { + $_SESSION['page_infos'][] = l10n_dec( + '%d photo was deleted', '%d photos were deleted', + $deleted_count + ); + + redirect(get_root_url().'admin.php?page='.$_GET['page']); + } + } } // +-----------------------------------------------------------------------+ @@ -323,15 +338,7 @@ SELECT id break; case 'no_album': - $query = ' -SELECT - id - FROM '.IMAGES_TABLE.' - LEFT JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id - WHERE category_id is null -;'; - $filter_sets[] = query2array($query, null, 'id'); - + $filter_sets[] = get_orphans(); break; case 'no_tag': diff --git a/admin/batch_manager_global.php b/admin/batch_manager_global.php index 4179ed284..ba3944abe 100644 --- a/admin/batch_manager_global.php +++ b/admin/batch_manager_global.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -430,7 +430,7 @@ $prefilters = array( array('ID' => 'caddie', 'NAME' => l10n('Caddie')), array('ID' => 'favorites', 'NAME' => l10n('Your favorites')), array('ID' => 'last_import', 'NAME' => l10n('Last import')), - array('ID' => 'no_album', 'NAME' => l10n('With no album')), + array('ID' => 'no_album', 'NAME' => l10n('With no album').' ('.l10n('Orphans').')'), array('ID' => 'no_tag', 'NAME' => l10n('With no tag')), array('ID' => 'duplicates', 'NAME' => l10n('Duplicates')), array('ID' => 'all_photos', 'NAME' => l10n('All')) diff --git a/admin/batch_manager_unit.php b/admin/batch_manager_unit.php index bed0cdc1c..f4d69d572 100644 --- a/admin/batch_manager_unit.php +++ b/admin/batch_manager_unit.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/cat_list.php b/admin/cat_list.php index d69bb4957..81e7c1804 100644 --- a/admin/cat_list.php +++ b/admin/cat_list.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/cat_modify.php b/admin/cat_modify.php index 3cf8239c1..3e50d8ff5 100644 --- a/admin/cat_modify.php +++ b/admin/cat_modify.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -172,21 +172,6 @@ UPDATE '.CATEGORIES_TABLE.' $_SESSION['page_infos'][] = l10n('Album updated successfully'); $redirect = true; } -elseif (isset($_POST['set_random_representant'])) -{ - set_random_representant(array($_GET['cat_id'])); - $redirect = true; -} -elseif (isset($_POST['delete_representant'])) -{ - $query = ' -UPDATE '.CATEGORIES_TABLE.' - SET representative_picture_id = NULL - WHERE id = '.$_GET['cat_id'].' -;'; - pwg_query($query); - $redirect = true; -} if (isset($redirect)) { @@ -336,8 +321,7 @@ else } // representant management -if ($category['has_images'] - or !empty($category['representative_picture_id'])) +if ($category['has_images'] or !empty($category['representative_picture_id'])) { $tpl_representant = array(); @@ -345,20 +329,7 @@ if ($category['has_images'] // representant ? if (!empty($category['representative_picture_id'])) { - $query = ' -SELECT id,representative_ext,path - FROM '.IMAGES_TABLE.' - WHERE id = '.$category['representative_picture_id'].' -;'; - $row = pwg_db_fetch_assoc(pwg_query($query)); - $src = DerivativeImage::thumb_url($row); - $url = get_root_url().'admin.php?page=photo-'.$category['representative_picture_id']; - - $tpl_representant['picture'] = - array( - 'SRC' => $src, - 'URL' => $url - ); + $tpl_representant['picture'] = get_category_representant_properties($category['representative_picture_id']); } // can the admin choose to set a new random representant ? diff --git a/admin/cat_move.php b/admin/cat_move.php index d596d4e67..9e7e0b897 100644 --- a/admin/cat_move.php +++ b/admin/cat_move.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/cat_options.php b/admin/cat_options.php index f191095b6..41d5cd732 100644 --- a/admin/cat_options.php +++ b/admin/cat_options.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/cat_perm.php b/admin/cat_perm.php index c42b3eaa2..eb55f3e4a 100644 --- a/admin/cat_perm.php +++ b/admin/cat_perm.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/comments.php b/admin/comments.php index 0f09faf9f..580f03b90 100644 --- a/admin/comments.php +++ b/admin/comments.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/configuration.php b/admin/configuration.php index e7e6033c8..4a9c3c359 100644 --- a/admin/configuration.php +++ b/admin/configuration.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -578,7 +578,7 @@ switch ($page['section']) $position = 'bottomright'; } - if ($wm->xrepeat != 0) + if ($wm->xrepeat != 0 || $wm->yrepeat != 0) { $position = 'custom'; } @@ -592,6 +592,7 @@ switch ($page['section']) 'xpos' => $wm->xpos, 'ypos' => $wm->ypos, 'xrepeat' => $wm->xrepeat, + 'yrepeat' => $wm->yrepeat, 'opacity' => $wm->opacity, 'position' => $position, ) diff --git a/admin/element_set_ranks.php b/admin/element_set_ranks.php index 8b68ce649..7ff57faee 100644 --- a/admin/element_set_ranks.php +++ b/admin/element_set_ranks.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -46,38 +46,6 @@ if (!isset($_GET['cat_id']) or !is_numeric($_GET['cat_id'])) $page['category_id'] = $_GET['cat_id']; // +-----------------------------------------------------------------------+ -// | functions | -// +-----------------------------------------------------------------------+ - -/** - * save the rank depending on given images order - * - * The list of ordered images id is supposed to be in the same parent - * category - * - * @param array categories - * @return void - */ -function save_images_order($category_id, $images) -{ - $current_rank = 0; - $datas = array(); - foreach ($images as $id) - { - $datas[] = array( - 'category_id' => $category_id, - 'image_id' => $id, - 'rank' => ++$current_rank, - ); - } - $fields = array( - 'primary' => array('image_id', 'category_id'), - 'update' => array('rank') - ); - mass_updates(IMAGE_CATEGORY_TABLE, $fields, $datas); -} - -// +-----------------------------------------------------------------------+ // | global mode form submission | // +-----------------------------------------------------------------------+ diff --git a/admin/extend_for_templates.php b/admin/extend_for_templates.php index 0bab1215e..66b8009da 100644 --- a/admin/extend_for_templates.php +++ b/admin/extend_for_templates.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/group_list.php b/admin/group_list.php index 5c53a8b1f..9691f4913 100644 --- a/admin/group_list.php +++ b/admin/group_list.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/group_perm.php b/admin/group_perm.php index 28ea48111..d4311e09d 100644 --- a/admin/group_perm.php +++ b/admin/group_perm.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/help.php b/admin/help.php index 0625ea61e..cdc3bdf53 100644 --- a/admin/help.php +++ b/admin/help.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/history.php b/admin/history.php index 26855bb40..c2d3ecb9a 100644 --- a/admin/history.php +++ b/admin/history.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/add_core_tabs.inc.php b/admin/include/add_core_tabs.inc.php index 28cf1ce9e..9cef0f064 100644 --- a/admin/include/add_core_tabs.inc.php +++ b/admin/include/add_core_tabs.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/albums_tab.inc.php b/admin/include/albums_tab.inc.php index 399778d01..8bccb5378 100644 --- a/admin/include/albums_tab.inc.php +++ b/admin/include/albums_tab.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/c13y_internal.class.php b/admin/include/c13y_internal.class.php index 10375095a..acf4a32b6 100644 --- a/admin/include/c13y_internal.class.php +++ b/admin/include/c13y_internal.class.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -23,7 +23,7 @@ class c13y_internal { - function c13y_internal() + function __construct() { add_event_handler('list_check_integrity', array(&$this, 'c13y_version')); add_event_handler('list_check_integrity', array(&$this, 'c13y_exif')); diff --git a/admin/include/check_integrity.class.php b/admin/include/check_integrity.class.php index 66ff1db8f..bf2104175 100644 --- a/admin/include/check_integrity.class.php +++ b/admin/include/check_integrity.class.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -27,7 +27,7 @@ class check_integrity var $retrieve_list; var $build_ignore_list; - function check_integrity() + function __construct() { $this->ignore_list = array(); $this->retrieve_list = array(); diff --git a/admin/include/configuration_sizes_process.inc.php b/admin/include/configuration_sizes_process.inc.php index a731aa55f..92d746d4b 100644 --- a/admin/include/configuration_sizes_process.inc.php +++ b/admin/include/configuration_sizes_process.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/configuration_watermark_process.inc.php b/admin/include/configuration_watermark_process.inc.php index ad23d92a2..bc1451791 100644 --- a/admin/include/configuration_watermark_process.inc.php +++ b/admin/include/configuration_watermark_process.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -126,6 +126,7 @@ if (count($errors) == 0) $watermark->xpos = intval($pwatermark['xpos']); $watermark->ypos = intval($pwatermark['ypos']); $watermark->xrepeat = intval($pwatermark['xrepeat']); + $watermark->yrepeat = intval($pwatermark['yrepeat']); $watermark->opacity = intval($pwatermark['opacity']); $watermark->min_size = array(intval($pwatermark['minw']),intval($pwatermark['minh'])); @@ -135,6 +136,7 @@ if (count($errors) == 0) || $watermark->xpos != $old_watermark->xpos || $watermark->ypos != $old_watermark->ypos || $watermark->xrepeat != $old_watermark->xrepeat + || $watermark->yrepeat != $old_watermark->yrepeat || $watermark->opacity != $old_watermark->opacity; // save the new watermark configuration diff --git a/admin/include/functions.php b/admin/include/functions.php index 7d29f5734..4d3ccebe6 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -180,6 +180,25 @@ function delete_element_files($ids) } $new_ids = array(); + $formats_of = array(); + + $query = ' +SELECT + image_id, + ext + FROM '.IMAGE_FORMAT_TABLE.' + WHERE image_id IN ('.implode(',', $ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + if (!isset($formats_of[ $row['image_id'] ])) + { + $formats_of[ $row['image_id'] ] = array(); + } + + $formats_of[ $row['image_id'] ][] = $row['ext']; + } $query = ' SELECT @@ -205,6 +224,14 @@ SELECT $files[] = original_to_representative( $files[0], $row['representative_ext']); } + if (isset($formats_of[ $row['id'] ])) + { + foreach ($formats_of[ $row['id'] ] as $format_ext) + { + $files[] = original_to_format($files[0], $format_ext); + } + } + $ok = true; if (!isset($conf['never_delete_originals'])) { @@ -277,6 +304,13 @@ DELETE FROM '.IMAGE_CATEGORY_TABLE.' ;'; pwg_query($query); + // destruction of the formats + $query = ' +DELETE FROM '.IMAGE_FORMAT_TABLE.' + WHERE image_id IN ('. $ids_str .') +;'; + pwg_query($query); + // destruction of the links between images and tags $query = ' DELETE FROM '.IMAGE_TAG_TABLE.' @@ -358,6 +392,7 @@ function delete_user($user_id) CADDIE_TABLE, // deletion of piwigo specific informations USER_INFOS_TABLE, + USER_AUTH_KEYS_TABLE ); foreach ($tables as $table) @@ -540,6 +575,7 @@ function get_fs_directories($path, $recursive = true) '.', '..', '.svn', 'thumbnail', 'pwg_high', 'pwg_representative', + 'pwg_format', ) ); $exclude_folders = array_flip($exclude_folders); @@ -887,6 +923,25 @@ SELECT uppercats } /** + */ +function get_category_representant_properties($image_id) +{ + $query = ' +SELECT id,representative_ext,path + FROM '.IMAGES_TABLE.' + WHERE id = '.$image_id.' +;'; + $row = pwg_db_fetch_assoc(pwg_query($query)); + $src = DerivativeImage::thumb_url($row); + $url = get_root_url().'admin.php?page=photo-'.$image_id; + + return array( + 'src' => $src, + 'url' => $url + ); +} + +/** * Set a new random representant to the categories. * * @param int[] $categories @@ -2775,4 +2830,51 @@ SELECT CONCAT( } return $keys; -}
\ No newline at end of file +} + +/** + * Return the list of image ids associated to no album + * + * @return int[] $image_ids + */ +function get_orphans() +{ + $query = ' +SELECT + id + FROM '.IMAGES_TABLE.' + LEFT JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id + WHERE category_id is null +;'; + + return query2array($query, null, 'id'); +} + +/** + * save the rank depending on given images order + * + * The list of ordered images id is supposed to be in the same parent + * category + * + * @param int category_id + * @param int[] images + * @return void + */ +function save_images_order($category_id, $images) +{ + $current_rank = 0; + $datas = array(); + foreach ($images as $id) + { + $datas[] = array( + 'category_id' => $category_id, + 'image_id' => $id, + 'rank' => ++$current_rank, + ); + } + $fields = array( + 'primary' => array('image_id', 'category_id'), + 'update' => array('rank') + ); + mass_updates(IMAGE_CATEGORY_TABLE, $fields, $datas); +} diff --git a/admin/include/functions_history.inc.php b/admin/include/functions_history.inc.php index e2bcc4d62..55783fd74 100644 --- a/admin/include/functions_history.inc.php +++ b/admin/include/functions_history.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/functions_install.inc.php b/admin/include/functions_install.inc.php index a97835583..5a68964f8 100644 --- a/admin/include/functions_install.inc.php +++ b/admin/include/functions_install.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/functions_metadata.php b/admin/include/functions_metadata.php index da0703774..1b5b5bb73 100644 --- a/admin/include/functions_metadata.php +++ b/admin/include/functions_metadata.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/functions_notification_by_mail.inc.php b/admin/include/functions_notification_by_mail.inc.php index 8d0fe2621..204be5c33 100644 --- a/admin/include/functions_notification_by_mail.inc.php +++ b/admin/include/functions_notification_by_mail.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -125,12 +125,12 @@ select U.'.$conf['user_fields']['username'].' as username, U.'.$conf['user_fields']['email'].' as mail_address, N.enabled, - N.last_send -from - '.USER_MAIL_NOTIFICATION_TABLE.' as N, - '.USERS_TABLE.' as U -where - N.user_id = U.'.$conf['user_fields']['id']; + N.last_send, + UI.status +from '.USER_MAIL_NOTIFICATION_TABLE.' as N + JOIN '.USERS_TABLE.' as U on N.user_id = U.'.$conf['user_fields']['id'].' + JOIN '.USER_INFOS_TABLE.' as UI on UI.user_id = N.user_id +where 1=1'; if ($action == 'send') { @@ -159,7 +159,7 @@ order by'; else { $query .= ' - username;'; + username'; } $query .= ';'; diff --git a/admin/include/functions_permalinks.php b/admin/include/functions_permalinks.php index 6c8ae4aac..db0679661 100644 --- a/admin/include/functions_permalinks.php +++ b/admin/include/functions_permalinks.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/functions_plugins.inc.php b/admin/include/functions_plugins.inc.php index fb98c799c..8605f1ff2 100644 --- a/admin/include/functions_plugins.inc.php +++ b/admin/include/functions_plugins.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/functions_upgrade.php b/admin/include/functions_upgrade.php index b7a8763c5..bf6ef2b88 100644 --- a/admin/include/functions_upgrade.php +++ b/admin/include/functions_upgrade.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -174,10 +174,7 @@ UPDATE '.PREFIX_TABLE.'user_infos // Deactivate all templates function deactivate_templates() { - $query = ' - UPDATE '.PREFIX_TABLE.'config - SET value = \''. array() .'\' - WHERE param = \'extents_for_templates\';'; + conf_update_param('extents_for_templates', array()); } // Check access rights @@ -322,4 +319,4 @@ function upgrade_db_connect() my_error(l10n($e->getMessage()), true); } } -?>
\ No newline at end of file +?> diff --git a/admin/include/functions_upload.inc.php b/admin/include/functions_upload.inc.php index d0ef6e67d..17e78a200 100644 --- a/admin/include/functions_upload.inc.php +++ b/admin/include/functions_upload.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -268,104 +268,19 @@ SELECT } @chmod($file_path, 0644); - if ($is_tiff and pwg_image::get_library() == 'ext_imagick') - { - // move the uploaded file to pwg_representative sub-directory - $representative_file_path = dirname($file_path).'/pwg_representative/'; - $representative_file_path.= get_filename_wo_extension(basename($file_path)).'.'; - - $representative_ext = $conf['tiff_representative_ext']; - $representative_file_path.= $representative_ext; - - prepare_directory(dirname($representative_file_path)); - - $exec = $conf['ext_imagick_dir'].'convert'; - - if ('jpg' == $conf['tiff_representative_ext']) - { - $exec .= ' -quality 98'; - } - - $exec .= ' "'.realpath($file_path).'"'; - - $dest = pathinfo($representative_file_path); - $exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'"'; - - $exec .= ' 2>&1'; - @exec($exec, $returnarray); - - // sometimes ImageMagick creates file-0.jpg (full size) + file-1.jpg - // (thumbnail). I don't know how to avoid it. - $representative_file_abspath = realpath($dest['dirname']).'/'.$dest['basename']; - if (!file_exists($representative_file_abspath)) - { - $first_file_abspath = preg_replace( - '/\.'.$representative_ext.'$/', - '-0.'.$representative_ext, - $representative_file_abspath - ); - - if (file_exists($first_file_abspath)) - { - rename($first_file_abspath, $representative_file_abspath); - } - } - } + // handle the uploaded file type by potentially making a + // pwg_representative file. + $representative_ext = trigger_change('upload_file', null, $file_path); - // - // generate pwg_representative in case of video - // - $ffmpeg_video_exts = array( // extensions tested with FFmpeg - 'wmv','mov','mkv','mp4','mpg','flv','asf','xvid','divx','mpeg', - 'avi','rm', - ); + global $logger; + $logger->info("Handling " . (string)$file_path . " got " . (string)$representative_ext); - if (isset($original_extension) and in_array($original_extension, $ffmpeg_video_exts)) - { - $representative_file_path = dirname($file_path).'/pwg_representative/'; - $representative_file_path.= get_filename_wo_extension(basename($file_path)).'.'; - - $representative_ext = 'jpg'; - $representative_file_path.= $representative_ext; - - prepare_directory(dirname($representative_file_path)); - - $second = 1; - - $ffmpeg = $conf['ffmpeg_dir'].'ffmpeg'; - $ffmpeg.= ' -i "'.$file_path.'"'; - $ffmpeg.= ' -an -ss '.$second; - $ffmpeg.= ' -t 1 -r 1 -y -vcodec mjpeg -f mjpeg'; - $ffmpeg.= ' "'.$representative_file_path.'"'; - - // file_put_contents('/tmp/ffmpeg.log', "\n==== ".date('c')."\n".__FUNCTION__.' : '.$ffmpeg."\n", FILE_APPEND); - - @exec($ffmpeg); - - if (!file_exists($representative_file_path)) - { - $representative_ext = null; - } - } - - if (isset($original_extension) and 'pdf' == $original_extension and pwg_image::get_library() == 'ext_imagick') - { - $representative_file_path = dirname($file_path).'/pwg_representative/'; - $representative_file_path.= get_filename_wo_extension(basename($file_path)).'.'; - - $representative_ext = 'jpg'; - $representative_file_path.= $representative_ext; - - prepare_directory(dirname($representative_file_path)); - - $exec = $conf['ext_imagick_dir'].'convert'; - $exec.= ' -quality 98'; - $exec.= ' "'.realpath($file_path).'"[0]'; - - $dest = pathinfo($representative_file_path); - $exec.= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'"'; - $exec.= ' 2>&1'; - @exec($exec, $returnarray); + // If it is set to either true (the file didn't need a + // representative generated) or false (the generation of the + // representative failed), set it to null because we have no + // representative file. + if (is_bool($representative_ext)) { + $representative_ext = null; } if (pwg_image::get_library() != 'gd') @@ -492,6 +407,168 @@ SELECT return $image_id; } +add_event_handler('upload_file', 'upload_file_pdf'); +function upload_file_pdf($representative_ext, $file_path) +{ + global $logger, $conf; + + $logger->info(__FUNCTION__.', $file_path = '.$file_path.', $representative_ext = '.$representative_ext); + + if (isset($representative_ext)) + { + return $representative_ext; + } + + if (pwg_image::get_library() != 'ext_imagick') + { + return $representative_ext; + } + + if (!in_array(strtolower(get_extension($file_path)), array('pdf'))) + { + return $representative_ext; + } + + $ext = conf_get_param('pdf_representative_ext', 'jpg'); + $jpg_quality = conf_get_param('pdf_jpg_quality', 90); + + // move the uploaded file to pwg_representative sub-directory + $representative_file_path = original_to_representative($file_path, $ext); + prepare_directory(dirname($representative_file_path)); + + $exec = $conf['ext_imagick_dir'].'convert'; + if ('jpg' == $ext) + { + $exec.= ' -quality '.$jpg_quality; + } + $exec.= ' "'.realpath($file_path).'"[0]'; + $exec.= ' "'.$representative_file_path.'"'; + $exec.= ' 2>&1'; + @exec($exec, $returnarray); + + // Return the extension (if successful) or false (if failed) + if (file_exists($representative_file_path)) + { + $representative_ext = $ext; + } + + return $representative_ext; +} + +add_event_handler('upload_file', 'upload_file_tiff'); +function upload_file_tiff($representative_ext, $file_path) +{ + global $logger, $conf; + + $logger->info(__FUNCTION__.', $file_path = '.$file_path.', $representative_ext = '.$representative_ext); + + if (isset($representative_ext)) + { + return $representative_ext; + } + + if (pwg_image::get_library() != 'ext_imagick') + { + return $representative_ext; + } + + if (!in_array(strtolower(get_extension($file_path)), array('tif', 'tiff'))) + { + return $representative_ext; + } + + // move the uploaded file to pwg_representative sub-directory + $representative_file_path = dirname($file_path).'/pwg_representative/'; + $representative_file_path.= get_filename_wo_extension(basename($file_path)).'.'; + + $representative_ext = $conf['tiff_representative_ext']; + $representative_file_path.= $representative_ext; + + prepare_directory(dirname($representative_file_path)); + + $exec = $conf['ext_imagick_dir'].'convert'; + + if ('jpg' == $conf['tiff_representative_ext']) + { + $exec .= ' -quality 98'; + } + + $exec .= ' "'.realpath($file_path).'"'; + + $dest = pathinfo($representative_file_path); + $exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'"'; + + $exec .= ' 2>&1'; + @exec($exec, $returnarray); + + // sometimes ImageMagick creates file-0.jpg (full size) + file-1.jpg + // (thumbnail). I don't know how to avoid it. + $representative_file_abspath = realpath($dest['dirname']).'/'.$dest['basename']; + if (!file_exists($representative_file_abspath)) + { + $first_file_abspath = preg_replace( + '/\.'.$representative_ext.'$/', + '-0.'.$representative_ext, + $representative_file_abspath + ); + + if (file_exists($first_file_abspath)) + { + rename($first_file_abspath, $representative_file_abspath); + } + } + + return get_extension($representative_file_abspath); +} + +add_event_handler('upload_file', 'upload_file_video'); +function upload_file_video($representative_ext, $file_path) +{ + global $logger, $conf; + + $logger->info(__FUNCTION__.', $file_path = '.$file_path.', $representative_ext = '.$representative_ext); + + if (isset($representative_ext)) + { + return $representative_ext; + } + + $ffmpeg_video_exts = array( // extensions tested with FFmpeg + 'wmv','mov','mkv','mp4','mpg','flv','asf','xvid','divx','mpeg', + 'avi','rm', + ); + + if (!in_array(strtolower(get_extension($file_path)), $ffmpeg_video_exts)) + { + return $representative_ext; + } + + $representative_file_path = dirname($file_path).'/pwg_representative/'; + $representative_file_path.= get_filename_wo_extension(basename($file_path)).'.'; + + $representative_ext = 'jpg'; + $representative_file_path.= $representative_ext; + + prepare_directory(dirname($representative_file_path)); + + $second = 1; + + $ffmpeg = $conf['ffmpeg_dir'].'ffmpeg'; + $ffmpeg.= ' -i "'.$file_path.'"'; + $ffmpeg.= ' -an -ss '.$second; + $ffmpeg.= ' -t 1 -r 1 -y -vcodec mjpeg -f mjpeg'; + $ffmpeg.= ' "'.$representative_file_path.'"'; + + @exec($ffmpeg); + + if (!file_exists($representative_file_path)) + { + return null; + } + + return $representative_ext; +} + function prepare_directory($directory) { if (!is_dir($directory)) { diff --git a/admin/include/image.class.php b/admin/include/image.class.php index ee9b9bb12..e713a84c9 100644 --- a/admin/include/image.class.php +++ b/admin/include/image.class.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/index.php b/admin/include/index.php index c8de97f60..0b96c3efa 100644 --- a/admin/include/index.php +++ b/admin/include/index.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/include/languages.class.php b/admin/include/languages.class.php index 351e36d53..6f6780592 100644 --- a/admin/include/languages.class.php +++ b/admin/include/languages.class.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -30,7 +30,7 @@ class languages /** * Initialize $fs_languages and $db_languages */ - function languages($target_charset = null) + function __construct($target_charset = null) { $this->get_fs_languages($target_charset); } @@ -408,4 +408,4 @@ UPDATE '.USER_INFOS_TABLE.' return strcmp(strtolower($a['extension_name']), strtolower($b['extension_name'])); } } -?>
\ No newline at end of file +?> diff --git a/admin/include/mysqldump.php b/admin/include/mysqldump.php index 515d86ae9..1432675c8 100644 --- a/admin/include/mysqldump.php +++ b/admin/include/mysqldump.php @@ -59,7 +59,7 @@ class MySQLDump { * @param boolean $compress It defines if the output file is compress (gzip) or not
* @param boolean $hexValue It defines if the outup values are base-16 or not
*/
- function MYSQLDump($db = null, $filepath = 'dump.sql', $compress = false, $hexValue = false){
+ function __construct($db = null, $filepath = 'dump.sql', $compress = false, $hexValue = false){
$this->compress = $compress;
if ( !$this->setOutputFile($filepath) )
return false;
@@ -418,4 +418,4 @@ class MySQLDump { @fclose($file);
}
}
-?>
\ No newline at end of file +?>
diff --git a/admin/include/pclzip.lib.php b/admin/include/pclzip.lib.php index e7facc1ea..c2d09a50c 100644 --- a/admin/include/pclzip.lib.php +++ b/admin/include/pclzip.lib.php @@ -212,7 +212,7 @@ // Note that no real action is taken, if the archive does not exist it is not // created. Use create() for that. // -------------------------------------------------------------------------------- - function PclZip($p_zipname) + function __construct($p_zipname) { // ----- Tests the zlib diff --git a/admin/include/photos_add_direct_prepare.inc.php b/admin/include/photos_add_direct_prepare.inc.php index 34b025f13..4d852fee4 100644 --- a/admin/include/photos_add_direct_prepare.inc.php +++ b/admin/include/photos_add_direct_prepare.inc.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -44,6 +44,7 @@ $template->assign( 'F_ADD_ACTION'=> PHOTOS_ADD_BASE_URL, 'upload_max_filesize' => $upload_max_filesize, 'upload_max_filesize_shorthand' => $upload_max_filesize_shorthand, + 'chunk_size' => $conf['upload_form_chunk_size'], ) ); @@ -229,4 +230,4 @@ if (!isset($_SESSION['upload_hide_warnings'])) ); } -?>
\ No newline at end of file +?> diff --git a/admin/include/plugins.class.php b/admin/include/plugins.class.php index 71093a6c1..8b4b82b75 100644 --- a/admin/include/plugins.class.php +++ b/admin/include/plugins.class.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -69,7 +69,7 @@ class plugins /** * Initialize $fs_plugins and $db_plugins_by_id */ - function plugins() + function __construct() { $this->get_fs_plugins(); @@ -716,4 +716,4 @@ DELETE FROM '. PLUGINS_TABLE .' $this->fs_plugins = $active_plugins + $inactive_plugins + $not_installed; } } -?>
\ No newline at end of file +?> diff --git a/admin/include/tabsheet.class.php b/admin/include/tabsheet.class.php index c7681b611..cb89886fe 100644 --- a/admin/include/tabsheet.class.php +++ b/admin/include/tabsheet.class.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -33,7 +33,7 @@ class tabsheet $name is the tabsheet's name inside the template .tpl file $titlename in the template is affected by $titlename value */ - function tabsheet($name = 'TABSHEET', $titlename = 'TABSHEET_TITLE') + function __construct($name = 'TABSHEET', $titlename = 'TABSHEET_TITLE') { $this->sheets = array(); $this->uniqid = null; diff --git a/admin/include/themes.class.php b/admin/include/themes.class.php index df0e29e66..6d55e11bd 100644 --- a/admin/include/themes.class.php +++ b/admin/include/themes.class.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -60,7 +60,7 @@ class themes /** * Initialize $fs_themes and $db_themes_by_id */ - function themes() + function __construct() { $this->get_fs_themes(); @@ -736,4 +736,4 @@ SELECT } } -?>
\ No newline at end of file +?> diff --git a/admin/include/updates.class.php b/admin/include/updates.class.php index 17a3b2578..d4e178f8a 100644 --- a/admin/include/updates.class.php +++ b/admin/include/updates.class.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
-// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
@@ -135,15 +135,33 @@ class updates {
return false;
}
+
+ $servers = array();
+
foreach ($pem_exts as $ext)
{
if (isset($ext_to_check[$ext['extension_id']]))
{
- $server = 'server_'.$ext_to_check[$ext['extension_id']];
- $this->$ext_to_check[$ext['extension_id']]->$server += array($ext['extension_id'] => $ext);
+ $type = $ext_to_check[$ext['extension_id']];
+
+ if (!isset($servers[$type]))
+ {
+ $servers[$type] = array();
+ }
+
+ $servers[$type][ $ext['extension_id'] ] = $ext;
+
unset($ext_to_check[$ext['extension_id']]);
}
}
+
+ foreach ($servers as $server_type => $extension_list)
+ {
+ $server_string = 'server_'.$server_type;
+
+ $this->$server_type->$server_string = $extension_list;
+ }
+
$this->check_missing_extensions($ext_to_check);
return true;
}
diff --git a/admin/index.php b/admin/index.php index c8de97f60..0b96c3efa 100644 --- a/admin/index.php +++ b/admin/index.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/intro.php b/admin/intro.php index ee0149841..96b07d2a8 100644 --- a/admin/intro.php +++ b/admin/intro.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/languages.php b/admin/languages.php index c901d923c..0ea4c17df 100644 --- a/admin/languages.php +++ b/admin/languages.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/languages_installed.php b/admin/languages_installed.php index eb0a89578..16d9df651 100644 --- a/admin/languages_installed.php +++ b/admin/languages_installed.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/languages_new.php b/admin/languages_new.php index bf46cbb71..afa756c56 100644 --- a/admin/languages_new.php +++ b/admin/languages_new.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/maintenance.php b/admin/maintenance.php index 5c933461e..9befd5032 100644 --- a/admin/maintenance.php +++ b/admin/maintenance.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/menubar.php b/admin/menubar.php index 69e363ccc..e884fab56 100644 --- a/admin/menubar.php +++ b/admin/menubar.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/notification_by_mail.php b/admin/notification_by_mail.php index 38cadff6c..ca3d4127c 100644 --- a/admin/notification_by_mail.php +++ b/admin/notification_by_mail.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -289,13 +289,24 @@ function do_action_send_mail_notification($action = 'list_to_send', $check_key_l if ($is_action_send) { + $auth = null; + $add_url_params = array(); + + $auth_key = create_user_auth_key($nbm_user['user_id'], $nbm_user['status']); + + if ($auth_key !== false) + { + $auth = $auth_key['auth_key']; + $add_url_params['auth'] = $auth; + } + set_make_full_url(); // Fill return list of "treated" check_key for 'send' $return_list[] = $nbm_user['check_key']; if ($conf['nbm_send_detailed_content']) { - $news = news($nbm_user['last_send'], $dbnow, false, $conf['nbm_send_html_mail']); + $news = news($nbm_user['last_send'], $dbnow, false, $conf['nbm_send_html_mail'], $auth); $exist_data = count($news) > 0; } else @@ -362,7 +373,7 @@ function do_action_send_mail_notification($action = 'list_to_send', $check_key_l array ( 'TITLE' => get_title_recent_post_date($date_detail), - 'HTML_DATA' => get_html_description_recent_post_date($date_detail) + 'HTML_DATA' => get_html_description_recent_post_date($date_detail, $auth) ) ); } @@ -373,7 +384,7 @@ function do_action_send_mail_notification($action = 'list_to_send', $check_key_l array ( 'GOTO_GALLERY_TITLE' => $conf['gallery_title'], - 'GOTO_GALLERY_URL' => get_gallery_home_url(), + 'GOTO_GALLERY_URL' => add_url_params(get_gallery_home_url(), $add_url_params), 'SEND_AS_NAME' => $env_nbm['send_as_name'], ) ); @@ -389,6 +400,7 @@ function do_action_send_mail_notification($action = 'list_to_send', $check_key_l 'email_format' => $env_nbm['email_format'], 'content' => $env_nbm['mail_template']->parse('notification_by_mail', true), 'content_format' => $env_nbm['email_format'], + 'auth_key' => $auth, ) ); @@ -707,6 +719,20 @@ switch ($page['mode']) } } $template->assign($page['mode'], $tpl_var); + + if ($conf['auth_key_duration'] > 0) + { + $template->assign( + 'auth_key_duration', + time_since( + strtotime('now -'.$conf['auth_key_duration'].' second'), + 'second', + null, + false + ) + ); + } + break; } } diff --git a/admin/permalinks.php b/admin/permalinks.php index 72f951322..e09a2130b 100644 --- a/admin/permalinks.php +++ b/admin/permalinks.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/photo.php b/admin/photo.php index b99a76cfd..c1d0687a9 100644 --- a/admin/photo.php +++ b/admin/photo.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/photos_add.php b/admin/photos_add.php index 72bf99158..457e28150 100644 --- a/admin/photos_add.php +++ b/admin/photos_add.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/photos_add_applications.php b/admin/photos_add_applications.php index 82c95fddf..1cb35e939 100644 --- a/admin/photos_add_applications.php +++ b/admin/photos_add_applications.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/photos_add_direct.php b/admin/photos_add_direct.php index 9f3e88866..fd4efe5f7 100644 --- a/admin/photos_add_direct.php +++ b/admin/photos_add_direct.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/photos_add_ftp.php b/admin/photos_add_ftp.php index 5655d0f6e..e48a23754 100644 --- a/admin/photos_add_ftp.php +++ b/admin/photos_add_ftp.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/picture_coi.php b/admin/picture_coi.php index 6ad8fa98c..26540d63e 100644 --- a/admin/picture_coi.php +++ b/admin/picture_coi.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/picture_modify.php b/admin/picture_modify.php index bf0e458e6..ab62c5624 100644 --- a/admin/picture_modify.php +++ b/admin/picture_modify.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -306,6 +306,25 @@ SELECT $intro_vars['stats'].= ', '.sprintf(l10n('Rated %d times, score : %.2f'), $row['nb_rates'], $row['rating_score']); } +$query = ' +SELECT * + FROM '.IMAGE_FORMAT_TABLE.' + WHERE image_id = '.$row['id'].' +;'; +$formats = query2array($query); + +if (!empty($formats)) +{ + $format_strings = array(); + + foreach ($formats as $format) + { + $format_strings[] = sprintf('%s (%.2fMB)', $format['ext'], $format['filesize']/1024); + } + + $intro_vars['formats'] = l10n('Formats: %s', implode(', ', $format_strings)); +} + $template->assign('INTRO', $intro_vars); diff --git a/admin/plugin.php b/admin/plugin.php index dd6d989e9..68e0c50d7 100644 --- a/admin/plugin.php +++ b/admin/plugin.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/plugins.php b/admin/plugins.php index efe3bd833..9377affdb 100644 --- a/admin/plugins.php +++ b/admin/plugins.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/plugins_installed.php b/admin/plugins_installed.php index a804e21ce..b87921c02 100644 --- a/admin/plugins_installed.php +++ b/admin/plugins_installed.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/plugins_new.php b/admin/plugins_new.php index a8df9359c..2ef02f1bb 100644 --- a/admin/plugins_new.php +++ b/admin/plugins_new.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/popuphelp.php b/admin/popuphelp.php index 7d0a0cf8b..51820fe0f 100644 --- a/admin/popuphelp.php +++ b/admin/popuphelp.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/profile.php b/admin/profile.php index 5554fe1cd..71a929950 100644 --- a/admin/profile.php +++ b/admin/profile.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/rating.php b/admin/rating.php index 1592125c6..3525cbdd1 100644 --- a/admin/rating.php +++ b/admin/rating.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/rating_user.php b/admin/rating_user.php index e6eea9ee9..e7789932d 100644 --- a/admin/rating_user.php +++ b/admin/rating_user.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/site_manager.php b/admin/site_manager.php index 21fdebd40..0712da3ea 100644 --- a/admin/site_manager.php +++ b/admin/site_manager.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/site_reader_local.php b/admin/site_reader_local.php index 7e618ca17..c157b38c7 100644 --- a/admin/site_reader_local.php +++ b/admin/site_reader_local.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -100,14 +100,19 @@ function get_elements($path) { $representative_ext = $this->get_representative_ext($path, $filename_wo_ext); } - $fs[ $path.'/'.$node ] = array( - 'representative_ext' => $representative_ext, - ); + + $fs[ $path.'/'.$node ] = array('representative_ext' => $representative_ext); + + if ($conf['enable_formats']) + { + $fs[ $path.'/'.$node ]['formats'] = $this->get_formats($path, $filename_wo_ext); + } } } else if (is_dir($path.'/'.$node) and $node != 'pwg_high' and $node != 'pwg_representative' + and $node != 'pwg_format' and $node != 'thumbnail' ) { $subdirs[] = $node; @@ -182,6 +187,26 @@ function get_representative_ext($path, $filename_wo_ext) return null; } +function get_formats($path, $filename_wo_ext) +{ + global $conf; + + $formats = array(); + + $base_test = $path.'/pwg_format/'.$filename_wo_ext.'.'; + + foreach ($conf['format_ext'] as $ext) + { + $test = $base_test.$ext; + + if (is_file($test)) + { + $formats[$ext] = floor(filesize($test) / 1024); + } + } + + return $formats; +} } ?>
\ No newline at end of file diff --git a/admin/site_update.php b/admin/site_update.php index 5bcaea12a..ad3ccba19 100644 --- a/admin/site_update.php +++ b/admin/site_update.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ @@ -457,6 +457,7 @@ if (isset($_POST['submit']) and $_POST['sync'] == 'files' $start= $start_files; $fs = $site_reader->get_elements($basedir); + $template->append('footer_elements', '<!-- get_elements: ' . get_elapsed_time($start, get_moment()) . ' -->' ); @@ -486,6 +487,8 @@ SELECT id, path $inserts = array(); $insert_links = array(); + $insert_formats = array(); + $formats_to_delete = array(); foreach (array_diff(array_keys($fs), $db_elements) as $path) { @@ -535,20 +538,119 @@ SELECT id, path 'info' => l10n('added') ); + if ($conf['enable_formats']) + { + foreach ($fs[$path]['formats'] as $ext => $filesize) + { + $insert_formats[] = array( + 'image_id' => $insert['id'], + 'ext' => $ext, + 'filesize' => $filesize, + ); + + $infos[] = array( + 'path' => $insert['path'], + 'info' => l10n('format %s added', $ext) + ); + } + } + $caddiables[] = $insert['id']; } - if (count($inserts) > 0) + // search new/removed formats on photos already registered in database + if ($conf['enable_formats']) { - if (!$simulate) + $db_elements_flip = array_flip($db_elements); + + $existing_ids = array(); + + foreach (array_intersect_key($fs, $db_elements_flip) as $path => $existing) + { + $existing_ids[] = $db_elements_flip[$path]; + } + + $logger->debug('existing_ids', 'sync', $existing_ids); + + if (count($existing_ids) > 0) + { + $db_formats = array(); + + // find formats for existing photos (already in database) + $query = ' +SELECT * + FROM '.IMAGE_FORMAT_TABLE.' + WHERE image_id IN ('.implode(',', $existing_ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + if (!isset($db_formats[$row['image_id']])) + { + $db_formats[$row['image_id']] = array(); + } + + $db_formats[$row['image_id']][$row['ext']] = $row['format_id']; + } + + // first we search the formats that were removed + foreach ($db_formats as $image_id => $formats) + { + $image_formats_to_delete = array_diff_key($formats, $fs[ $db_elements[$image_id] ]['formats']); + $logger->debug('image_formats_to_delete', 'sync', $image_formats_to_delete); + foreach ($image_formats_to_delete as $ext => $format_id) + { + $formats_to_delete[] = $format_id; + + $infos[] = array( + 'path' => $db_elements[$image_id], + 'info' => l10n('format %s removed', $ext) + ); + } + } + + // then we search for new formats on existing photos + foreach ($existing_ids as $image_id) + { + $path = $db_elements[$image_id]; + + $formats = array(); + if (isset($db_formats[$image_id])) + { + $formats = $db_formats[$image_id]; + } + + $image_formats_to_insert = array_diff_key($fs[$path]['formats'], $formats); + $logger->debug('image_formats_to_insert', 'sync', $image_formats_to_insert); + foreach ($image_formats_to_insert as $ext => $filesize) + { + $insert_formats[] = array( + 'image_id' => $image_id, + 'ext' => $ext, + 'filesize' => $filesize, + ); + + $infos[] = array( + 'path' => $db_elements[$image_id], + 'info' => l10n('format %s added', $ext) + ); + } + } + } + } + + + if (!$simulate) + { + // inserts all new elements + if (count($inserts) > 0) { - // inserts all new elements mass_inserts( IMAGES_TABLE, array_keys($inserts[0]), $inserts ); - + // inserts all links between new elements and their storage category mass_inserts( IMAGE_CATEGORY_TABLE, @@ -562,9 +664,30 @@ SELECT id, path fill_caddie($caddiables); } } - $counts['new_elements'] = count($inserts); + + // inserts all formats + if (count($insert_formats) > 0) + { + mass_inserts( + IMAGE_FORMAT_TABLE, + array_keys($insert_formats[0]), + $insert_formats + ); + } + + if (count($formats_to_delete) > 0) + { + $query = ' +DELETE + FROM '.IMAGE_FORMAT_TABLE.' + WHERE format_id IN ('.implode(',', $formats_to_delete).') +;'; + pwg_query($query); + } } + $counts['new_elements'] = count($inserts); + // delete elements that are in database but not in the filesystem $to_delete_elements = array(); foreach (array_diff($db_elements, array_keys($fs)) as $path) diff --git a/admin/stats.php b/admin/stats.php index e103c2ea9..5398d0b26 100644 --- a/admin/stats.php +++ b/admin/stats.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/tags.php b/admin/tags.php index c643391c9..ce503ba67 100644 --- a/admin/tags.php +++ b/admin/tags.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/theme.php b/admin/theme.php index 984ac451b..eef3fb199 100644 --- a/admin/theme.php +++ b/admin/theme.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/themes.php b/admin/themes.php index 5359974f4..a903ddb8f 100644 --- a/admin/themes.php +++ b/admin/themes.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/themes/clear/icon/index.php b/admin/themes/clear/icon/index.php index e3365959c..6a7aa65b4 100644 --- a/admin/themes/clear/icon/index.php +++ b/admin/themes/clear/icon/index.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
-// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
diff --git a/admin/themes/clear/index.php b/admin/themes/clear/index.php index d959f2c09..f08fc4442 100644 --- a/admin/themes/clear/index.php +++ b/admin/themes/clear/index.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
-// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
diff --git a/admin/themes/default/fontello/README.txt b/admin/themes/default/fontello/README.txt index 43e23f283..a91438a9a 100644 --- a/admin/themes/default/fontello/README.txt +++ b/admin/themes/default/fontello/README.txt @@ -11,7 +11,7 @@ webfont pack. Details available in LICENSE.txt file. - If your project is open-source, usually, it will be ok to make LICENSE.txt file publically available in your repository. -- Fonts, used in Fontello, don't require to make clickable links on your site. +- Fonts, used in Fontello, don't require a clickable link on your site. But any kind of additional authors crediting is welcome. ================================================================================ @@ -29,8 +29,8 @@ Comments on archive content - LICENSE.txt - license info about source fonts, used to build your one. -- config.json - keeps your settings. You can import it back to fontello anytime, - to continue your work +- config.json - keeps your settings. You can import it back into fontello + anytime, to continue your work Why so many CSS files ? @@ -38,17 +38,17 @@ Why so many CSS files ? Because we like to fit all your needs :) -- basic file, <your_font_name>.css - is usually enougth, in contains @font-face - and character codes definition +- basic file, <your_font_name>.css - is usually enough, it contains @font-face + and character code definitions - *-ie7.css - if you need IE7 support, but still don't wish to put char codes directly into html - *-codes.css and *-ie7-codes.css - if you like to use your own @font-face - rules, but still wish to benefit of css generation. That can be very - convenient for automated assets build systems. When you need to update font - - no needs to manually edit files, just override old version with archive - content. See fontello source codes for example. + rules, but still wish to benefit from css generation. That can be very + convenient for automated asset build systems. When you need to update font - + no need to manually edit files, just override old version with archive + content. See fontello source code for examples. - *-embedded.css - basic css file, but with embedded WOFF font, to avoid CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain. @@ -63,11 +63,11 @@ Because we like to fit all your needs :) Attention for server setup -------------------------- -You MUST setup server to reply with proper `mime-types` for font files. In other -case, some browsers will fail to show fonts. +You MUST setup server to reply with proper `mime-types` for font files - +otherwise some browsers will fail to show fonts. Usually, `apache` already has necessary settings, but `nginx` and other -webservers should be tuned. Here is list of mime types for our file extentions: +webservers should be tuned. Here is list of mime types for our file extensions: - `application/vnd.ms-fontobject` - eot - `application/x-font-woff` - woff diff --git a/admin/themes/default/fontello/config.json b/admin/themes/default/fontello/config.json index 16b7c6070..20c3fe735 100644 --- a/admin/themes/default/fontello/config.json +++ b/admin/themes/default/fontello/config.json @@ -385,6 +385,12 @@ "src": "iconic" }, { + "uid": "862129f833b09f3d34ae39acf8484a7b", + "css": "heart-broken", + "code": 59429, + "src": "mfglabs" + }, + { "uid": "05ef9b5e8742971aa85b23cfcbe71594", "css": "users", "code": 59394, diff --git a/admin/themes/default/fontello/css/fontello-codes.css b/admin/themes/default/fontello/css/fontello-codes.css index b569e79a5..d31cf3433 100644 --- a/admin/themes/default/fontello/css/fontello-codes.css +++ b/admin/themes/default/fontello/css/fontello-codes.css @@ -52,6 +52,7 @@ .icon-cancel:before { content: '\e822'; } /* 'î ¢' */ .icon-plus:before { content: '\e823'; } /* 'î £' */ .icon-ok-circled:before { content: '\e824'; } /* 'î ¤' */ +.icon-heart-broken:before { content: '\e825'; } /* 'î ¥' */ .icon-zoom-in:before { content: '\e827'; } /* 'î §' */ .icon-zoom-out:before { content: '\e828'; } /* 'î ¨' */ .icon-tasks:before { content: '\f0ae'; } /* 'ï‚®' */ diff --git a/admin/themes/default/fontello/css/fontello-embedded.css b/admin/themes/default/fontello/css/fontello-embedded.css index c30c9f768..e17d676a8 100644 --- a/admin/themes/default/fontello/css/fontello-embedded.css +++ b/admin/themes/default/fontello/css/fontello-embedded.css @@ -2,16 +2,16 @@ @font-face { font-family: 'fontello'; - src: url('../font/fontello.eot?76878460'); - src: url('../font/fontello.eot?76878460#iefix') format('embedded-opentype'), - url('../font/fontello.svg?76878460#fontello') format('svg'); + src: url('../font/fontello.eot?37675340'); + src: url('../font/fontello.eot?37675340#iefix') format('embedded-opentype'), + url('../font/fontello.svg?37675340#fontello') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'fontello'; - src: url('data:application/octet-stream;base64,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') format('woff'), - url('data:application/octet-stream;base64,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IzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKxAAAqsQAFQrEACCqxAAVCsQAIKrEABUK5AAAACSqxAAVCuQAAAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbEADCq4Af+FsASNsQIARAA=') format('truetype'); + src: url('data:application/octet-stream;base64,d09GRgABAAAAADBIAA4AAAAASsAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWfC1hKmNtYXAAAAGIAAABRwAAA1adxeuOY3Z0IAAAAtAAAAAKAAAACgAAAABmcGdtAAAC3AAABZQAAAtwiJCQWWdhc3AAAAhwAAAACAAAAAgAAAAQZ2x5ZgAACHgAACKtAAAylm/WaOloZWFkAAArKAAAADUAAAA2CEOoA2hoZWEAACtgAAAAHgAAACQIYARGaG10eAAAK4AAAABnAAABEPPcAABsb2NhAAAr6AAAAIoAAACK1WLI4m1heHAAACx0AAAAIAAAACAA+wx2bmFtZQAALJQAAAF3AAACzcydGx1wb3N0AAAuDAAAAdIAAAKhWz5+kHByZXAAAC/gAAAAZQAAAHvdawOFeJxjYGSexjiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOKix/v/PHPQ/iyGKOYJhGlCYESQHAPboDCp4nN3Su0oDQRQG4H/IRbMmGRDUacQU7k4CtuJ1vb6BWCi2VmLlU+gDpMgzSEKq1D5CyqRbUJhBi2zwgkUknpmTJoWgrQPf/HPYM7sDOwCyADJkFQJuPFElfJ1BAIhn6nigeg0VWhWBKB81ooEu6LKuJ00TmJKpmJqJTceGtpq20naapHYYjsfudVHux25YPd3dH/Wv+gu9Ue+zd7NyocbqS72oR9VVZ0qqsryTt/JcnsjFyUl/PUT+b/3/chTdJK4n1fL0wyjn/qtroGwwdyuiAXO3RBcYqFeXGWiPrjPMAEmTYRYwAQPtMSXmbpSpMMxR1pg7nYkZXG+Hgb5hKWxIk6TUpErrdSBtMWxQthk2KROGLUrLsA0MQ4YdiNesB+xCvF16QAzxDg/Yo5z3gH3KJQ84oNQecEh56gFHEB/3HnD8DVXyhZUAAAAAAAAAAAAAAAAAeJytVmlzE0cQndVhyzY+gg8SNoFZxnKMdlaYywgQxuxKFuAc8pXsQo5dS3bui0/8Bv2aXpFUkW/8tLweHdhgJ1VUKEr9pvftTPfrnl6T0JLEXliPpNx8Kaa2Nmlk50lIN2xajuJD2dkLKVNM/i6Igmi11L7tOCQiEoGqdYUlgtj3yNIk40OPMlq2Jb1qUm7pSXfZGg/qrfr209BRjt0JJTWboUPrkS2pwqgSRTLtkZI2LcPVX0la4ecrzHzVDCWC6CSSxpthDI/kZ+OMVhmtxnYcRZFNlhtFikQzPIgij7JaYp9cMUFA+aAZUl75NKJ8hB+RFXuU0wpxyXaa3/clP+kdzr8k4nqLsiUH/kB2ZAd7pyv5ItLaCuOmnWxHoYrwdH0nxCObk+qf7FFe02jgdkWmJ80IlspXkFj5CWX2D8lq4XzKlzwa1ZKDnAhaL3NiX/IOtB5HTIlrJsiC7o5OiKDul5yh2GP6uPjjvV0sFyEEyDiW9Y5KuBBGKWGzmiRtBDmIkrJFldR6R0yc8jot4i1hv07t6EtntEmoOzGerYeOrZyo5Hg0qdNMpk7tpObRlAZRSjoTPObXAZQf0SSvtrGaxMqjaWwzYySRUKCFc2kqiGUnljQF0Tya0Zu7YZpr16JFmjxQzz16T29uhZs7PaftwD9r/Gd1KqaDvTCdng7ISnyadrlJ0bp+eoZ/JvFD1gIqkS02w5TFQ7Z+B+XlY0uOwmsDbPee8yvoffZEyKSB+BvwHi/VKQVMhZhVUAvdtNa1LMvUalaLVGTquyFNK1/WaQJNOQ59Y1/GOP6vmRlLTAnf78Tp2RGXnrn2Jcg0h9xmXY/mdWqxXYDObM/pNMv2fZ3m2H6g0zzb8zodYWvrdJTthzotsP1Ip2NsL2hBk+47BHIRgVzABhKBsHUQCNtLCIStQiBsFxEI2yICYbuEQNh+jEDYLiMQtpe1rJp+KmkcOxPLAEWIA6M57shlbipXU8mlEq6LRqc25Clyq6SieFb9KwP94pE3rIG1QLpE1vyKSa58VJXjj65oedPEuQKOVX97c1yfEw9lv1j4U/C/2pqqpFeseWRyFXkj0JPjRNcmFY+u6fK5qkfX/4uKDmuBfgOlEAtFWZYNvpmQ8FGn01ANXOUQMxszD9f1umXNz+H8mxghC+h+/DcUGgvcg05ZSVntYK/V149lubcH5bAnWJJivszrW+GLjMxK+0VmKXs+8nnAFTAqlWGrDVyt4M17EvOQ6U3yTBC3FWWDpI3HmSCxgWMeMG++kyAkTF21gdopnLCBvGDMKdjvhENUb5TlcHuhfR6NlH9rV+zIGRVNEPht9kbY67NQ8lusgYQnv9TXQFUhTcW4qYBLI+WGavBhXK3bRjJOoK+o2A3LsooPH0fcd0qOZSD5SBGrR0c/rb1CndS5/coobt87/QiCQWli/va+meKglHe1kmVWbQNTtxqVU9eaw8WrDt3No+57x9knctY03XRP3PS+plW3g4O5WRDt2xyUpUwuqOvDDhuoy82l0OplXJLedg8wLDCg36EVG/9X93H4PFeqCqPjSL2dqB+jz2IM8g84f0f1BejnMUy5hpTne5cTn27cw9kyXcVdrJ/i38CsteZm6RpwQ9MNmIesWh26yg18pwY6PdLcjvQQ8LHuCvEAYBPAYvCJ7lrG8ymA8XzGHB/gc+YwaDKHwRZzGGwzZw1ghzkMdpnDYI85DL5gzjrAl8xhEDKHQcQcBk+YEwA8ZQ6Dr5jD4GvmMPiGOfcBvmUOg5g5DBLmMNjXdGsoc4sXdBeobVAV6MD0Exb3sDjUVBmyv+OFYX9vELN/MIipP2q6PaT+xAtD/dkgpv5iEFN/1XRnSP2NF4b6u0FM/cMgpj7TL8ZymcFfRr5LhQPKLjaf8/fE+wfCGkC2AAEAAf//AA94nI16C3AU17lmn9PP6enp6Znp6R6NRq3RPHqG0Wg0jOYhhBhkSRaKELIsy7pYxjLFFZgIBRPMqlgHWAIUxr4EXMSXS0jKsbLY8TqO1xY4OIkvzvqR2iLOXeIk2Ll2tlxJKoXzsO/muu4SFjX7n+4RKCSuBDSnz+Pv7tP/+f/vf5xDIYq6dp6epbuoKMWdrnehlmakelFAC6oyakU8FzNLxUogRcpkpVxoRKxGz3p/kEdSUPp/VzxBCeV/IDei0B53VNqNQlH0geR9w/qAEdwK4g8c4P0iIyD9Da8UZNOWrltplsLX3+miMpTwYtLH0xjeW2lFXqTzFT1Qm0E89gkzwA9+47dTn/7dN5b8+McWmYsu/uW5xJ6M//Sn8Sd/e//9aK42rcgnTAr+kXm9QI/TIiVQm2Fet0c5TOZVNGMy0grlZFDlvIjjNV1TeRmlYHYcD/+bEUwxZaZgqlCaxUoVVcxWlEOpUrG8EpUrtc42mHu5Av+Xo4LWiDQdvkYnD/MiaBoILx/ZOYLHdoyhiMBvFt2BNMd6hz08v6Yu7OIZZZcgKfX6bZzC9WkMK6RFr7CJF5DIbhZkPenQCmtCYZdA+3bxEvJGtGHWy/erDLNcdm3iRTSxfHR0ZnR0JxlVjGB9gZO54DBiOz3CYEQR+ftcUifLdRmszEkFb6TeiyTepq0LR1t4iVeHHVKvINikbE8ESNfYhBTFAf+2M630p4B/fqqe+hx1lvp3ytclv//qkwf/vq0uqLg5zDkM5VRgKFs0ZaSTGk26DFQo83/K4/hf5HHpBotXoL+BxUHVfiThMQqq8DiNlPazYykZ8c4j4RHwNLgZGvDItgLcrcPD7QeQCfkW32um7Hs/8VZ47+J70ceE8TOj6JvZ9izKdGRR7fqOwI5xUqCRYTzdbo7tCmocz3g2c6InoHczHm6YYROCh7+TFYCQdxNCqVfkuK5AiONpQog8Aa2b9bC3MyGf4OGAEm28gxMjuBexwQa35OazNOqlG0T+jjt4sYEuKojJCD5fRGdwD464oLtGnRFsaubPiCVRukG9IEW/bMjidGNDJoPvgmJ5JvPD+2AyckCvT3IS4+tmCm6us94jcHeCMDHMai/LClkppHmQwN9MKQqdYZvSvdShNIKe+oCEBet/DbkEr7xSxjhdn0TIXURpjKHtFVxDLpfiISOGqyghlNZRigx5FBdugzHnrhQZkoop5yYX3CTcuAkeev0mgaKvXQP9v4Rfo+qoCrWKEs/2dLZEg4huaU76iBTKmIhhK4LlTvlUra2pUA6UoMmlmmIcr4J8MXpboUqvRCCePpXjm2JmxVcsAyGApj/4j3dFEp31OFz15dYeD/olji6DUmKaZrir56E28j4T9UdDEnaHDdVg3zeKq4rJq+cTZVRM0uVk0Y2eVX3bB0KRcFg2B7b7VGtUEEU8Isssi2mJm7jlBRyRNYAEVQnTL4RGSvOzySIqJ/C9yWKRYmx8W4Ovgaaq8I0JytMlRhv0oFfAFNPSrFdSfLAtiIrxGI+4oNpWqKBySkfxEjEJKRt7tR8U9rf1o3sllrF+xHhYBrXSxiUrf4leo95z6R51ubZf5dv2t3WuwrC01lsMlCjHfPaS1foBOtkQvOeDdcHgfo3C1+ZhLvfSbipO5QFrW1L1LoK1paLJx6FIxYGjQSj0oKotB63VgLPlSokUYJliOVxFBYDMr2vyUU1e5VXRUVmDad5ozG3//qX/uZV78OWPv7MHdfTD6FEYAHLVC40jdv2IVvhPr+/Y8fpvSEExMKdX6Z/SiGqB9b+FWk3486nelR2l/BIM/AmYZcAQDiDbQJVCRStX4FpFoPCpkgYVHVRXpgEcmsyUQ6txUKsSdFdrNR1AzUwhxiy6SgBKBl9It9bHNtTVr22QFJrFKBxfutNsYppWjOV7s8EW62ujwW6u3CEEmUxB2ok7uxihvQOdYLo7EMd2FBj8cjKq1b/UEDeeK3aiZIpJJYVGJRpskiKmGGvprgv1qXXbt+5q9HPb0MmWdCjxoyVZ2USNS4xo0+XlscwSRDWHzCar1Uy3UhQNMvJH0IHdlI+KUW2gA/lUverFoAMwbwAzxxxzvIGiIJYmHwNBMVAZLB0sDQvQyEQTBIvLWcToIPV37o0du3AstvfO1e8j5n3r24q7b1LRlN48+Ac/cw9Zl61/tS4Pud1DSEAmEobcqOPALR09m48d29zTccuB7YcOoU8B6eStkoz9Yr5XeTMQ+PzJk58PmOrek/jxPaoz539mEiBLAtVAFWHOLTHdw5M5B4iFMXAZqTzB+prBqBCAhrUgnQTJUblIhuJO9xVAZZyumvhO1fpQW65anw0amYYPGvqD6Kj6dhD6GtSwAgoShJH+ht32QBCvNTLY7EpweetnBhAFSWd/w6WGDDIIYYPdqfjgvuVkyLB7bZ/jeRtzkiBvwoufKsdEogcqsX0pAjowwZJZLJdW4jJfqeIKuBVFW/Z1lawCCFkjbbsjBJXgc1Ia0ZEqUKUMRPunzmzJF/ruDNaDPiKMGJpGYLNl5tYhNHXm4pmpi8O9rCTUuxiWoREWhfrgnX2F/D9ti/rGT3XfOog8/aPoyTUHBl1LdZYRecQwiObgIQYb8ivpHT1DBwYHD7zXM5OSNbHJTbMA7FgQEcPqS10DdKG1eHCgOZPaSfwrzsYfP6yTl2qkWqnlVA91H/EP7h3s6iwvbY7XB9w08Q8AOm17D9BJ7Lj+V9oBX5MPZBBQtopQG3AhzvFskNAAYRwwOOUDJpKFX070lax+I3gKGjJEIQEASoqjN6pHRN6p8mK/JQkCRhewIFgPX6ln2Bc4Bv1WFMrFpJUHZC0RumdTrqw2p2WF1Dfhw89ar5BOdAspP6FuTWLf/EeSKooq3ngLixB7B7xx/qNcb3cOB+xJ3BOMIEO9RyR8I3bpeXoWvw7y7QOuiWdbG71gPEC+WZCTHCobiFTMKjg4AWJ3WHCewOaADDURda3iEh2PAR1gqIE5jYyhjZmODM6Vc+gPNXkfUKX5b/MejLwa9vvm34AFFZQN270qDnmOumROxALCj8sa32Dfx5iNCxXcZf3Co+LemFyvRTRN5kJKBKM3VUNDnKRIGq1RCL7hPH4K/x/qNogzqg0kziBOIOBoWdODzoJWAEZMYkkBSVNEMQFVdCLOYA9iPGdWSvaCl4nPVS5oPKCNRlazAeA1ZeKBZLmc1IJhDeUbjyqyK9i7oRd5fKJ6tCmL/Fqo3iyXzWAwHEK56NGA5JP71vehoKh4jzbmVTWEjvWu78cen+R/tDHn1+rCZrFoaho8Ltf4qCKLau9kFyaPu7spp9arITIcrguqKNd0NxmmIIi49gv6Cv5XapltPf6e2kR5u6RNk+uHV3WvWJ6mWfhosBHgd5pEQWU6lQODB24jOJKpIqh5ua1STBXB7hYawIssg2sc1LwoCJ/IahWCBiogQMoEsxhPan5NBaaViLTblXKAMIduo+n3jOEJEUcxM1bNKLn+yfZiV2ehCx+WGBFzzFewkOPExzkBC4zwvDS2y3oqEmNi4ezTkU5DSHRiAVtVcWyYGeMKz+cxN8aIT2Fhvbjv0X5UGHm5G5sc0/lSuzk4mhO4vo7RroIyGcIcLjOYiWxl4LGbNXhRBn7Gpv73OemiFMnu00Jr+zg/notYH17mmKdOYYbxY02wXkYCkXHWxoZL17FhJcgJ8G51z/I2BxeAd5WamDiaXND+rH0TLtzcDtzUBp3fQnQSiouLq/w0L9rF23+RILdQEbtOkxopHrLO2drdDeW/zF8idRyCEmlXz5MGXYZyIcZ8mHmBLlBLqY0kxlyW1wDvS3YQA9hUJDDuRBTQAm1diDh4jvhABgbfI6g3oRrFonEZ6w5BEPynHAbRSoE6Oc6qqaZvbQgm06gxILfILMNWp5Y1j1ZjNMPILV5fNG027JlU/Cq6egz/D4nFTGHturEiAyYjIXldgGoxw1fo81qcoEl659J6VqBdsie5lPeG3e7AQKo+GUz5O5r9qebKVBVwaCRTqQ9kOvxLAsn61EDAm0v7fZ1gEX8cU6LxlrXtuLiuOR5VYnm5yScCDkY7FZca4h9y82YsI9WZ/lhWFBVO9MYU4Blz7cq1k/S/02GqGfyyMWqC+GV3r+1fWVkaFohfJiM1Tjjk6BX4qYR1pFIp6AUyQKJs8LaAJ2DfSQWZwO+kxgNsEM8W5kyCRo3QAqn9EA1VdPuRXxY47PMyitTn9uAow2UM6JBN7WDxwbCk7owOZ2OMIA7KTKbjMjrpV/OaYm0QhH4JF5RoYXN7dqS3NyQDL/dKEiPFZMbsMLk0ZvxXn7YG/0P15zR0RYhoXg8j+wclCYcYLpLnZEMZ57BQDLV35DDomcDkQwUroSkZ2Y/eEaSq8L3N1bVhKTs01Bfq6Nfa2zk/B5FhIZKuSh2ge/O9l8f+oCo5fy2vcTfoVgKiGuHFlWmFsX2MIHEy7Jj6ug5B8A2WtHA9hg7UdAzkk8DOQiheKZFY2w6vNXp14ldfuv1EZ7+bYP8VWcOuNenJysC+FKezEuiJrCpO78i21U7n/byEEr/+0u0nyU0hxNLo+Heqy/rd9u1axL0mmR6oiu0eCb1U61jjtDmmRmjrEtiU1+gP8AtUCLQJYogGH4khSJqGbyIFAVoSjxMLQUIwkgYgn0rCMuKwNhEzAg4UfUkU5ilR4Pg5lj3NekWaggnatXlSA/2lRBkG/3kLRGnkx82xCjvHAgyIKC0ApcRtgT9BhD/od+b2R6YOeO6nlsDcomGZxU5uzbbKOUSCRBIYpoIQPHoB1Ss1WLLnytT5vxsaM+dnAxHkezk0lsT3BozvWfnS9vjLGCE00Ha6bQC1wm+lP/DzSFqOqaT87+PFJT+neRbjUNvAQJt/wOHT1Wt76HfoAcoD2Cq82KiCIQc4LdvowVVI4gRpFKnbTqStC9SMOTEiJcaOjDJcMURPh61TM+aYIPiNaEwRutIz6PVnYuLwRGLUL4UZrvMZ/HTY6t1hdnNyzIiC7o6aO9CYHXN+B++lMZWlSlQV5A90t2dlR7mtNawwhCEkZIK/66GFzzHugGnBMvF3nSZLskTEOQg4F1VDCxW8d4DLDnXkMpliiOnrm+zr7ydFekNHsWC358+k2zOZ9nRvhJRp9KxzxY8MGx1jxZAsK9F8whgu9PUVhmLowdggqQ3G3jQMv9aZi9rNSDrdkU7P95GyI43XOteFeGkcfDPHbolnmxP1AYmhF+TQ8WIqRPygnaq19VqbX9y+S1WufmTHpbTPC8HsJ7cmV9lVu0RKvx352iWSF0agYfuOML9vMxr+DkT8CfBLxLPFVDQkktgoSXJpoCAQ5BMlAMnUNRXRJO2bQxUIVkm+zAUa42hRylElAFAVrSVpP+sqx4GfrzARjnv3XQ71XsAyFxM4dIGW+DgvoGmgkLkIy777LstGoArUt0ITMXadgyGFee9dTsZD8608mBRaEvAFeICIZeuIddW56d334F3wCmgrjv38CvgJUSoNkZ7wYltLiOSOk0RrSsSCktwBCZEIYKVMkBwv0oJExEgOIdkWjIN5jJfaSm14+szV9xO5ib6cQHwVhhEYbt2v1gEIY1mWsZjrR73Hj0/C396ujqnzshTr69SKeSmcV1QwkGZ5x47yWiEWMRhJypW1zr4PCe1x4Dm6ZgHe3gW6nwdfd0kT8XVrMGqjqIwN2onRCId5koDM4Srt4KktBlf0gA/QsmNqMM+kRzdUu2eWMD5ukMVc53P3/t0T2/qZrp0n7h45saJfacGvAUS2KGvW5AandkwN5jpKHGLXMDI3MIx6dzz+3OM7egEx/QFbFqC4hL9FaTAzkt+6pdTSpIogCwD/hF9F22Ryup2CDcZjeqm4EoMw1BQSpKQBBppyCJVThJJ06sT9JjkbEBP/N7pxPFlqjC7tlzzb88z2ule0E8uSObRu7/jQimMhHJ//payin/XmGuNLl8RvedpfP1PY6p06GOaGU+vaW5fgwO5tbqGirzha93S92BfRx9oGp6cHp4pGn1j/dJLBIXTX1O4Abl5SHVk6LGoHo/josvqSADy/eu1N+hD+AxUGnocEZLvaJAKUEZRxEgGWSEGkXad3KqI2imXlzTdfjcijmqigR5WsgoYVzTovyxIqW+dVFZU1BR1TlAU9+ip9lDZAj9JUJ/BuWS4ZVlhbz+M2dq1AIFeA4RWITHwoGPfZgOYjwgYBu8YH2VpfymcTQl/Qh7sqsWysvT0WDMUQOliJ5qPt7dFcAs9/qRJtjSJo5KMfbfu6HovpX9+G/m/IQFHdcqHbtlki6UP/se3pkIFj2tPb7rf+s93z0P0oZHdZl2x9gckfxd8EJHaBvrh4TBE7lCw1BVESAmf0Y2slvdvqRS9f3Y+2vvWZz1in37JWo2/VfNVX6Rj+DUSdYbg3pEqMrWsgHa125kQpR4kIJBfAmWaMUC4RPTcwsvfcGUR9L2eFDj2/B/6GYpFcNHoucw5R3zq3d+3AM2sP7Zk7uAd0Bd4xBfo8QvXCurX5avtPDjtJ4GM3CAKBbSzZjF5k1NtKMAm7QQAMljvYdt2ku4+4DfVtQEX3UdEQj4Jv0f+2akDvogF3xL1oAE3I7r+FbvGTHft6+dq36N/RAsVRceCT5qFtHrNxIneg4jWbTzLHK1EbTzYpmoh7lWpDHyPm1Lmn8Dt+PxdhEtrVC1qCiYiZxzc8MycwaZRNC8zcMxto4eNrwCprTsz6T6rhsHoyH5reJ2zdKuyjbB7aen2KaiCyzxAeFmx2lNpSPEAe8KjcVtBNO0mn6WV8efLw4clzU88/t/nywPTUoMzhr2wdPxyKoA8PvX7o3K9/fW7zsc1YCk+f2DzCkO+7cm0bHabHqDqqBb4v0xCSsBPKcikvJmBBPq1iAy7xoss5QAnZRjf4YXDFaU5dv6m7a6ZvsxwdlFSsCCrCIdl/ZPvU3LThH500BIFmscb3KHII/EU8ueP7fkl8VXoqwsiMIm8wwmhfoW/qa6q67+XsVFXNSppL4VV2qSQoWKYoCCKvHaNP0Bmww/VUCuKEbmqIuof6NBXs8m+cuPO2NbdWO/NpsymkglcNMUOMNwHCNB3CKp3jTd4uwf2AHmSPAcOgJ2CSKIpQQlQOYzrxjDmeJCogHjcXBpATgxHvqbwClWlNr20Tpcrva2o+Wx5Y18kx1bKyVe1UuwtmTkDDEa2jfXRo59bBsfDUE/sY2ewMG3JoIq3MmEpHIbeTw8fPbR/vlXohFtCOoPXHma7uUFd+UpwMExs1Nt1R3ooui8XBgayZVRROybczG2Lh7TNT+7aurxZCKC9nIkZVToStYmitKoYi2ZwqTB+Qj8s5Rj42li+IicH1zycGHt2H5Q3orUNvalk/184cm1E1MTP/O1Hwx4a7MtITTg7q6rVH6ZN0FjgdAI9WPGuososleyOoDD4uA2ihx7ggR9I1pSIN5o0kI0E1SdSgAzdBStD3zyGFs/7DOmB9yCHpD5kcjkXN3BljuujPh2QxE84bM+1KUZOkRJjOYOuyQymiXch/PB+ORLPRjvnnisVQwnxifUcuHIud2EzBihMMmaXvAJTmKZJBCFA6SEEjaGMbSMJyO5vwABXviq6/Y3VvtbOjvVxsTceiRiQc0lS/Ikvg+zOY8rY06wAp5JdadEU3Xenr+xMqST+V0SL6Sm0MbKI9VqmlIJ2cA/H02hzgcmo6gbhVs7NvzM29sVCiL58+fXFuDj07O3vx9OnXJS4BAYdTftnuujg76xeFOMkrQPF2NnL1w4ZMpqG/mEwkixfLiXiyiFY1ZG6bnZ1NzM3NJWbnX5+9QorEHMrP2g+bJVGNZcLY7OyWRV3Z+RJ5FP5BQ6ZsbzuVa5fMdZw5hU9QQcAZn40ztbz6Agg7SEyf8lpRsKfWb7zeQbieQluhHPRiDULjqBc8MtJUlCfR/Qpcb5YvDdZLPFupv1m+wPUvlU2SN+RVTQ8QHYzHQOsI6Nf2eXkCRl57y9jphWndJHUvGyY2DRyBMvJ0eGqkK93LbFWUIUlRBEkTxaCbk5lphtMiuZtFcN4wI4aZgB9G/bHs0GA4s5lhwpGQqob8miR4ecHnEtQOgZEUVfHHajb0j/QW/BpgUhdgZ2dW5okNVTViFOzkfi3sC+p2ly1YPnu7y8AOe4kpdCL0CpEbskeBNmKEkSDM9UxM9MwJIkSEdtPe7TvDYQ5jzm39CCJyEj/LVyCERq3uHPazsotBEz3oUM+EKLhdnAf89HLC2gk3MlhAWdltXRBV76wmX4RAYpaE7dDh2Olv0YdoP6wOrL1E1h6QXsY5zPGBOA3OrEGX6SlZEdYfGq129M4Mj0++tG58V3977/jTeDMnS48cN8L5aLrbegJfiHWnY70DBRH8tj9e+xx9mV5LJeG5IEDAGy6RMrGTg9HBP4bFxLqWIBlTM8GXyoyuQdxK/90/WVOPHZU/L/jESFedJsic+GnuvgdR+/RwS77H+tVXz6JVQ8UldyiuL8iH/xEdeFz0cz5eD3VGJHHG+t/Tn22Ymfho5viDBbT8kW/+F+vqlLbg503hPPgj9eDnbQA5XFMwIWCinT0Z1UAk2WyvRhUVne0kWDuW5JjAEJRJcjZQrGKQu1IFNENXG2nN1OKqjMFSmlwJkKGKS8UC2TUD97oV28cYcH79hg3rn33nWXJ57ifPWYafEdbtOrBWNtZP7XxUiEh1Devw5MeTzHhLwOeTDAmLnCB5vTg2LuzoLXY/yK1r9ntYiWfw1uzmic51m3IzsaGh2Exu07rOic3ZmejQUJSTBa5YENWyNeA3EnIoss4olMuF6HhzIBjEedHvl0WvouAYGo92M2Y+ZhixvMl0G+uWBGRBlbQFeX4CYpsc1QPyXF0q2Wd3gjdgDmJdnfg8xPqZ8aaaODcVynaQQeyqFkA33LgF0FBp/0SPlScCjS7EDRfN13M8pj2SvdNSTqALySKb4HiacX/eWuZJyP8myyvkhPxF9GloVD1o9QvOvd0TSGYCEFwiurZNU058QWDjHGYQa3XI8r/Z9B5yoweeUPumQC33LLwYCQi2/7Zo6vBdpu77k2/U8GcXzay468bku9fj166/mQzedX1kAq2nFu19J+y8VS5t730nIYKqlEkYFfOCqEPBqY0g/lBohZUQnBdIjnjx5vfnxY0bRbEN3NuNG92GWHC74eouiAZcobNNfGfRHvj7MhltcC9QQfVP219YtBVu6/tH+Cf4IMyRO60RrE/WXHH+poxAI6rcSCDgnziIf8pBeLgqN9pe76lT3m0aqTz5pPfPCb05QmC/+4/2PmEc3h121eLnFPH+CWJWSrW9IRsO7R1BYkZpf1S7FNW2aFF0CQQQGoa+BSqXoOMs6f1Ag97gB9d7Cbnjvy+sR5CKkfxYnc/Oj968FBo5D6EvXoAfAtsi0i/3QFEQxfPAc0DZw4sPHrykkGUBCliWRqAAAnH1IkaTb/0u/Qy8OwXfGsfwrT7bWedtE0BCLa0SsK2e6Zws4hdM7rHNt3fL4CRLEr2MYfhXec6zRhKZkWU99z2GVlr/rW4gbD3Thf33HWu9IilIkZ6VsAu5XbIino0eu2+i3/qMYaAv9tv7i8R/8gC/s9StgHkrWjOpsEAv4ntqMd9tR+Y633WAQc5AVYTs4AzUHtjDGFgnuQG8XOR3E+dFQrttN2O3vbFKGv2PvXmcOfKTwyiW6VRfmfzc8LHNXbhz+sipw9va6VtfCaLHnLtI/tW5azdxeXaLdfcdw8fPn+AOWycbMsFXbq1OPfq1I1s7mO5Nx9d8bvKV4MKeqfNNXjs7LJ5dUq8F3PTCN9XybiQB+1fnb52zZ466/9Y525P969PknLMWsPaO31pPNYOv6uuSK/l0o644PikHitdUakrBL0l80JuShoFFH1OptflFH4eXo03WyYu4c/51tPHtt5GhyVfXO3nEJ+zLJ7a6+i+uenvV/KXaSRmvnV2sHbJx8o618zTgYFC2HX+BDoGfoxL/gLfzLzzy1c7ZAWgik0yI9rp81u81nveKR0Xr9/5ACJ/X8Td1xfq9tUEXaQipvWA7AkqLk0NfOI9VBr0sxBkbl6+frNLIURwMbra91wPYyBH/T8YpstkNltVJBNqnry7VDlLVNZ4fjJq99TjSnW6892w0VF7yVrEkxaJuLBkJd+mL6/3xTpRrpsuJIvq+dauD4d+NBB+uhMIRFI7ovbu0V7LDDcfiKZcflloVUhu7ZX0k0dxRdHzk2j7mncCHbho5eeCFbUoIEZpsnan12ctY6yOOxaI+sr43FM65BVQRPoa30Q6gbo5gWMn6ZcmGuzm7JE3SXWtlwGH5k2HU0JBF0HPyNKGCAm3ZYuif0ADSP2lnjC1GzUcC3XKD5WQhvhLP5mSGxhTJhTX5XKjJyXZe/+ymWurN2WMqXd/lIJtHYDR85ChGBQ1aX4bfGbzf1vYtgmgZwoLGkyZ692FWEdlHoOsQEP4Qfg9vuUGBfmFT7SZbt7sfYd0y97CVFCmGyBDTap8NcjL0ni4xm2jUvSJHM45TZxIXDgWbShUdJWtGn5ztS9WM/sIxvop9bKI6XoU/3Hn1w7lxcAaNq/ttdKBtoLodxGy/c15vd7KIfS1V3D3W1WVZV7acvgs1zIrC/Li9OfwULwXmx53DeU+Ry/XzxwFagnmmQd7NmIztWIGrHeNg9QLJpmAIDViaeKHkwAftH+mxQj0jjOQ3zI4m1swODgzkY3ysPR1RRe7Mnuf3MjtfmunuGRrqMdq7y+2xMA4ZIfjTzGJHtRNdXLsHaPAue11fA9ntgnirQn0W1vUzw0t05+wXx6dydOr6IhZuJOliHDiwbKpcMZjKQvbNd2NUxvbedE0tF26vYhKaVdnrd6AdsWZVMMI5zVnQf8D/Yu+/5Q0jnPLkQulwwtPULClGOBs6au/F2cNH67PRsOSvU0IJ/xK93G06d9dnEqriC0ekRCJX7ko7N+C+4sYlihkG15lIyvwbtX07jGkkippmqsXJOiOjqtjZxEO/qxEosURdbEWy0BtsDYc0ZN/tjybq4iuq4a58NqqghV2/mn+M94O88bYvGZJszAo0leyzzmxNnEC0HB2vafNp1EAOB6MLUW3+A1tRfWBpsB+qT04vH8XDK2atc7b7grpBEac3PfbYpmmjFq98hz5Bf4qKUMuocVizoeqSppC9/2T7L7xOknBkMxQgES04k+UF56bm16RymABOgdCW0fWcayW12E/XwCA68X3Wu0PJKRotIRyFyEtmtIDygLdFGfFaO70PgEc3oig7vDmfTouMobtkmdb96OP8SO6h3AO5pUvzD7XuaG0daT3Yur211vqGDo/0a7TCeWHCjMhovpx3h9d7u4K+qikPKN4RbxYeCU+UZRdwgBFp3Wcd6cnd3pp/oPWh/NKl8JCDuZFc647cIadl82bGjlUEsEo54E1jnd/NEXmu2OcCUaGcXPhSaCWdU/2mncK3j+UHyRluWKOLqqFhf0xBU9b+YIe2PBhEu7RRdEKq33cbOakY7atzuf7rNM6sbvKKDRA0+6OqesXar6or1OUa2lUZ/bmWXD2Bjl14FKsK5+cndnfiuhZVBD9lwfdUqSZ7js3JxpCy4KfcON6yYAXAWZFpA/zPxZEA+lgU5hwgJGfXLo088tThYTx66JmDY59b5I3i2BUCj0DxOhC/eccjIFhHvnYEKB+5Y5FP6pw3u4tWKBcgQRzmFNXBsbRxoJhCEOdWMWtvZCFeTUJkm6OJv4Tfy1t3D45Xtw0X5t9CT65ed8fhYYTf693+xLNf29aHu3c8/vxXZrrQ+vEBa12hMLz90+jJwvCjw3ffvfaJ7TA885UzJ3dWuYHpp6j/Dw7kfPMAAAB4nGNgZGBgAGK5WxOF4/ltvjJwM78AijBcsj3uBqHniv3/8T+LZSNzBJDLwcAEEgUAUnYMjAAAAHicY2BkYGAO+p/FEMWykYHh/zMgCRRBAS4AhjgFrgAAeJxjfsHAwLwAiiMZGFj0gfQLCBuML0P4cHFBiFqmZUD6JVRuI5IemNpDQDUNWMwE0S1IdopCxWCYB4hnQPECqBiM3QLhMxlA+YJQMwWR2CuRzIa5F2b2AqhboGJMTah+B2EAhNsmqwAAAAAAADoAhgEmAoYC9gM8A4YECARiBMAFNgXSBjQGpgdEB7gIUgjyCV4JrAnyCjAKoArwC1gLqgv2DGQMlAzwDQ4NQA2iDeIOEg5kDxQPYhAWEEQQsBEUEUARiBIYEoISuhMME0oTghPAFAIUbBS+FSQVThWoFhoWcBbGFwYXqBfgGG4YwBkKGUsAAAABAAAARAD0AA8AAAAAAAIAAAAQAHMAAAA0C3AAAAAAeJx1kc1Kw0AURr9pa9UWVBTceldSEdMf6EYQCpW60U2RbiWNaZKSZspkWuhr+A4+jC/hs/g1nYq0mJDMuWfu3LmZADjHNxQ2V5fPhhWOGG24hEM8OC7TPzqukJ8dH6COV8dV+jfHNdwiclzHBT5YQVWOGU3x6VjhTJ06LuFEXTku0985rpAfHB/gUr04rtIHjmsYqdxxHdfqq6/nK5NEsZVG/0Y6rXZXxivRVEnmp+IvbKxNLj2Z6MyGaaq9QM+2PAyjReqbbbgdR6HJE51J22tt1VOYhca34fu6er6MOtZOZGL0TAYuQ+ZGT8PAerG18/tm8+9+6ENjjhUMEh5VDAtBg/aGYwcttPkjBGNmCDM3WQky+EhpfCy4Ii5mcsY9PhNGGW3IjJTsIeB7tueHpIjrU1Yxe7O78Yi03iMpvLAvj93tZj2RsiLTL+z7b+85ltytQ2u5at2lKboSDHZqCM9jPTelCei94lQs7T2avP/5vh/gZIRNAHicbVHXktswDNTaVHHJpffeq5JcyqXnUu5HaAoqI5hUWOLYXx/JnstTMMPFABxggUU0inY2jf5vR1GEEcYQiJEgRYYJpphhjhPYw0mcwmmcwVmcw3lcwEVcwmVcwVVcw3XcwE3cwm3cwV3cw308wEM8wmM8wVM8Q47neIGX2McrvMYbvMUB3uE9PuAjPuEzvuArDvEN3/EDP3EknJd2OkBOy86vx8pUaf9yyV4sZcNJR1o1PO84uFw1VjEVY+l4TGsSXlZOqFr62Fvp6mQhXUs+6cJmw5Sx1FWQFSWuqbTkODiyLvbGsJtIa82qb7jK6E/fQFc0Kw0XZHPTE8YLG1w9K9ms8oWVWtViSToIZQrKhja5LIqRWsWVNaETtVnShH4Fyc2GbDKMne8njqQdCs1vSkLHRhbzncsVm1CMW1qnmvzK2Hav0aU53i7fz5Rk0oW0I9POa+Lu+CthU5ngRcmyil3X6INJbYKtWDoXq5pUO9viTss91U9O/K94F4pByalpj9M9gbS+X9O0pNONMcu80dnW91Sx7yV1SdmwJ5ttN+svk7rG01J2QlnTpV2jfLAkBmFSV4eyZBJsVCu40W2ysv0F61gNmXgxYBT9Ba0XvBgAAHicY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZWJ02MjBoQWgOFHonAwMDJzKLmcFlowpjR2DEBoeOiI3MKS4b1UC8XRwNDIwsDh3JIREgJZFAsJGBR2sH4//WDSy9G5kYXAAH0yK4AAAA') format('woff'), + url('data:application/octet-stream;base64,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JUmwAiVhuQgACABjYyMgWGIbIVljuAQAYiCwAFBYsEBgWWawAWNgIy4jICA8ijgjIVktsDossAAWILAIQyAuRyNHI2EgYLAgYGawAmIgsABQWLBAYFlmsAFjIyAgPIo4LbA7LCMgLkawAiVGUlggPFkusSsBFCstsDwsIyAuRrACJUZQWCA8WS6xKwEUKy2wPSwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xKwEUKy2wPiywNSsjIC5GsAIlRlJYIDxZLrErARQrLbA/LLA2K4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrErARQrsARDLrArKy2wQCywABawBCWwBCYgLkcjRyNhsAlDKyMgPCAuIzixKwEUKy2wQSyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAJQysgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2GwAiVGYTgjIDwjOBshICBGI0ewASsjYTghWbErARQrLbBCLLA1Ky6xKwEUKy2wQyywNishIyAgPLAEI0IjOLErARQrsARDLrArKy2wRCywABUgR7AAI0KyAAEBFRQTLrAxKi2wRSywABUgR7AAI0KyAAEBFRQTLrAxKi2wRiyxAAEUE7AyKi2wRyywNCotsEgssAAWRSMgLiBGiiNhOLErARQrLbBJLLAII0KwSCstsEossgAAQSstsEsssgABQSstsEwssgEAQSstsE0ssgEBQSstsE4ssgAAQistsE8ssgABQistsFAssgEAQistsFEssgEBQistsFIssgAAPistsFMssgABPistsFQssgEAPistsFUssgEBPistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKxAAAqsQAFQrEACCqxAAVCsQAIKrEABUK5AAAACSqxAAVCuQAAAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbEADCq4Af+FsASNsQIARAA=') format('truetype'); } /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ @@ -19,7 +19,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../font/fontello.svg?76878460#fontello') format('svg'); + src: url('../font/fontello.svg?37675340#fontello') format('svg'); } } */ @@ -105,6 +105,7 @@ .icon-cancel:before { content: '\e822'; } /* 'î ¢' */ .icon-plus:before { content: '\e823'; } /* 'î £' */ .icon-ok-circled:before { content: '\e824'; } /* 'î ¤' */ +.icon-heart-broken:before { content: '\e825'; } /* 'î ¥' */ .icon-zoom-in:before { content: '\e827'; } /* 'î §' */ .icon-zoom-out:before { content: '\e828'; } /* 'î ¨' */ .icon-tasks:before { content: '\f0ae'; } /* 'ï‚®' */ diff --git a/admin/themes/default/fontello/css/fontello-ie7-codes.css b/admin/themes/default/fontello/css/fontello-ie7-codes.css index 49cd55343..708cfdf4a 100644 --- a/admin/themes/default/fontello/css/fontello-ie7-codes.css +++ b/admin/themes/default/fontello/css/fontello-ie7-codes.css @@ -50,6 +50,7 @@ .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-ok-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-heart-broken { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-zoom-in { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-zoom-out { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-tasks { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/admin/themes/default/fontello/css/fontello-ie7.css b/admin/themes/default/fontello/css/fontello-ie7.css index 9eec9e6d1..c1e1ec524 100644 --- a/admin/themes/default/fontello/css/fontello-ie7.css +++ b/admin/themes/default/fontello/css/fontello-ie7.css @@ -61,6 +61,7 @@ .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-ok-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-heart-broken { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-zoom-in { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-zoom-out { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-tasks { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } diff --git a/admin/themes/default/fontello/css/fontello.css b/admin/themes/default/fontello/css/fontello.css index 9b3319d7c..40777f186 100644 --- a/admin/themes/default/fontello/css/fontello.css +++ b/admin/themes/default/fontello/css/fontello.css @@ -2,11 +2,11 @@ @font-face { font-family: 'fontello'; - src: url('../font/fontello.eot?80487531'); - src: url('../font/fontello.eot?80487531#iefix') format('embedded-opentype'), - url('../font/fontello.woff?80487531') format('woff'), - url('../font/fontello.ttf?80487531') format('truetype'), - url('../font/fontello.svg?80487531#fontello') format('svg'); + src: url('../font/fontello.eot?38260160'); + src: url('../font/fontello.eot?38260160#iefix') format('embedded-opentype'), + url('../font/fontello.woff?38260160') format('woff'), + url('../font/fontello.ttf?38260160') format('truetype'), + url('../font/fontello.svg?38260160#fontello') format('svg'); font-weight: normal; font-style: normal; } @@ -16,7 +16,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../font/fontello.svg?80487531#fontello') format('svg'); + src: url('../font/fontello.svg?38260160#fontello') format('svg'); } } */ @@ -37,7 +37,7 @@ /* For safety - reset parent styles, that can break glyph codes*/ font-variant: normal; text-transform: none; - + /* fix buttons height, for twitter bootstrap */ line-height: 1em; @@ -48,6 +48,10 @@ /* you can be more comfortable with increased icons size */ /* font-size: 120%; */ + /* Font smoothing. That was taken from TWBS */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + /* Uncomment for 3D effect */ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ } @@ -103,6 +107,7 @@ .icon-cancel:before { content: '\e822'; } /* 'î ¢' */ .icon-plus:before { content: '\e823'; } /* 'î £' */ .icon-ok-circled:before { content: '\e824'; } /* 'î ¤' */ +.icon-heart-broken:before { content: '\e825'; } /* 'î ¥' */ .icon-zoom-in:before { content: '\e827'; } /* 'î §' */ .icon-zoom-out:before { content: '\e828'; } /* 'î ¨' */ .icon-tasks:before { content: '\f0ae'; } /* 'ï‚®' */ diff --git a/admin/themes/default/fontello/demo.html b/admin/themes/default/fontello/demo.html index eeb1903f4..c7bd65f9e 100644 --- a/admin/themes/default/fontello/demo.html +++ b/admin/themes/default/fontello/demo.html @@ -227,8 +227,54 @@ body { .i-code { display: none; } -</style> - <link rel="stylesheet" href="css/fontello.css"> +@font-face { + font-family: 'fontello'; + src: url('./font/fontello.eot?58887028'); + src: url('./font/fontello.eot?58887028#iefix') format('embedded-opentype'), + url('./font/fontello.woff?58887028') format('woff'), + url('./font/fontello.ttf?58887028') format('truetype'), + url('./font/fontello.svg?58887028#fontello') format('svg'); + font-weight: normal; + font-style: normal; + } + + + .demo-icon + { + font-family: "fontello"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* You can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Font smoothing. That was taken from TWBS */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ + } + </style> <link rel="stylesheet" href="css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/fontello-ie7.css"><![endif]--> <script> function toggleCodes(on) { @@ -255,104 +301,105 @@ body { </div> <div id="icons" class="container"> <div class="row"> - <div title="Code: 0x2605" class="the-icons span3"><i class="icon-star"></i> <span class="i-name">icon-star</span><span class="i-code">0x2605</span></div> - <div title="Code: 0x2606" class="the-icons span3"><i class="icon-star-empty"></i> <span class="i-name">icon-star-empty</span><span class="i-code">0x2606</span></div> - <div title="Code: 0x2699" class="the-icons span3"><i class="icon-cog"></i> <span class="i-name">icon-cog</span><span class="i-code">0x2699</span></div> - <div title="Code: 0x26ef" class="the-icons span3"><i class="icon-cog-alt"></i> <span class="i-name">icon-cog-alt</span><span class="i-code">0x26ef</span></div> + <div title="Code: 0x2605" class="the-icons span3"><i class="demo-icon icon-star">★</i> <span class="i-name">icon-star</span><span class="i-code">0x2605</span></div> + <div title="Code: 0x2606" class="the-icons span3"><i class="demo-icon icon-star-empty">☆</i> <span class="i-name">icon-star-empty</span><span class="i-code">0x2606</span></div> + <div title="Code: 0x2699" class="the-icons span3"><i class="demo-icon icon-cog">⚙</i> <span class="i-name">icon-cog</span><span class="i-code">0x2699</span></div> + <div title="Code: 0x26ef" class="the-icons span3"><i class="demo-icon icon-cog-alt">⛯</i> <span class="i-name">icon-cog-alt</span><span class="i-code">0x26ef</span></div> </div> <div class="row"> - <div title="Code: 0x2709" class="the-icons span3"><i class="icon-mail"></i> <span class="i-name">icon-mail</span><span class="i-code">0x2709</span></div> - <div title="Code: 0x270e" class="the-icons span3"><i class="icon-pencil"></i> <span class="i-name">icon-pencil</span><span class="i-code">0x270e</span></div> - <div title="Code: 0x2795" class="the-icons span3"><i class="icon-plus-circled"></i> <span class="i-name">icon-plus-circled</span><span class="i-code">0x2795</span></div> - <div title="Code: 0xe0ad" class="the-icons span3"><i class="icon-asl"></i> <span class="i-name">icon-asl</span><span class="i-code">0xe0ad</span></div> + <div title="Code: 0x2709" class="the-icons span3"><i class="demo-icon icon-mail">✉</i> <span class="i-name">icon-mail</span><span class="i-code">0x2709</span></div> + <div title="Code: 0x270e" class="the-icons span3"><i class="demo-icon icon-pencil">✎</i> <span class="i-name">icon-pencil</span><span class="i-code">0x270e</span></div> + <div title="Code: 0x2795" class="the-icons span3"><i class="demo-icon icon-plus-circled">➕</i> <span class="i-name">icon-plus-circled</span><span class="i-code">0x2795</span></div> + <div title="Code: 0xe0ad" class="the-icons span3"><i class="demo-icon icon-asl"></i> <span class="i-name">icon-asl</span><span class="i-code">0xe0ad</span></div> </div> <div class="row"> - <div title="Code: 0xe70a" class="the-icons span3"><i class="icon-eye"></i> <span class="i-name">icon-eye</span><span class="i-code">0xe70a</span></div> - <div title="Code: 0xe70d" class="the-icons span3"><i class="icon-tags"></i> <span class="i-name">icon-tags</span><span class="i-code">0xe70d</span></div> - <div title="Code: 0xe720" class="the-icons span3"><i class="icon-chat"></i> <span class="i-name">icon-chat</span><span class="i-code">0xe720</span></div> - <div title="Code: 0xe729" class="the-icons span3"><i class="icon-trash"></i> <span class="i-name">icon-trash</span><span class="i-code">0xe729</span></div> + <div title="Code: 0xe70a" class="the-icons span3"><i class="demo-icon icon-eye"></i> <span class="i-name">icon-eye</span><span class="i-code">0xe70a</span></div> + <div title="Code: 0xe70d" class="the-icons span3"><i class="demo-icon icon-tags"></i> <span class="i-name">icon-tags</span><span class="i-code">0xe70d</span></div> + <div title="Code: 0xe720" class="the-icons span3"><i class="demo-icon icon-chat"></i> <span class="i-name">icon-chat</span><span class="i-code">0xe720</span></div> + <div title="Code: 0xe729" class="the-icons span3"><i class="demo-icon icon-trash"></i> <span class="i-name">icon-trash</span><span class="i-code">0xe729</span></div> </div> <div class="row"> - <div title="Code: 0xe73d" class="the-icons span3"><i class="icon-basket"></i> <span class="i-name">icon-basket</span><span class="i-code">0xe73d</span></div> - <div title="Code: 0xe7b6" class="the-icons span3"><i class="icon-puzzle"></i> <span class="i-name">icon-puzzle</span><span class="i-code">0xe7b6</span></div> - <div title="Code: 0xe800" class="the-icons span3"><i class="icon-language"></i> <span class="i-name">icon-language</span><span class="i-code">0xe800</span></div> - <div title="Code: 0xe801" class="the-icons span3"><i class="icon-signal"></i> <span class="i-name">icon-signal</span><span class="i-code">0xe801</span></div> + <div title="Code: 0xe73d" class="the-icons span3"><i class="demo-icon icon-basket"></i> <span class="i-name">icon-basket</span><span class="i-code">0xe73d</span></div> + <div title="Code: 0xe7b6" class="the-icons span3"><i class="demo-icon icon-puzzle"></i> <span class="i-name">icon-puzzle</span><span class="i-code">0xe7b6</span></div> + <div title="Code: 0xe800" class="the-icons span3"><i class="demo-icon icon-language"></i> <span class="i-name">icon-language</span><span class="i-code">0xe800</span></div> + <div title="Code: 0xe801" class="the-icons span3"><i class="demo-icon icon-signal"></i> <span class="i-name">icon-signal</span><span class="i-code">0xe801</span></div> </div> <div class="row"> - <div title="Code: 0xe802" class="the-icons span3"><i class="icon-users"></i> <span class="i-name">icon-users</span><span class="i-code">0xe802</span></div> - <div title="Code: 0xe803" class="the-icons span3"><i class="icon-tools"></i> <span class="i-name">icon-tools</span><span class="i-code">0xe803</span></div> - <div title="Code: 0xe804" class="the-icons span3"><i class="icon-arrows-cw"></i> <span class="i-name">icon-arrows-cw</span><span class="i-code">0xe804</span></div> - <div title="Code: 0xe805" class="the-icons span3"><i class="icon-exchange"></i> <span class="i-name">icon-exchange</span><span class="i-code">0xe805</span></div> + <div title="Code: 0xe802" class="the-icons span3"><i class="demo-icon icon-users"></i> <span class="i-name">icon-users</span><span class="i-code">0xe802</span></div> + <div title="Code: 0xe803" class="the-icons span3"><i class="demo-icon icon-tools"></i> <span class="i-name">icon-tools</span><span class="i-code">0xe803</span></div> + <div title="Code: 0xe804" class="the-icons span3"><i class="demo-icon icon-arrows-cw"></i> <span class="i-name">icon-arrows-cw</span><span class="i-code">0xe804</span></div> + <div title="Code: 0xe805" class="the-icons span3"><i class="demo-icon icon-exchange"></i> <span class="i-name">icon-exchange</span><span class="i-code">0xe805</span></div> </div> <div class="row"> - <div title="Code: 0xe806" class="the-icons span3"><i class="icon-folder-open"></i> <span class="i-name">icon-folder-open</span><span class="i-code">0xe806</span></div> - <div title="Code: 0xe807" class="the-icons span3"><i class="icon-brush"></i> <span class="i-name">icon-brush</span><span class="i-code">0xe807</span></div> - <div title="Code: 0xe808" class="the-icons span3"><i class="icon-flow-branch"></i> <span class="i-name">icon-flow-branch</span><span class="i-code">0xe808</span></div> - <div title="Code: 0xe809" class="the-icons span3"><i class="icon-menu"></i> <span class="i-name">icon-menu</span><span class="i-code">0xe809</span></div> + <div title="Code: 0xe806" class="the-icons span3"><i class="demo-icon icon-folder-open"></i> <span class="i-name">icon-folder-open</span><span class="i-code">0xe806</span></div> + <div title="Code: 0xe807" class="the-icons span3"><i class="demo-icon icon-brush"></i> <span class="i-name">icon-brush</span><span class="i-code">0xe807</span></div> + <div title="Code: 0xe808" class="the-icons span3"><i class="demo-icon icon-flow-branch"></i> <span class="i-name">icon-flow-branch</span><span class="i-code">0xe808</span></div> + <div title="Code: 0xe809" class="the-icons span3"><i class="demo-icon icon-menu"></i> <span class="i-name">icon-menu</span><span class="i-code">0xe809</span></div> </div> <div class="row"> - <div title="Code: 0xe80a" class="the-icons span3"><i class="icon-code"></i> <span class="i-name">icon-code</span><span class="i-code">0xe80a</span></div> - <div title="Code: 0xe80b" class="the-icons span3"><i class="icon-user-add"></i> <span class="i-name">icon-user-add</span><span class="i-code">0xe80b</span></div> - <div title="Code: 0xe80c" class="the-icons span3"><i class="icon-cw"></i> <span class="i-name">icon-cw</span><span class="i-code">0xe80c</span></div> - <div title="Code: 0xe80d" class="the-icons span3"><i class="icon-group"></i> <span class="i-name">icon-group</span><span class="i-code">0xe80d</span></div> + <div title="Code: 0xe80a" class="the-icons span3"><i class="demo-icon icon-code"></i> <span class="i-name">icon-code</span><span class="i-code">0xe80a</span></div> + <div title="Code: 0xe80b" class="the-icons span3"><i class="demo-icon icon-user-add"></i> <span class="i-name">icon-user-add</span><span class="i-code">0xe80b</span></div> + <div title="Code: 0xe80c" class="the-icons span3"><i class="demo-icon icon-cw"></i> <span class="i-name">icon-cw</span><span class="i-code">0xe80c</span></div> + <div title="Code: 0xe80d" class="the-icons span3"><i class="demo-icon icon-group"></i> <span class="i-name">icon-group</span><span class="i-code">0xe80d</span></div> </div> <div class="row"> - <div title="Code: 0xe80e" class="the-icons span3"><i class="icon-home"></i> <span class="i-name">icon-home</span><span class="i-code">0xe80e</span></div> - <div title="Code: 0xe80f" class="the-icons span3"><i class="icon-equalizer"></i> <span class="i-name">icon-equalizer</span><span class="i-code">0xe80f</span></div> - <div title="Code: 0xe810" class="the-icons span3"><i class="icon-mail-1"></i> <span class="i-name">icon-mail-1</span><span class="i-code">0xe810</span></div> - <div title="Code: 0xe811" class="the-icons span3"><i class="icon-search"></i> <span class="i-name">icon-search</span><span class="i-code">0xe811</span></div> + <div title="Code: 0xe80e" class="the-icons span3"><i class="demo-icon icon-home"></i> <span class="i-name">icon-home</span><span class="i-code">0xe80e</span></div> + <div title="Code: 0xe80f" class="the-icons span3"><i class="demo-icon icon-equalizer"></i> <span class="i-name">icon-equalizer</span><span class="i-code">0xe80f</span></div> + <div title="Code: 0xe810" class="the-icons span3"><i class="demo-icon icon-mail-1"></i> <span class="i-name">icon-mail-1</span><span class="i-code">0xe810</span></div> + <div title="Code: 0xe811" class="the-icons span3"><i class="demo-icon icon-search"></i> <span class="i-name">icon-search</span><span class="i-code">0xe811</span></div> </div> <div class="row"> - <div title="Code: 0xe812" class="the-icons span3"><i class="icon-move"></i> <span class="i-name">icon-move</span><span class="i-code">0xe812</span></div> - <div title="Code: 0xe813" class="the-icons span3"><i class="icon-upload"></i> <span class="i-name">icon-upload</span><span class="i-code">0xe813</span></div> - <div title="Code: 0xe814" class="the-icons span3"><i class="icon-upload-cloud"></i> <span class="i-name">icon-upload-cloud</span><span class="i-code">0xe814</span></div> - <div title="Code: 0xe815" class="the-icons span3"><i class="icon-key"></i> <span class="i-name">icon-key</span><span class="i-code">0xe815</span></div> + <div title="Code: 0xe812" class="the-icons span3"><i class="demo-icon icon-move"></i> <span class="i-name">icon-move</span><span class="i-code">0xe812</span></div> + <div title="Code: 0xe813" class="the-icons span3"><i class="demo-icon icon-upload"></i> <span class="i-name">icon-upload</span><span class="i-code">0xe813</span></div> + <div title="Code: 0xe814" class="the-icons span3"><i class="demo-icon icon-upload-cloud"></i> <span class="i-name">icon-upload-cloud</span><span class="i-code">0xe814</span></div> + <div title="Code: 0xe815" class="the-icons span3"><i class="demo-icon icon-key"></i> <span class="i-name">icon-key</span><span class="i-code">0xe815</span></div> </div> <div class="row"> - <div title="Code: 0xe816" class="the-icons span3"><i class="icon-network"></i> <span class="i-name">icon-network</span><span class="i-code">0xe816</span></div> - <div title="Code: 0xe817" class="the-icons span3"><i class="icon-info-circled-1"></i> <span class="i-name">icon-info-circled-1</span><span class="i-code">0xe817</span></div> - <div title="Code: 0xe818" class="the-icons span3"><i class="icon-calendar"></i> <span class="i-name">icon-calendar</span><span class="i-code">0xe818</span></div> - <div title="Code: 0xe819" class="the-icons span3"><i class="icon-ok"></i> <span class="i-name">icon-ok</span><span class="i-code">0xe819</span></div> + <div title="Code: 0xe816" class="the-icons span3"><i class="demo-icon icon-network"></i> <span class="i-name">icon-network</span><span class="i-code">0xe816</span></div> + <div title="Code: 0xe817" class="the-icons span3"><i class="demo-icon icon-info-circled-1"></i> <span class="i-name">icon-info-circled-1</span><span class="i-code">0xe817</span></div> + <div title="Code: 0xe818" class="the-icons span3"><i class="demo-icon icon-calendar"></i> <span class="i-name">icon-calendar</span><span class="i-code">0xe818</span></div> + <div title="Code: 0xe819" class="the-icons span3"><i class="demo-icon icon-ok"></i> <span class="i-name">icon-ok</span><span class="i-code">0xe819</span></div> </div> <div class="row"> - <div title="Code: 0xe81a" class="the-icons span3"><i class="icon-help-circled"></i> <span class="i-name">icon-help-circled</span><span class="i-code">0xe81a</span></div> - <div title="Code: 0xe81b" class="the-icons span3"><i class="icon-logout"></i> <span class="i-name">icon-logout</span><span class="i-code">0xe81b</span></div> - <div title="Code: 0xe81c" class="the-icons span3"><i class="icon-flag"></i> <span class="i-name">icon-flag</span><span class="i-code">0xe81c</span></div> - <div title="Code: 0xe81d" class="the-icons span3"><i class="icon-spin6 animate-spin"></i> <span class="i-name">icon-spin6</span><span class="i-code">0xe81d</span></div> + <div title="Code: 0xe81a" class="the-icons span3"><i class="demo-icon icon-help-circled"></i> <span class="i-name">icon-help-circled</span><span class="i-code">0xe81a</span></div> + <div title="Code: 0xe81b" class="the-icons span3"><i class="demo-icon icon-logout"></i> <span class="i-name">icon-logout</span><span class="i-code">0xe81b</span></div> + <div title="Code: 0xe81c" class="the-icons span3"><i class="demo-icon icon-flag"></i> <span class="i-name">icon-flag</span><span class="i-code">0xe81c</span></div> + <div title="Code: 0xe81d" class="the-icons span3"><i class="demo-icon icon-spin6 animate-spin"></i> <span class="i-name">icon-spin6</span><span class="i-code">0xe81d</span></div> </div> <div class="row"> - <div title="Code: 0xe81e" class="the-icons span3"><i class="icon-hourglass"></i> <span class="i-name">icon-hourglass</span><span class="i-code">0xe81e</span></div> - <div title="Code: 0xe81f" class="the-icons span3"><i class="icon-check"></i> <span class="i-name">icon-check</span><span class="i-code">0xe81f</span></div> - <div title="Code: 0xe820" class="the-icons span3"><i class="icon-check-empty"></i> <span class="i-name">icon-check-empty</span><span class="i-code">0xe820</span></div> - <div title="Code: 0xe821" class="the-icons span3"><i class="icon-cancel-circled"></i> <span class="i-name">icon-cancel-circled</span><span class="i-code">0xe821</span></div> + <div title="Code: 0xe81e" class="the-icons span3"><i class="demo-icon icon-hourglass"></i> <span class="i-name">icon-hourglass</span><span class="i-code">0xe81e</span></div> + <div title="Code: 0xe81f" class="the-icons span3"><i class="demo-icon icon-check"></i> <span class="i-name">icon-check</span><span class="i-code">0xe81f</span></div> + <div title="Code: 0xe820" class="the-icons span3"><i class="demo-icon icon-check-empty"></i> <span class="i-name">icon-check-empty</span><span class="i-code">0xe820</span></div> + <div title="Code: 0xe821" class="the-icons span3"><i class="demo-icon icon-cancel-circled"></i> <span class="i-name">icon-cancel-circled</span><span class="i-code">0xe821</span></div> </div> <div class="row"> - <div title="Code: 0xe822" class="the-icons span3"><i class="icon-cancel"></i> <span class="i-name">icon-cancel</span><span class="i-code">0xe822</span></div> - <div title="Code: 0xe823" class="the-icons span3"><i class="icon-plus"></i> <span class="i-name">icon-plus</span><span class="i-code">0xe823</span></div> - <div title="Code: 0xe824" class="the-icons span3"><i class="icon-ok-circled"></i> <span class="i-name">icon-ok-circled</span><span class="i-code">0xe824</span></div> - <div title="Code: 0xe827" class="the-icons span3"><i class="icon-zoom-in"></i> <span class="i-name">icon-zoom-in</span><span class="i-code">0xe827</span></div> + <div title="Code: 0xe822" class="the-icons span3"><i class="demo-icon icon-cancel"></i> <span class="i-name">icon-cancel</span><span class="i-code">0xe822</span></div> + <div title="Code: 0xe823" class="the-icons span3"><i class="demo-icon icon-plus"></i> <span class="i-name">icon-plus</span><span class="i-code">0xe823</span></div> + <div title="Code: 0xe824" class="the-icons span3"><i class="demo-icon icon-ok-circled"></i> <span class="i-name">icon-ok-circled</span><span class="i-code">0xe824</span></div> + <div title="Code: 0xe825" class="the-icons span3"><i class="demo-icon icon-heart-broken"></i> <span class="i-name">icon-heart-broken</span><span class="i-code">0xe825</span></div> </div> <div class="row"> - <div title="Code: 0xe828" class="the-icons span3"><i class="icon-zoom-out"></i> <span class="i-name">icon-zoom-out</span><span class="i-code">0xe828</span></div> - <div title="Code: 0xf0ae" class="the-icons span3"><i class="icon-tasks"></i> <span class="i-name">icon-tasks</span><span class="i-code">0xf0ae</span></div> - <div title="Code: 0xf0b0" class="the-icons span3"><i class="icon-filter"></i> <span class="i-name">icon-filter</span><span class="i-code">0xf0b0</span></div> - <div title="Code: 0xf0e0" class="the-icons span3"><i class="icon-mail-alt"></i> <span class="i-name">icon-mail-alt</span><span class="i-code">0xf0e0</span></div> + <div title="Code: 0xe827" class="the-icons span3"><i class="demo-icon icon-zoom-in"></i> <span class="i-name">icon-zoom-in</span><span class="i-code">0xe827</span></div> + <div title="Code: 0xe828" class="the-icons span3"><i class="demo-icon icon-zoom-out"></i> <span class="i-name">icon-zoom-out</span><span class="i-code">0xe828</span></div> + <div title="Code: 0xf0ae" class="the-icons span3"><i class="demo-icon icon-tasks"></i> <span class="i-name">icon-tasks</span><span class="i-code">0xf0ae</span></div> + <div title="Code: 0xf0b0" class="the-icons span3"><i class="demo-icon icon-filter"></i> <span class="i-name">icon-filter</span><span class="i-code">0xf0b0</span></div> </div> <div class="row"> - <div title="Code: 0xf0e8" class="the-icons span3"><i class="icon-sitemap"></i> <span class="i-name">icon-sitemap</span><span class="i-code">0xf0e8</span></div> - <div title="Code: 0xf125" class="the-icons span3"><i class="icon-crop"></i> <span class="i-name">icon-crop</span><span class="i-code">0xf125</span></div> - <div title="Code: 0x1f304" class="the-icons span3"><i class="icon-picture"></i> <span class="i-name">icon-picture</span><span class="i-code">0x1f304</span></div> - <div title="Code: 0x1f464" class="the-icons span3"><i class="icon-user"></i> <span class="i-name">icon-user</span><span class="i-code">0x1f464</span></div> + <div title="Code: 0xf0e0" class="the-icons span3"><i class="demo-icon icon-mail-alt"></i> <span class="i-name">icon-mail-alt</span><span class="i-code">0xf0e0</span></div> + <div title="Code: 0xf0e8" class="the-icons span3"><i class="demo-icon icon-sitemap"></i> <span class="i-name">icon-sitemap</span><span class="i-code">0xf0e8</span></div> + <div title="Code: 0xf125" class="the-icons span3"><i class="demo-icon icon-crop"></i> <span class="i-name">icon-crop</span><span class="i-code">0xf125</span></div> + <div title="Code: 0x1f304" class="the-icons span3"><i class="demo-icon icon-picture">🌄</i> <span class="i-name">icon-picture</span><span class="i-code">0x1f304</span></div> </div> <div class="row"> - <div title="Code: 0x1f500" class="the-icons span3"><i class="icon-shuffle"></i> <span class="i-name">icon-shuffle</span><span class="i-code">0x1f500</span></div> - <div title="Code: 0x1f512" class="the-icons span3"><i class="icon-lock"></i> <span class="i-name">icon-lock</span><span class="i-code">0x1f512</span></div> - <div title="Code: 0x1f517" class="the-icons span3"><i class="icon-link"></i> <span class="i-name">icon-link</span><span class="i-code">0x1f517</span></div> - <div title="Code: 0x1f527" class="the-icons span3"><i class="icon-wrench"></i> <span class="i-name">icon-wrench</span><span class="i-code">0x1f527</span></div> + <div title="Code: 0x1f464" class="the-icons span3"><i class="demo-icon icon-user">👤</i> <span class="i-name">icon-user</span><span class="i-code">0x1f464</span></div> + <div title="Code: 0x1f500" class="the-icons span3"><i class="demo-icon icon-shuffle">🔀</i> <span class="i-name">icon-shuffle</span><span class="i-code">0x1f500</span></div> + <div title="Code: 0x1f512" class="the-icons span3"><i class="demo-icon icon-lock">🔒</i> <span class="i-name">icon-lock</span><span class="i-code">0x1f512</span></div> + <div title="Code: 0x1f517" class="the-icons span3"><i class="demo-icon icon-link">🔗</i> <span class="i-name">icon-link</span><span class="i-code">0x1f517</span></div> </div> <div class="row"> - <div title="Code: 0x1f554" class="the-icons span3"><i class="icon-clock"></i> <span class="i-name">icon-clock</span><span class="i-code">0x1f554</span></div> - <div title="Code: 0x1f6ab" class="the-icons span3"><i class="icon-block"></i> <span class="i-name">icon-block</span><span class="i-code">0x1f6ab</span></div> + <div title="Code: 0x1f527" class="the-icons span3"><i class="demo-icon icon-wrench">🔧</i> <span class="i-name">icon-wrench</span><span class="i-code">0x1f527</span></div> + <div title="Code: 0x1f554" class="the-icons span3"><i class="demo-icon icon-clock">🕔</i> <span class="i-name">icon-clock</span><span class="i-code">0x1f554</span></div> + <div title="Code: 0x1f6ab" class="the-icons span3"><i class="demo-icon icon-block">🚫</i> <span class="i-name">icon-block</span><span class="i-code">0x1f6ab</span></div> </div> </div> <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div> diff --git a/admin/themes/default/fontello/font/fontello.eot b/admin/themes/default/fontello/font/fontello.eot Binary files differindex 9e3a4d6e1..b0615dac1 100644 --- a/admin/themes/default/fontello/font/fontello.eot +++ b/admin/themes/default/fontello/font/fontello.eot diff --git a/admin/themes/default/fontello/font/fontello.svg b/admin/themes/default/fontello/font/fontello.svg index a24fef192..77b818669 100644 --- a/admin/themes/default/fontello/font/fontello.svg +++ b/admin/themes/default/fontello/font/fontello.svg @@ -1,77 +1,78 @@ <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg"> -<metadata>Copyright (C) 2014 by original authors @ fontello.com</metadata> +<metadata>Copyright (C) 2015 by original authors @ fontello.com</metadata> <defs> <font id="fontello" horiz-adv-x="1000" > <font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" /> <missing-glyph horiz-adv-x="1000" /> -<glyph glyph-name="star" unicode="★" d="m0 489q0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26 0-12-15-27l-203-197 48-279q1-4 1-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-13-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27z" horiz-adv-x="928.6" /> -<glyph glyph-name="star-empty" unicode="☆" d="m0 489q0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26 0-12-15-27l-203-197 48-279q1-4 1-12 0-28-23-28-10 0-22 7l-251 132-250-132q-13-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27z m123-34l171-165-41-235 211 111 211-111-41 235 171 165-235 35-106 213-105-213z" horiz-adv-x="928.6" /> -<glyph glyph-name="cog" unicode="⚙" d="m0 289v124q0 7 5 13t10 7l104 16q8 25 22 51-23 32-60 77-6 7-6 14 0 5 5 12 15 20 55 60t53 40q7 0 15-5l77-60q24 13 50 21 9 76 17 104 3 15 20 15h124q7 0 13-4t7-12l15-103q28-9 50-21l80 60q5 5 13 5 7 0 14-5 72-67 92-95 4-5 4-13 0-6-4-12-9-12-29-38t-30-39q14-28 23-55l102-15q7-1 12-7t4-13v-124q0-7-4-13t-11-7l-104-16q-10-30-21-51 19-28 59-77 6-6 6-14t-5-12q-15-21-55-61t-53-39q-7 0-14 5l-77 60q-25-13-51-21-9-76-16-104-4-16-20-16h-124q-8 0-14 5t-6 12l-16 103q-27 9-50 20l-79-59q-6-5-14-5-8 0-14 6-70 63-92 94-4 5-4 12 0 7 5 13 8 12 28 37t30 40q-15 28-23 55l-102 15q-7 1-11 7t-5 13z m286 61q0-59 42-101t101-42 101 42 41 101-41 101-101 42-101-42-42-101z" horiz-adv-x="857.1" /> -<glyph glyph-name="cog-alt" unicode="⛯" d="m0 299v103q0 6 4 11t9 6l86 14q7 19 18 42-19 27-50 64-4 6-4 11 0 7 4 12 12 16 46 49t44 33q6 0 12-4l64-50q19 10 43 18 6 60 13 86 3 13 16 13h104q6 0 11-4t6-10l13-85q19-6 41-17l66 49q5 4 11 4 7 0 12-4 81-75 81-90 0-5-4-10-7-9-24-30t-25-34q13-27 19-46l85-12q5-2 9-6t4-11v-103q0-6-4-11t-9-6l-86-14q-6-19-18-42 19-27 50-64 4-6 4-11 0-7-4-11-13-17-46-50t-44-33q-6 0-11 4l-64 50q-21-11-43-17-6-60-13-87-4-13-17-13h-104q-6 0-11 4t-5 10l-13 85q-19 6-42 18l-66-50q-4-4-11-4-6 0-12 4-80 75-80 90 0 5 4 10 5 8 23 30t26 34q-13 24-20 46l-85 13q-5 1-9 5t-4 11z m214 51q0-59 42-101t101-42 101 42 42 101-42 101-101 42-101-42-42-101z m429-325v78q0 9 83 18 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 1 17 1t17-1q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-9 83-18v-78q0-9-83-17-6-15-16-29 28-63 28-77 0-2-2-4-68-40-69-40-5 0-26 27t-29 37q-11-1-17-1t-17 1q-7-11-29-37t-25-27q-1 0-69 40-3 2-3 4 0 14 29 77-10 14-17 29-83 8-83 17z m0 572v78q0 9 83 17 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 2 17 2t17-2q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-8 83-17v-78q0-9-83-18-6-15-16-29 28-63 28-77 0-2-2-4-68-39-69-39-5 0-26 26t-29 38q-11-1-17-1t-17 1q-7-12-29-38t-25-26q-1 0-69 39-3 2-3 4 0 14 29 77-10 14-17 29-83 9-83 18z m143-533q0-29 21-50t50-21 51 21 21 50q0 29-22 51t-50 21-50-21-21-51z m0 572q0-30 21-51t50-21 51 21 21 51q0 29-22 50t-50 21-50-21-21-50z" horiz-adv-x="1071.4" /> -<glyph glyph-name="mail" unicode="✉" d="m0 11v607q0 37 26 63t63 26h822q37 0 63-26t26-63v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63z m71 0q0-8 6-13t12-5h822q7 0 12 5t6 13v428q-18-20-39-37-149-114-238-188-28-24-46-38t-48-27-57-13h-2q-26 0-57 13t-48 27-46 38q-88 74-238 188-21 17-39 37v-428z m0 607q0-94 82-159 108-84 224-176 4-3 20-17t25-21 25-17 28-16 24-5h2q11 0 24 5t28 16 25 17 25 21 20 17q116 92 224 176 30 24 56 65t26 73v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12z" horiz-adv-x="1000" /> -<glyph glyph-name="pencil" unicode="✎" d="m0-79v233l464 464 232-232-464-465h-232z m71 143h72v-71h60l50 51-131 131-51-51v-60z m95 143q0-12 13-12 5 0 9 4l303 302q3 4 3 10 0 12-12 12-5 0-9-4l-303-302q-4-4-4-10z m334 447l93 92q20 21 50 21 29 0 51-21l131-131q20-22 20-51 0-29-20-50l-93-93z" horiz-adv-x="857.1" /> -<glyph glyph-name="plus-circled" unicode="➕" d="m0 350q0 117 58 215t155 156 216 58 215-58 156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215z m179-36q0-14 10-25t25-10h143v-143q0-15 11-25t25-11h71q15 0 25 11t11 25v143h143q14 0 25 10t11 25v72q0 14-11 25t-25 10h-143v143q0 15-11 25t-25 11h-71q-15 0-25-11t-11-25v-143h-143q-14 0-25-10t-10-25v-72z" horiz-adv-x="857.1" /> +<glyph glyph-name="star" unicode="★" d="m929 489q0-12-15-27l-203-197 48-279q1-4 1-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-13-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" /> +<glyph glyph-name="star-empty" unicode="☆" d="m634 290l171 165-235 35-106 213-105-213-236-35 171-165-41-235 211 111 211-111z m295 199q0-12-15-27l-203-197 48-279q1-4 1-12 0-28-23-28-10 0-22 7l-251 132-250-132q-13-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" /> +<glyph glyph-name="cog" unicode="⚙" d="m571 350q0 59-41 101t-101 42-101-42-42-101 42-101 101-42 101 42 41 101z m286 61v-124q0-7-4-13t-11-7l-104-16q-10-30-21-51 19-27 59-77 6-6 6-13t-5-13q-15-21-55-61t-53-39q-7 0-14 5l-77 60q-25-13-51-21-9-76-16-104-4-16-20-16h-124q-8 0-14 5t-6 12l-16 103q-27 9-50 21l-79-60q-6-5-14-5-8 0-14 6-70 64-92 94-4 5-4 13 0 6 5 12 8 12 28 37t30 40q-15 28-23 55l-102 15q-7 1-11 7t-5 13v124q0 7 5 13t10 7l104 16q8 25 22 51-23 32-60 77-6 7-6 14 0 5 5 12 15 20 55 60t53 40q7 0 15-5l77-60q24 13 50 21 9 76 17 104 3 15 20 15h124q7 0 13-4t7-12l15-103q28-9 50-21l80 60q5 5 13 5 7 0 14-5 72-67 92-95 4-5 4-13 0-6-4-12-9-12-29-38t-30-39q14-28 23-55l102-15q7-1 12-7t4-13z" horiz-adv-x="857.1" /> +<glyph glyph-name="cog-alt" unicode="⛯" d="m500 350q0 59-42 101t-101 42-101-42-42-101 42-101 101-42 101 42 42 101z m429-286q0 29-22 51t-50 21-50-21-21-51q0-29 21-50t50-21 51 21 21 50z m0 572q0 29-22 50t-50 21-50-21-21-50q0-30 21-51t50-21 51 21 21 51z m-215-235v-103q0-6-4-11t-9-6l-86-14q-6-19-18-42 19-27 50-64 4-6 4-11 0-7-4-11-13-17-46-50t-44-33q-6 0-11 4l-64 50q-21-11-43-17-6-60-13-87-4-13-17-13h-104q-6 0-11 4t-5 10l-13 85q-19 6-42 18l-66-50q-4-4-11-4-6 0-12 4-80 75-80 90 0 5 4 10 5 8 23 30t26 34q-13 24-20 46l-85 13q-5 1-9 5t-4 11v103q0 6 4 11t9 6l86 14q7 19 18 42-19 27-50 64-4 6-4 11 0 7 4 11 12 17 46 50t44 33q6 0 12-4l64-50q19 10 43 18 6 60 13 86 3 13 16 13h104q6 0 11-4t6-10l13-85q19-6 41-17l66 49q5 4 11 4 7 0 12-4 81-75 81-90 0-5-4-10-7-9-24-30t-25-34q13-27 19-46l85-12q5-2 9-6t4-11z m357-298v-78q0-9-83-17-6-15-16-29 28-63 28-77 0-2-2-4-68-40-69-40-5 0-26 27t-29 37q-11-1-17-1t-17 1q-7-11-29-37t-25-27q-1 0-69 40-3 2-3 4 0 14 29 77-10 14-17 29-83 8-83 17v78q0 9 83 18 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 1 17 1t17-1q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-9 83-18z m0 572v-78q0-9-83-18-6-15-16-29 28-63 28-77 0-2-2-4-68-39-69-39-5 0-26 26t-29 38q-11-1-17-1t-17 1q-7-12-29-38t-25-26q-1 0-69 39-3 2-3 4 0 14 29 77-10 14-17 29-83 9-83 18v78q0 9 83 17 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 2 17 2t17-2q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-8 83-17z" horiz-adv-x="1071.4" /> +<glyph glyph-name="mail" unicode="✉" d="m929 11v428q-18-20-39-37-149-114-238-188-28-24-46-38t-48-27-57-13h-2q-26 0-57 13t-48 27-46 38q-88 74-238 188-21 17-39 37v-428q0-8 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 82-159 108-85 224-177 4-2 20-16t25-21 25-18 28-15 24-5h2q11 0 24 5t28 15 25 18 25 21 20 16q116 92 224 177 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" /> +<glyph glyph-name="pencil" unicode="✎" d="m203-7l50 51-131 131-51-51v-60h72v-71h60z m291 518q0 12-12 12-5 0-9-4l-303-302q-4-4-4-10 0-12 13-12 5 0 9 4l303 302q3 4 3 10z m-30 107l232-232-464-465h-232v233z m381-54q0-29-20-50l-93-93-232 233 93 92q20 21 50 21 29 0 51-21l131-131q20-22 20-51z" horiz-adv-x="857.1" /> +<glyph glyph-name="plus-circled" unicode="➕" d="m679 314v72q0 14-11 25t-25 10h-143v143q0 15-11 25t-25 11h-71q-15 0-25-11t-11-25v-143h-143q-14 0-25-10t-10-25v-72q0-14 10-25t25-11h143v-142q0-15 11-25t25-11h71q15 0 25 11t11 25v142h143q14 0 25 11t11 25z m178 36q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" /> <glyph glyph-name="asl" unicode="" d="m1 700q-4 37 15 53t45 5 35-38l53-184q-15-29-14-64 6-30 36-204 7-52 32-82t65-29q47 0 74 37 34-39 83-37t74 41q27-37 71-41t73 27q12 16 20 32t11 37 5 33 1 40l0 38q26-10 61 24 49 45 109 78t98 8q33-24 31-59t-35-55q-61-25-104-82t-67-112-58-117-78-93q-21-18-66-18l-350 0q-84 6-105 118z m181-234q-6 45 21 65t56 8 37-48l21-209q4-41-17-63t-46-15-37 45z m155 70q2 41 32 56t62-1 36-49l8-248q0-59-28-76t-57 4-30 62z m175 4q4 43 37 55t62-7 30-52l-6-254q-5-47-34-66t-54 1-29 67z" horiz-adv-x="979" /> -<glyph glyph-name="eye" unicode="" d="m0 314q0 19 11 39 78 128 210 205t279 78 279-78 210-205q11-20 11-39t-11-38q-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38z m71 0q75-114 187-182t242-68 242 68 187 182q-85 132-213 197 34-58 34-125 0-104-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197z m259 72q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19-8 19-19 7q-70 0-120-50t-50-119z" horiz-adv-x="1000" /> -<glyph glyph-name="tags" unicode="" d="m0 475v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50 0-30-20-51l-274-274q-22-21-51-21-30 0-50 21l-399 399q-21 21-36 57t-15 65z m107 125q0-30 21-50t51-21 50 21 21 50-21 51-50 20-51-20-21-51z m286 179h125q29 0 65-15t57-36l399-399q21-21 21-50 0-30-21-51l-274-274q-22-21-51-21-20 0-33 8t-29 25l262 262q21 21 21 51 0 29-21 50l-399 399q-21 21-57 36t-65 15z" horiz-adv-x="1071.4" /> -<glyph glyph-name="chat" unicode="" d="m0 421q0 78 53 144t143 104 197 38 197-38 143-104 53-144-53-143-143-104-197-38q-48 0-98 9-70-50-155-72-21-5-48-9h-2q-6 0-12 5t-6 11q-1 2-1 4t1 4 1 3l1 3t2 3 2 3 3 2 2 3q3 3 13 14t15 16 12 17 14 21 11 25q-69 40-108 98t-40 125z m344-354q32-3 49-3 90 0 172 25t148 72q69 52 107 119t37 141q0 43-13 85 72-39 114-99t42-128q0-67-40-126t-108-98q5-14 11-25t14-21 13-16 14-17 13-14q0 0 2-2t3-3 2-3 2-3l1-3t1-3 1-4-1-3q-2-8-7-13t-13-4q-27 4-48 9-85 23-155 72-50-9-98-9-151 0-263 74z" horiz-adv-x="1000" /> -<glyph glyph-name="trash" unicode="" d="m0 582v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q22 0 44-15t30-35l39-93h173q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13z m143-547q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22v529h-500v-529z m71 83v321q0 8 5 13t13 5h36q8 0 13-5t5-13v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13z m54 518h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m89-518v321q0 8 5 13t13 5h36q8 0 13-5t5-13v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13z m143 0v321q0 8 5 13t13 5h36q7 0 12-5t5-13v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13z" horiz-adv-x="785.7" /> -<glyph glyph-name="basket" unicode="" d="m0 671q0 15 11 26t25 10h143q9 0 16-3t11-9 7-14 4-15 3-16 3-14h670q14 0 25-11t11-25v-286q0-13-9-24t-23-12l-583-68q1-3 3-12t3-14 1-13q0-9-13-35h513q15 0 26-11t10-25-10-25-26-11h-571q-14 0-25 11t-11 25q0 8 6 22t17 33 11 21l-98 460h-114q-15 0-25 10t-11 25z m214-678q0 29 21 50t51 21 50-21 21-50-21-51-50-21-51 21-21 51z m500 0q0 29 21 50t51 21 50-21 21-50-21-51-50-21-51 21-21 51z" horiz-adv-x="928.6" /> +<glyph glyph-name="eye" unicode="" d="m929 314q-85 132-213 197 34-58 34-125 0-104-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 242 68 187 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-12 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" /> +<glyph glyph-name="tags" unicode="" d="m250 600q0 30-21 51t-50 20-51-20-21-51 21-50 51-21 50 21 21 50z m595-321q0-30-20-51l-274-274q-22-21-51-21-30 0-50 21l-399 399q-21 21-36 57t-15 65v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50z m215 0q0-30-21-51l-274-274q-22-21-51-21-20 0-33 8t-29 25l262 262q21 21 21 51 0 29-21 50l-399 399q-21 21-57 36t-65 15h125q29 0 65-15t57-36l399-399q21-21 21-50z" horiz-adv-x="1071.4" /> +<glyph glyph-name="chat" unicode="" d="m786 421q0-77-53-143t-143-104-197-38q-48 0-98 9-70-49-155-72-21-5-48-9h-2q-6 0-12 5t-6 12q-1 1-1 3t1 4 1 3l1 3t2 3 2 3 3 3 2 2q3 3 13 14t15 16 12 17 14 21 11 25q-69 40-108 98t-40 125q0 78 53 144t143 104 197 38 197-38 143-104 53-144z m214-142q0-67-40-126t-108-98q5-14 11-25t14-21 13-16 14-17 13-14q0 0 2-2t3-3 2-3 2-3l1-3t1-3 1-4-1-3q-2-8-7-13t-13-4q-27 4-48 9-85 23-155 72-50-9-98-9-151 0-263 74 32-3 49-3 90 0 172 25t148 72q69 52 107 119t37 141q0 43-13 85 72-39 114-99t42-128z" horiz-adv-x="1000" /> +<glyph glyph-name="trash" unicode="" d="m286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q22 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" /> +<glyph glyph-name="basket" unicode="" d="m357-7q0-29-21-50t-50-22-50 22-22 50 22 50 50 21 50-21 21-50z m500 0q0-29-21-50t-50-22-51 22-21 50 21 50 51 21 50-21 21-50z m72 607v-286q0-13-10-23t-22-12l-583-68q7-34 7-40 0-8-13-35h513q15 0 26-11t10-25-10-25-26-11h-571q-14 0-25 11t-11 25q0 6 5 18t9 20 12 22 8 16l-98 460h-114q-15 0-25 10t-11 25 11 26 25 10h143q9 0 16-3t10-9 8-14 4-14 3-17 3-14h670q14 0 25-11t11-25z" horiz-adv-x="928.6" /> <glyph glyph-name="puzzle" unicode="" d="m586 402q-37 0-64-34t-27-82 27-84 64-34q22 0 43 13 26 17 37 11t12-24l0-144q0-31-24-54t-55-23l-143 0q-16 0-23 9t2 31q21 25 21 51 0 38-34 64t-83 26-83-26-35-64q0-22 13-44 17-26 12-37t-25-10l-143 0q-33 0-55 23t-23 54l0 144q0 16 9 23t31-3q24-20 51-20 38 0 65 34t27 84-27 82-65 34q-21 0-42-13-26-17-38-12t-11 25l0 91q0 33 23 56t55 23l143 0q19 0 25 10t-11 37q-14 20-14 44 0 38 35 64t83 26 83-26 34-64q0-26-21-51-10-21-2-31t23-9l143 0q31 0 55-23t24-56l0-91q0-16-10-23t-30 3q-24 20-52 20z" horiz-adv-x="678" /> <glyph glyph-name="language" unicode="" d="m988 306q30-82-10-176t-134-160q-10 0-12 2t-16 19-16 19q-2 6 2 10 86 60 117 152t-11 148q-16-38-39-76t-59-80-86-65-106-15q-52 6-84 41t-32 93q0 84 60 148 50 50 114 66l-2 100q-140-24-146-24-6-2-10 4 0 2-5 29t-5 31q-2 2 1 4t7 2l156 28q0 110-2 114 0 8 8 8 46 0 52 2 10 0 10-8l0-104q158 22 164 22 8 4 10-6 0-2 4-23t4-25q4-10-4-12l-176-30 0-102 12 0q86 0 148-36t86-100z m-370-160q28-6 62 6l-4 214q-34-12-60-40-44-44-44-108 0-66 46-72z m122 28q28 24 58 68t45 79 7 41q-36 18-96 18-2 0-6-1t-6-1z m-448 382q10-28 53-165t83-261 40-126q0-4-4-4l-86 0q-6 0-6 4l-50 166-176 0q-48-164-50-166 0-4-6-4l-86 0q-4 0-4 4 10 18 176 552 2 8 10 8l96 0q10 0 10-8z m-130-316l144 0-72 264z" horiz-adv-x="1001" /> -<glyph glyph-name="signal" unicode="" d="m0-61v107q0 8 5 13t13 5h107q8 0 13-5t5-13v-107q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13z m214 0v179q0 8 5 13t13 5h107q8 0 13-5t5-13v-179q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13z m215 0v322q0 8 5 13t12 5h108q7 0 12-5t5-13v-322q0-8-5-13t-12-5h-108q-7 0-12 5t-5 13z m214 0v536q0 8 5 13t13 5h107q8 0 13-5t5-13v-536q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13z m214 0v822q0 8 5 13t13 5h107q8 0 13-5t5-13v-822q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13z" horiz-adv-x="1000" /> +<glyph glyph-name="signal" unicode="" d="m143 46v-107q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v107q0 8 5 13t13 5h107q8 0 13-5t5-13z m214 72v-179q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v179q0 8 5 13t13 5h107q8 0 13-5t5-13z m214 143v-322q0-8-5-13t-12-5h-108q-7 0-12 5t-5 13v322q0 8 5 13t12 5h108q7 0 12-5t5-13z m215 214v-536q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v536q0 8 5 13t13 5h107q8 0 13-5t5-13z m214 286v-822q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v822q0 8 5 13t13 5h107q8 0 13-5t5-13z" horiz-adv-x="1000" /> <glyph glyph-name="users" unicode="" d="m0 49q20 7 60 22t69 26 50 22q37 19 57 56t21 76q0 27-31 64-19 21-33 60-45 18-45 76 0 43 14 61-5 39-9 82-5 55 26 108t84 84 110 32q43 0 85-19t73-50 48-72 14-83q-4-55-8-82 14-19 14-61 0-58-45-76-15-41-32-60-32-37-32-64 0-39 20-76t58-56q29-15 92-38t113-43 66-38q18-17 28-47t10-51l1-21h-878v168z m705 299q0 34 12 50-5 32-7 67-4 45 21 89t69 72 90 27 89-27 69-72 22-89q-2-35-8-67 12-16 12-50 0-48-36-62-12-33-27-50-9-10-13-16t-9-16-4-20q0-32 17-62t47-46q17-9 42-19t60-22 50-19v-135h-254q0 4 0 11t-3 26-7 36-15 38-23 33q-23 25-53 44t-79 37q27 34 27 78 0 10-5 20t-8 16-12 16q-14 15-27 49-37 16-37 63z" horiz-adv-x="1201.2" /> <glyph glyph-name="tools" unicode="" d="m155 506q-8-8-11-22t-3-25-2-11q-2-2-17-15t-19-17q-16-14-28 4l-70 76q-11 12 2 24 2 2 18 14t20 16q6 6 27 6t37 14q14 14 18 38t10 30q2 0 9 7t26 22 41 31q134 90 186 96 122 0 148-2 12 0-8-8-120-52-152-76-80-56-36-114 34-46 38-48 8-8-2-14-2-2-38-35t-38-35q-14-8-18-4-42 48-71 60t-67-12z m286-26l410-476q18-22-2-38l-48-42q-22-14-38 4l-414 472q-8 8 0 20l72 62q12 8 20-2z m554 202q16-104-16-166-50-88-154-62-56 12-100-32l-82-78-68 78 68 70q24 24 31 53t6 65 5 58q12 56 140 112 12 6 18-3t2-15q-12-12-46-80-14-10-12-35t40-53q58-40 96 22 6 12 26 41t22 33q4 10 13 9t11-17z m-858-684l254 248 76-86-246-242q-20-20-38-4l-46 46q-22 18 0 38z" horiz-adv-x="1000" /> -<glyph glyph-name="arrows-cw" unicode="" d="m0-7v250q0 14 11 25t25 11h250q14 0 25-11t10-25-10-25l-77-77q40-37 90-57t105-20q74 0 139 37t104 99q6 10 29 66 5 13 17 13h107q8 0 13-6t5-12q0-3 0-4-36-150-150-243t-267-93q-81 0-157 31t-136 88l-72-72q-11-11-25-11t-25 11-11 25z m10 446v4q36 150 151 243t268 93q81 0 158-31t137-88l72 72q11 11 25 11t26-11 10-25v-250q0-14-10-25t-26-11h-250q-14 0-25 11t-10 25 10 25l77 77q-82 77-194 77-75 0-140-37t-104-99q-6-10-29-66-5-13-17-13h-111q-7 0-13 6t-5 12z" horiz-adv-x="857.1" /> -<glyph glyph-name="exchange" unicode="" d="m0 136q0 8 5 13l179 178q5 5 12 5 8 0 13-5t5-13v-107h768q7 0 13-5t5-13v-107q0-7-5-12t-13-6h-768v-107q0-7-5-12t-13-6q-6 0-13 6l-178 178q-5 5-5 13z m0 303v107q0 8 5 13t13 5h768v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13t-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107h-768q-7 0-13 6t-5 12z" horiz-adv-x="1000" /> -<glyph glyph-name="folder-open" unicode="" d="m0 118v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q51 0 88-37t37-88v-90h-464q-53 0-110-26t-92-67l-188-221-2-3q0 2-1 7t0 7z m41-94q0 17 17 37l188 221q24 28 67 48t80 20h607q19 0 34-7t15-24q0-18-18-37l-187-221q-24-28-67-48t-81-20h-607q-19 0-33 7t-15 24z" horiz-adv-x="1071.4" /> +<glyph glyph-name="arrows-cw" unicode="" d="m843 261q0-3 0-4-36-150-150-243t-267-93q-81 0-157 31t-136 88l-72-72q-11-11-25-11t-25 11-11 25v250q0 14 11 25t25 11h250q14 0 25-11t10-25-10-25l-77-77q40-37 90-57t105-20q74 0 139 37t104 99q6 10 29 66 5 13 17 13h107q8 0 13-6t5-12z m14 446v-250q0-14-10-25t-26-11h-250q-14 0-25 11t-10 25 10 25l77 77q-82 77-194 77-75 0-140-37t-104-99q-6-10-29-66-5-13-17-13h-111q-7 0-13 6t-5 12v4q36 150 151 243t268 93q81 0 158-31t137-88l72 72q11 11 25 11t26-11 10-25z" horiz-adv-x="857.1" /> +<glyph glyph-name="exchange" unicode="" d="m1000 189v-107q0-7-5-12t-13-6h-768v-107q0-7-5-12t-13-6q-6 0-13 6l-178 178q-5 5-5 13 0 8 5 13l179 178q5 5 12 5 8 0 13-5t5-13v-107h768q7 0 13-5t5-13z m0 304q0-8-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107h-768q-7 0-13 6t-5 12v107q0 8 5 13t13 5h768v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13z" horiz-adv-x="1000" /> +<glyph glyph-name="folder-open" unicode="" d="m1049 319q0-18-18-37l-187-221q-24-28-67-48t-81-20h-607q-19 0-33 7t-15 24q0 17 17 37l188 221q24 28 67 48t80 20h607q19 0 34-7t15-24z m-192 192v-90h-464q-53 0-110-26t-92-67l-188-221-2-3q0 2-1 7t0 7v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q51 0 88-37t37-88z" horiz-adv-x="1071.4" /> <glyph glyph-name="brush" unicode="" d="m118 170q38 34 85 29t87-45q42-40 48-87t-30-83q-86-84-228-102-84-12-80 14 0 4 6 10 52 60 64 145t48 119z m840 646q26-26-148-248t-292-338q-38-38-124-104-8-6-16 8-18 34-48 64-32 32-66 48-16 6-8 16 64 84 104 122 118 116 344 287t254 145z" horiz-adv-x="962" /> <glyph glyph-name="flow-branch" unicode="" d="m640 650q0-80-74-110-6-58-28-101t-61-69-68-38-75-26q-42-14-63-22t-47-24-38-40-16-60q70-30 70-110 0-50-35-85t-85-35-85 35-35 85q0 78 72 112l0 378q-72 34-72 110 0 50 35 85t85 35 85-35 35-85q0-76-72-110l0-204q40 30 138 60 58 18 84 29t51 41 29 76q-70 32-70 108 0 50 35 85t85 35 85-35 35-85z m-588 0q0-28 20-48t48-20 49 20 21 48q0 30-21 50t-49 20-48-20-20-50z m68-668q28 0 49 20t21 48q0 30-21 50t-49 20-48-20-20-50q0-28 20-48t48-20z m400 600q28 0 49 20t21 48q0 30-21 50t-49 20-48-20-20-50q0-28 20-48t48-20z" horiz-adv-x="640" /> -<glyph glyph-name="menu" unicode="" d="m0 29v71q0 15 11 25t25 11h785q15 0 26-11t10-25v-71q0-15-10-26t-26-10h-785q-15 0-25 10t-11 26z m0 285v72q0 14 11 25t25 10h785q15 0 26-10t10-25v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25z m0 286v71q0 15 11 26t25 10h785q15 0 26-10t10-26v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25z" horiz-adv-x="857.1" /> -<glyph glyph-name="code" unicode="" d="m25 314q0 8 6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13l-28-28q-5-5-12-5t-13 5l-260 260q-6 6-6 13z m372-350l208 720q3 8 9 11t13 2l35-10q7-2 11-9t1-13l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14z m325 118q0 7 5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-13l-260-260q-6-5-13-5t-13 5l-28 28q-5 6-5 13z" horiz-adv-x="1071.4" /> +<glyph glyph-name="menu" unicode="" d="m857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" /> +<glyph glyph-name="code" unicode="" d="m344 69l-28-28q-5-5-12-5t-13 5l-260 260q-6 6-6 13t6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13z m330 596l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14l208 720q3 8 9 11t13 2l35-10q7-2 11-9t1-13z m367-364l-260-260q-6-5-13-5t-13 5l-28 28q-5 6-5 13t5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-13z" horiz-adv-x="1071.4" /> <glyph glyph-name="user-add" unicode="" d="m620 128q180-64 180-122l0-106-800 0 0 202q36 14 82 26 94 34 129 69t35 95q0 22-23 48t-31 74q-2 12-23 25t-25 61q0 16 5 26t9 12l4 4q-8 50-12 88-6 54 40 112t160 58 160-58 42-112l-14-88q18-8 18-42-2-28-9-43t-14-17-14-8-9-18q-10-46-33-73t-23-49q0-60 36-95t130-69z m230 272l150 0 0-100-150 0 0-150-100 0 0 150-150 0 0 100 150 0 0 150 100 0 0-150z" horiz-adv-x="1000" /> -<glyph glyph-name="cw" unicode="" d="m0 350q0 87 34 166t92 137 136 92 167 34q82 0 158-31t137-88l72 72q16 18 39 8 22-9 22-33v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-62-91-22-111 22-111 62-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166z" horiz-adv-x="857.1" /> +<glyph glyph-name="cw" unicode="" d="m857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-62-91-22-111 22-111 62-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166 34 166 92 137 136 92 167 34q82 0 158-31t137-88l72 72q16 18 39 8 22-9 22-33z" horiz-adv-x="857.1" /> <glyph glyph-name="group" unicode="" d="m0 106l0 134q0 26 18 32l171 80q-66 39-68 131 0 56 35 103 37 41 90 43 31 0 63-19-49-125 23-237-12-11-25-19l-114-55q-48-23-52-84l0-143-114 0q-25 0-27 34z m193-59l0 168q0 27 22 37l152 70 57 28q-37 23-60 66t-22 94q0 76 46 130t110 54 109-54 45-130q0-106-78-158l61-30 146-70q24-10 24-37l0-168q-2-37-37-41l-541 0q-14 2-24 14t-10 27z m473 330q68 106 22 231 31 19 66 21 49 0 90-43 35-41 35-103 0-82-65-131l168-80q18-10 18-32l0-134q0-32-27-34l-118 0 0 143q0 57-50 84l-110 53q-15 8-29 25z" horiz-adv-x="1000" /> <glyph glyph-name="home" unicode="" d="m888 336q16-16 11-27t-27-11l-84 0 0-310q0-14-1-21t-8-13-23-6l-204 0 0 310-204 0 0-310-194 0q-28 0-35 10t-7 30l0 310-84 0q-22 0-27 11t11 27l400 402q16 16 38 16t38-16z" horiz-adv-x="900" /> <glyph glyph-name="equalizer" unicode="" d="m576 239l0-112-55 0 0-167q0-23-17-40t-39-17-39 17-17 40l0 167-56 0 0 112 56 0 0 503q0 24 17 39t38 16q24 0 41-16t16-39l0-503 55 0z m335 335l0-112-55 0 0-502q0-23-16-40t-41-17q-23 0-39 17t-16 40l0 502-56 0 0 112 56 0 0 168q0 24 16 39t39 16 41-16 16-39l0-168 55 0z m-670-112l0-111-55 0 0-391q0-23-16-40t-40-17q-23 0-39 17t-17 40l0 391-56 0 0 111 56 0 0 280q0 24 16 39t40 16 40-16 16-39l0-280 55 0z" horiz-adv-x="928" /> <glyph glyph-name="mail-1" unicode="" d="m467 366l-449 210 0 109 893 0 0-109z m0-123l444 210 0-437-893 0 0 438z" horiz-adv-x="928" /> <glyph glyph-name="search" unicode="" d="m772 78q30-34 6-62l-46-46q-36-32-68 0l-190 190q-74-42-156-42-128 0-223 95t-95 223 90 219 218 91 224-95 96-223q0-88-46-162z m-678 358q0-88 68-156t156-68 151 63 63 153q0 88-68 155t-156 67-151-63-63-151z" horiz-adv-x="789" /> -<glyph glyph-name="move" unicode="" d="m0 350q0 15 11 25l143 143q10 11 25 11t25-11 10-25v-72h215v215h-72q-14 0-25 10t-11 25 11 26l143 142q11 11 25 11t25-11l143-142q11-11 11-26t-11-25-25-10h-72v-215h215v72q0 14 10 25t25 11 26-11l142-143q11-10 11-25t-11-25l-142-143q-11-11-26-11t-25 11-10 25v72h-215v-215h72q14 0 25-10t11-25-11-26l-143-142q-10-11-25-11t-25 11l-143 142q-11 11-11 26t11 25 25 10h72v215h-215v-72q0-14-10-25t-25-11-26 11l-142 143q-11 11-11 25z" horiz-adv-x="1000" /> +<glyph glyph-name="move" unicode="" d="m1000 350q0-14-11-25l-142-143q-11-11-26-11t-25 11-10 25v72h-215v-215h72q14 0 25-10t11-25-11-26l-143-142q-10-11-25-11t-25 11l-143 142q-11 11-11 26t11 25 25 10h72v215h-215v-72q0-14-10-25t-25-11-26 11l-142 143q-11 11-11 25t11 25l142 143q11 11 26 11t25-11 10-25v-72h215v215h-72q-14 0-25 10t-11 25 11 26l143 142q11 11 25 11t25-11l143-142q11-11 11-26t-11-25-25-10h-72v-215h215v72q0 14 10 25t25 11 26-11l142-143q11-10 11-25z" horiz-adv-x="1000" /> <glyph glyph-name="upload" unicode="" d="m500 776l260-244-164 0 0-256-190 0 0 256-166 0z m468-578q18-10 27-32t3-40l-28-154q-4-20-22-33t-40-13l-816 0q-22 0-40 13t-22 33l-28 154q-10 48 32 72l158 108 98 0-170-130 178 0q8 0 12-8l40-110 300 0 40 110q8 8 12 8l178 0-170 130 98 0z" horiz-adv-x="1000" /> <glyph glyph-name="upload-cloud" unicode="" d="m760 494q100 0 170-68t70-166-70-166-170-68l-190 0 0 190 106 0-176 230-174-230 104 0 0-190-248 0q-74 0-128 52t-54 124q0 74 53 126t129 52q14 0 20-2-2 12-2 38 0 108 78 184t188 76q90 0 160-52t94-134q28 4 40 4z" horiz-adv-x="1000" /> <glyph glyph-name="key" unicode="" d="m774 612q20-116-28-215t-150-117q-66-12-130-2l-118-194-70-12-104-166q-14-28-46-32l-76-14q-12-4-22 4t-12 22l-16 98q-8 30 12 56l258 386q-24 50-38 120-18 106 53 187t185 101q106 20 195-45t107-177z m-126-76q30 44 21 97t-51 83q-42 32-92 22t-80-54q-8-12-12-23t-1-20 5-16 13-17 18-15 22-16 23-17q6-4 22-16t23-16 19-12 19-8 17 1 18 8 16 19z" horiz-adv-x="780" /> <glyph glyph-name="network" unicode="" d="m224 504q-22 0-42-10-48 52-92 128 54 74 128 118 92-38 152-82-6-16-6-32 0-6 4-22-62-48-116-104-16 4-28 4z m-98-98q0-34 20-60-60-114-80-232-66 106-66 236 0 110 50 206 38-62 84-112-8-24-8-38z m336 318q-28 0-50-14-58 42-114 70 84 30 162 30 120 0 230-62-76-14-162-50-26 26-66 26z m146-460q-160 24-290 112 4 20 4 30 0 24-14 52 38 44 98 90 26-20 56-20 14 0 38 8 94-108 134-240-16-14-26-32z m128-132q38 14 54 60 58 4 108 18-46-146-166-232 6 48 6 98 0 10-1 28t-1 28z m-150 66q-190-96-304-272-90 36-158 110 12 144 80 274 6-2 20-2 30 0 52 14 142-98 310-124z m184 492q150-136 150-340 0-22-4-66-64-18-130-24-24 56-88 60-48 146-148 264 10 20 10 42l0 10q100 42 210 54z m-136-544q14-10 32-18 2-18 2-52 0-80-14-144-86-42-194-42-58 0-112 12 110 160 286 244z" horiz-adv-x="920" /> <glyph glyph-name="info-circled-1" unicode="" d="m454 810q190 2 326-130t140-322q2-190-131-327t-323-141q-190-2-327 131t-139 323q-4 190 130 327t324 139z m52-152q-42 0-65-24t-23-50q-2-28 15-44t49-16q38 0 61 22t23 54q0 58-60 58z m-120-594q30 0 84 26t106 78l-18 24q-48-36-72-36-14 0-4 38l42 160q26 96-22 96-30 0-89-29t-115-75l16-26q52 34 74 34 12 0 0-34l-36-152q-26-104 34-104z" horiz-adv-x="920" /> -<glyph glyph-name="calendar" unicode="" d="m0-79v715q0 29 21 50t50 21h72v54q0 36 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 36 27 63t63 26h35q37 0 63-26t27-63v-54h71q29 0 50-21t22-50v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50z m71 0h161v161h-161v-161z m0 197h161v178h-161v-178z m0 214h161v161h-161v-161z m143 268q0-7 6-13t12-5h36q7 0 12 5t6 13v161q0 7-6 12t-12 6h-36q-7 0-12-6t-6-12v-161z m54-679h178v161h-178v-161z m0 197h178v178h-178v-178z m0 214h178v161h-178v-161z m214-411h179v161h-179v-161z m0 197h179v178h-179v-178z m0 214h179v161h-179v-161z m161 268q0-7 5-13t13-5h35q8 0 13 5t5 13v161q0 7-5 12t-13 6h-35q-8 0-13-6t-5-12v-161z m53-679h161v161h-161v-161z m0 197h161v178h-161v-178z m0 214h161v161h-161v-161z" horiz-adv-x="928.6" /> -<glyph glyph-name="ok" unicode="" d="m68 332q0 22 15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q15-16 15-38t-15-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38z" horiz-adv-x="1000" /> +<glyph glyph-name="calendar" unicode="" d="m71-79h161v161h-161v-161z m197 0h178v161h-178v-161z m-197 197h161v178h-161v-178z m197 0h178v178h-178v-178z m-197 214h161v161h-161v-161z m411-411h179v161h-179v-161z m-214 411h178v161h-178v-161z m428-411h161v161h-161v-161z m-214 197h179v178h-179v-178z m-196 482v161q0 7-6 12t-12 6h-36q-7 0-12-6t-6-12v-161q0-7 6-13t12-5h36q7 0 12 5t6 13z m410-482h161v178h-161v-178z m-214 214h179v161h-179v-161z m214 0h161v161h-161v-161z m18 268v161q0 7-5 12t-13 6h-35q-8 0-13-6t-5-12v-161q0-7 5-13t13-5h35q8 0 13 5t5 13z m215 36v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v715q0 29 21 50t50 21h72v54q0 36 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 36 27 63t63 26h35q37 0 63-26t27-63v-54h71q29 0 50-21t22-50z" horiz-adv-x="928.6" /> +<glyph glyph-name="ok" unicode="" d="m932 534q0-22-15-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q15-16 15-38z" horiz-adv-x="1000" /> <glyph glyph-name="help-circled" unicode="" d="m454 810q190 2 326-130t140-322q2-190-131-327t-323-141q-190-2-327 131t-139 323q-4 190 130 327t324 139z m-2-740q30 0 49 19t19 47q2 30-17 49t-49 19l-2 0q-28 0-47-18t-21-46q0-30 19-49t47-21l2 0z m166 328q26 34 26 78 0 78-54 116-52 38-134 38-64 0-104-26-68-42-72-146l0-4 110 0 0 4q0 26 16 54 16 24 54 24 40 0 52-20 16-20 16-44 0-18-16-40-8-12-20-20l-6-4q-6-4-16-11t-20-15-21-17-17-17q-14-20-18-78l0-8 108 0 0 4q0 12 4 28 6 20 28 36l28 18q46 34 56 50z" horiz-adv-x="920" /> -<glyph glyph-name="logout" unicode="" d="m0 154v392q0 67 47 114t114 47h178q8 0 13-5t5-13q0-2 1-11t0-15-2-13-5-11-12-3h-178q-37 0-63-27t-27-63v-392q0-37 27-63t63-27h174t6 0 7-2 4-3 4-5 1-8q0-2 1-11t0-14-2-14-5-11-12-3h-178q-67 0-114 47t-47 114z m214 89v214q0 15 11 25t25 11h250v161q0 14 11 25t25 10 25-10l303-304q11-10 11-25t-11-25l-303-304q-11-10-25-10t-25 10-11 25v161h-250q-14 0-25 11t-11 25z" horiz-adv-x="928.6" /> +<glyph glyph-name="logout" unicode="" d="m357 46q0-2 1-11t0-14-2-14-5-11-12-3h-178q-67 0-114 47t-47 114v392q0 67 47 114t114 47h178q8 0 13-5t5-13q0-2 1-11t0-15-2-13-5-11-12-3h-178q-37 0-63-27t-27-63v-392q0-37 27-63t63-27h174t6 0 7-2 4-3 4-5 1-8z m518 304q0-14-11-25l-303-304q-11-10-25-10t-25 10-11 25v161h-250q-14 0-25 11t-11 25v214q0 15 11 25t25 11h250v161q0 14 11 25t25 10 25-10l303-304q11-10 11-25z" horiz-adv-x="928.6" /> <glyph glyph-name="flag" unicode="" d="m874 616q14 6 22-1t0-19q-96-138-164-213t-110-90-73-2-60 37-63 40-93-4-139-86l90-352-100 0-184 720 92 34q90 66 152 86t98 3 64-51 62-71 79-62 129-20 198 51z" horiz-adv-x="900" /> <glyph glyph-name="spin6" unicode="" d="m855 9c-189-190-520-172-705 13-190 190-200 494-28 695 11 13 21 26 35 34 36 23 85 18 117-13 30-31 35-76 16-112-5-9-9-15-16-22-140-151-145-379-8-516 153-153 407-121 542 34 106 122 142 297 77 451-83 198-305 291-510 222l0 1c236 82 492-24 588-252 71-167 37-355-72-493-11-15-23-29-36-42z" horiz-adv-x="1000" /> <glyph glyph-name="hourglass" unicode="" d="m560 622q0-44-48-96t-97-99-49-77 49-76 97-97 48-97l0-118q0-34-86-73t-194-39-194 39-86 73l0 118q0 46 48 97t97 97 49 76-49 77-97 99-48 96l0 118q0 32 87 71t193 39 193-39 87-71l0-118z m-482 112l-18-14q-4-8 4-14 92-52 216-52 132 0 220 50 14 10-16 30-96 54-202 54-120 0-204-54z m228-384q0 18 4 33t18 33 20 25 31 31 29 28q92 92 92 122l2 50q-100-54-222-54t-222 54l4-50q0-32 90-122 6-6 22-21t23-22l19-19t17-21 11-20 9-23 3-24q0-10-1-19t-6-18-8-16-11-17l-12-15t-15-16-16-15-18-16-17-16q-90-90-90-122l0-66q8 4 66 23t92 43 34 58q0 30 26 30t26-30q0-34 33-58t94-43 67-23l0 66q0 30-92 122-4 4-21 20t-22 21-18 19-18 22-12 20-9 23-2 23z" horiz-adv-x="560" /> -<glyph glyph-name="check" unicode="" d="m0 154v464q0 66 47 113t114 48h464q35 0 65-14 9-4 10-13 2-10-5-16l-27-28q-6-5-13-5-2 0-5 1-13 3-25 3h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v141q0 8 5 13l36 35q6 6 13 6 3 0 7-2 11-4 11-16v-177q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114z m143 267q0 19 14 32l61 62q14 13 32 13t32-13l147-147 361 361q13 13 31 13t32-13l62-61q13-14 13-32t-13-32l-455-454q-13-14-31-14t-32 14l-240 240q-14 13-14 31z" horiz-adv-x="928.6" /> -<glyph glyph-name="check-empty" unicode="" d="m0 154v464q0 66 47 113t114 48h464q66 0 114-48t47-113v-464q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114z m71 0q0-37 27-63t63-27h464q37 0 63 27t26 63v464q0 37-26 63t-63 26h-464q-37 0-63-26t-27-63v-464z" horiz-adv-x="785.7" /> -<glyph glyph-name="cancel-circled" unicode="" d="m0 350q0 117 58 215t155 156 216 58 215-58 156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215z m216-126q0-15 11-26l50-50q10-11 25-11 15 0 26 11l101 101 101-101q10-11 25-11 15 0 25 11l51 50q10 11 10 26 0 14-10 25l-101 101 101 101q10 11 10 25 0 15-10 26l-51 50q-10 11-25 11-15 0-25-11l-101-101-101 101q-11 11-26 11-15 0-25-11l-50-50q-11-11-11-26 0-14 11-25l101-101-101-101q-11-11-11-25z" horiz-adv-x="857.1" /> -<glyph glyph-name="cancel" unicode="" d="m61 112q0 23 16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38t-15-38l-76-76q-16-15-38-15t-38 15l-164 164-164-164q-16-15-38-15t-38 15l-76 76q-16 16-16 38z" horiz-adv-x="785.7" /> -<glyph glyph-name="plus" unicode="" d="m0 332v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q22 0 38-16t16-38v-107q0-22-16-38t-38-16h-232v-232q0-22-16-38t-38-15h-107q-22 0-38 15t-15 38v232h-232q-23 0-38 16t-16 38z" horiz-adv-x="785.7" /> -<glyph glyph-name="ok-circled" unicode="" d="m0 350q0 117 58 215t155 156 216 58 215-58 156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215z m141-11q0-15 10-25l202-202q10-10 25-10 15 0 25 10l303 303q11 10 11 25 0 16-11 26l-50 50q-11 11-25 11t-26-11l-227-227-126 126q-11 11-25 11t-26-11l-50-50q-10-10-10-26z" horiz-adv-x="857.1" /> -<glyph glyph-name="zoom-in" unicode="" d="m0 386q0 80 31 152t84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51t-21-50-51-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 83-84 126-31 153z m143 0q0-103 73-177t177-73 176 73 74 177-74 176-176 74-177-74-73-176z m71-18v36q0 7 6 12t12 5h125v125q0 8 5 13t13 5h36q7 0 12-5t6-13v-125h125q7 0 12-5t5-12v-36q0-7-5-13t-12-5h-125v-125q0-7-6-13t-12-5h-36q-7 0-13 5t-5 13v125h-125q-7 0-12 5t-6 13z" horiz-adv-x="928.6" /> -<glyph glyph-name="zoom-out" unicode="" d="m0 386q0 80 31 152t84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51t-21-50-51-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 83-84 126-31 153z m143 0q0-103 73-177t177-73 176 73 74 177-74 176-176 74-177-74-73-176z m71-18v36q0 7 6 12t12 5h322q7 0 12-5t5-12v-36q0-7-5-13t-12-5h-322q-7 0-12 5t-6 13z" horiz-adv-x="928.6" /> -<glyph glyph-name="tasks" unicode="" d="m0 29v142q0 15 11 26t25 10h928q15 0 25-10t11-26v-142q0-15-11-26t-25-10h-928q-15 0-25 10t-11 26z m0 285v143q0 15 11 25t25 11h928q15 0 25-11t11-25v-143q0-14-11-25t-25-10h-928q-15 0-25 10t-11 25z m0 286v143q0 14 11 25t25 11h928q15 0 25-11t11-25v-143q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25z m357-250h572v71h-572v-71z m214-286h358v72h-358v-72z m143 572h215v71h-215v-71z" horiz-adv-x="1000" /> -<glyph glyph-name="filter" unicode="" d="m3 685q9 22 33 22h714q23 0 33-22 9-23-8-39l-275-275v-414q0-23-22-33-7-3-14-3-15 0-25 11l-143 143q-10 10-10 25v271l-275 275q-18 16-8 39z" horiz-adv-x="785.7" /> -<glyph glyph-name="mail-alt" unicode="" d="m0 11v443q25-28 56-49 202-137 278-192 32-24 51-37t53-27 61-13h2q28 0 61 13t53 27 51 37q95 68 278 192 32 22 56 49v-443q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63z m0 595q0 43 23 72t66 29h822q36 0 62-26t27-63q0-44-27-84t-68-69q-210-146-262-181-5-4-23-17t-30-22-29-18-33-15-27-5h-2q-12 0-27 5t-33 15-29 18-30 22-23 17q-51 35-147 101t-114 80q-35 23-65 64t-31 77z" horiz-adv-x="1000" /> -<glyph glyph-name="sitemap" unicode="" d="m0-25v179q0 22 16 38t38 15h53v107q0 29 21 51t51 21h285v107h-53q-23 0-38 15t-16 38v179q0 22 16 38t38 16h178q23 0 38-16t16-38v-179q0-22-16-38t-38-15h-53v-107h285q29 0 51-21t21-51v-107h53q23 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-22 0-38 16t-16 38v179q0 22 16 38t38 15h53v107h-285v-107h53q23 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v179q0 22 16 38t38 15h53v107h-285v-107h53q22 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38z" horiz-adv-x="1000" /> -<glyph glyph-name="crop" unicode="" d="m0 511v107q0 8 5 13t13 5h125v125q0 7 5 12t13 5h107q8 0 13-5t5-12v-125h475l137 138q5 5 13 5t13-5q5-6 5-13t-5-13l-138-137v-475h125q8 0 13-5t5-13v-107q0-8-5-13t-13-5h-125v-125q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v125h-482q-8 0-13 5t-5 13v482h-125q-8 0-13 5t-5 13z m286-350l332 332h-332v-332z m25-25h332v332z" horiz-adv-x="928.6" /> -<glyph glyph-name="picture" unicode="🌄" d="m0 11v678q0 37 26 63t63 27h893q37 0 63-27t26-63v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63z m71 0q0-8 6-13t12-5h893q7 0 13 5t5 13v678q0 8-5 13t-13 5h-893q-7 0-12-5t-6-13v-678z m72 53v107l178 179 90-89 285 285 233-232v-250h-786z m0 465q0 44 31 75t76 32 76-32 31-75-31-76-76-32-76 32-31 76z" horiz-adv-x="1071.4" /> -<glyph glyph-name="user" unicode="👤" d="m0 66q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q5 0 24-12t41-27 60-27 75-12 74 12 61 27 41 27 24 12q34 0 62-11t48-30 34-45 24-55 15-60 8-61 2-58q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106z m179 498q0 89 62 152t152 63 151-63 63-152-63-151-151-63-152 63-62 151z" horiz-adv-x="785.7" /> -<glyph glyph-name="shuffle" unicode="🔀" d="m0 82v107q0 8 5 13t13 5h125q27 0 48 9t39 25 28 34 26 43q17 35 43 96 16 36 28 62t30 58 36 56 41 46 50 38 59 24 72 9h143v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13t-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107h-143q-27 0-49-8t-38-25-29-35-25-43q-18-34-43-95-16-37-28-62t-30-59-36-55-41-47-50-38-60-23-71-10h-125q-8 0-13 5t-5 13z m0 500v107q0 8 5 13t13 5h125q139 0 229-125-34-52-77-153-12 25-20 41t-23 35-28 32-36 19-45 8h-125q-8 0-13 5t-5 13z m415-392q33 52 76 152 12-25 20-40t23-36 28-31 35-20 46-8h143v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13t-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107q-18 0-48 0t-45-1-41 1-39 3-36 6-35 10-32 16-33 22-31 30-31 39z" horiz-adv-x="1000" /> -<glyph glyph-name="lock" unicode="🔒" d="m0 46v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74 177-74 73-176v-108h18q23 0 38-15t16-38v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37z m179 375h285v108q0 59-42 101t-101 41-101-41-41-101v-108z" horiz-adv-x="642.9" /> -<glyph glyph-name="link" unicode="🔗" d="m9 600q0 67 47 113l82 82q47 46 114 46 67 0 114-47l114-116q47-46 47-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114t-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114z m107 0q0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 10-8 12-12 11-11q18 17 18 41 0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37z m392-393q0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q15 16 15 37 0 23-15 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40z" horiz-adv-x="928.6" /> -<glyph glyph-name="wrench" unicode="🔧" d="m12-7q0 29 21 51l380 380q22-55 64-97t97-64l-381-381q-21-20-50-20-29 0-51 20l-59 61q-21 20-21 50z m131 36q0-15 10-26t26-10 25 10 10 26-10 25-25 10-26-10-10-25z m286 500q0 103 73 176t177 74q32 0 67-10t60-26q9-6 9-15t-9-16l-163-94v-125l108-60q2 2 44 27t75 45 40 20q8 0 13-5t4-14q0-22-12-60-27-74-92-121t-144-47q-104 0-177 74t-73 176z" horiz-adv-x="928.6" /> -<glyph glyph-name="clock" unicode="🕔" d="m0 350q0 117 58 215t155 156 216 58 215-58 156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215z m125 0q0-83 41-152t110-111 153-41 152 41 110 111 41 152-41 152-110 111-152 41-153-41-110-111-41-152z m161-54v36q0 8 5 13t13 5h125v196q0 8 5 13t12 5h36q8 0 13-5t5-13v-250q0-7-5-12t-13-5h-178q-8 0-13 5t-5 12z" horiz-adv-x="857.1" /> -<glyph glyph-name="block" unicode="🚫" d="m0 352q0 87 34 167t91 137 137 91 167 34 166-34 137-91 91-137 34-167-34-168-91-137-137-92-166-34-167 34-137 92-91 137-34 168z m125 0q0-91 50-167l421 421q-75 50-167 50-83 0-153-40t-110-112-41-152z m138-256q76-50 166-50 62 0 118 25t96 65 65 97 24 119q0 90-48 164z" horiz-adv-x="857.1" /> +<glyph glyph-name="check" unicode="" d="m786 331v-177q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q35 0 65-14 9-4 10-13 2-10-5-16l-27-28q-6-5-13-5-2 0-5 1-13 3-25 3h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v141q0 8 5 13l36 35q6 6 13 6 3 0 7-2 11-4 11-16z m129 273l-455-454q-13-14-31-14t-32 14l-240 240q-14 13-14 31t14 32l61 62q14 13 32 13t32-13l147-147 361 361q13 13 31 13t32-13l62-61q13-14 13-32t-13-32z" horiz-adv-x="928.6" /> +<glyph glyph-name="check-empty" unicode="" d="m625 707h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v464q0 37-26 63t-63 26z m161-89v-464q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q66 0 114-48t47-113z" horiz-adv-x="785.7" /> +<glyph glyph-name="cancel-circled" unicode="" d="m641 224q0 14-10 25l-101 101 101 101q10 11 10 25 0 15-10 26l-51 50q-10 11-25 11-15 0-25-11l-101-101-101 101q-11 11-26 11-15 0-25-11l-50-50q-11-11-11-26 0-14 11-25l101-101-101-101q-11-11-11-25 0-15 11-26l50-50q10-11 25-11 15 0 26 11l101 101 101-101q10-11 25-11 15 0 25 11l51 50q10 11 10 26z m216 126q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" /> +<glyph glyph-name="cancel" unicode="" d="m724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" /> +<glyph glyph-name="plus" unicode="" d="m786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q22 0 38-16t16-38z" horiz-adv-x="785.7" /> +<glyph glyph-name="ok-circled" unicode="" d="m717 440q0 16-11 26l-50 50q-11 11-25 11t-26-11l-227-227-126 126q-11 11-25 11t-26-11l-50-50q-10-10-10-26 0-15 10-25l202-202q10-10 25-10 15 0 25 10l303 303q11 10 11 25z m140-90q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" /> +<glyph glyph-name="heart-broken" unicode="" d="m0 530q0 103 73 176t177 73q81 0 147-47l-14-250q0-12 9-20t21-9h10q12 0 18-8t3-20l-57-172q-4-12-2-13t9 8l194 267q7 9 4 16t-16 7h-77q-12 0-17 8t-1 18l82 183q57 32 124 32 103 0 177-73t73-176q0-94-63-166l-343-403q-25-30-62-30t-63 30l-342 403q-64 72-64 166z" horiz-adv-x="937.5" /> +<glyph glyph-name="zoom-in" unicode="" d="m571 404v-36q0-7-5-13t-12-5h-125v-125q0-7-6-13t-12-5h-36q-7 0-13 5t-5 13v125h-125q-7 0-12 5t-6 13v36q0 7 6 12t12 5h125v125q0 8 5 13t13 5h36q7 0 12-5t6-13v-125h125q7 0 12-5t5-12z m72-18q0 103-74 176t-176 74-177-74-73-176 73-177 177-73 176 73 74 177z m286-465q0-29-21-50t-51-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" /> +<glyph glyph-name="zoom-out" unicode="" d="m571 404v-36q0-7-5-13t-12-5h-322q-7 0-12 5t-6 13v36q0 7 6 12t12 5h322q7 0 12-5t5-12z m72-18q0 103-74 176t-176 74-177-74-73-176 73-177 177-73 176 73 74 177z m286-465q0-29-21-50t-51-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 152-31 126-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" /> +<glyph glyph-name="tasks" unicode="" d="m571 64h358v72h-358v-72z m-214 286h572v71h-572v-71z m357 286h215v71h-215v-71z m286-465v-142q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v142q0 15 11 26t25 10h928q15 0 25-10t11-26z m0 286v-143q0-14-11-25t-25-10h-928q-15 0-25 10t-11 25v143q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 286v-143q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v143q0 14 11 25t25 11h928q15 0 25-11t11-25z" horiz-adv-x="1000" /> +<glyph glyph-name="filter" unicode="" d="m783 685q9-23-8-39l-275-275v-414q0-23-22-33-7-3-14-3-15 0-25 11l-143 143q-10 10-10 25v271l-275 275q-18 16-8 39 9 22 33 22h714q23 0 33-22z" horiz-adv-x="785.7" /> +<glyph glyph-name="mail-alt" unicode="" d="m1000 454v-443q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v443q25-28 56-49 202-137 278-192 32-24 51-37t53-27 61-13h2q28 0 61 13t53 27 51 37q95 68 278 192 32 22 56 49z m0 164q0-44-27-84t-68-69q-210-146-262-181-5-4-23-17t-30-22-29-18-33-15-27-5h-2q-12 0-27 5t-33 15-29 18-30 22-23 17q-51 35-147 101t-114 80q-35 23-65 64t-31 77q0 43 23 72t66 29h822q36 0 62-26t27-63z" horiz-adv-x="1000" /> +<glyph glyph-name="sitemap" unicode="" d="m1000 154v-179q0-22-16-38t-38-16h-178q-22 0-38 16t-16 38v179q0 22 16 38t38 15h53v107h-285v-107h53q23 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v179q0 22 16 38t38 15h53v107h-285v-107h53q22 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v179q0 22 16 38t38 15h53v107q0 29 21 51t51 21h285v107h-53q-23 0-38 15t-16 38v179q0 22 16 38t38 16h178q23 0 38-16t16-38v-179q0-22-16-38t-38-15h-53v-107h285q29 0 51-21t21-51v-107h53q23 0 38-15t16-38z" horiz-adv-x="1000" /> +<glyph glyph-name="crop" unicode="" d="m311 136h332v332z m-25 25l332 332h-332v-332z m643-43v-107q0-8-5-13t-13-5h-125v-125q0-8-5-13t-13-5h-107q-8 0-13 5t-5 13v125h-482q-8 0-13 5t-5 13v482h-125q-8 0-13 5t-5 13v107q0 8 5 13t13 5h125v125q0 7 5 12t13 5h107q8 0 13-5t5-12v-125h475l137 138q5 5 13 5t13-5q5-6 5-13t-5-13l-138-137v-475h125q8 0 13-5t5-13z" horiz-adv-x="928.6" /> +<glyph glyph-name="picture" unicode="🌄" d="m357 529q0-45-31-76t-76-32-76 32-31 76 31 75 76 32 76-32 31-75z m572-215v-250h-786v107l178 179 90-89 285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-8 6-13t12-5h893q7 0 13 5t5 13v678q0 7-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" /> +<glyph glyph-name="user" unicode="👤" d="m786 66q0-67-41-106t-108-39h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q5 0 24-12t41-27 60-27 75-12 74 12 61 27 41 27 24 12q34 0 62-11t48-30 34-45 24-55 15-60 8-61 2-58z m-179 498q0-88-63-151t-151-63-152 63-62 151 62 152 152 63 151-63 63-152z" horiz-adv-x="785.7" /> +<glyph glyph-name="shuffle" unicode="🔀" d="m372 582q-34-52-77-153-12 25-20 41t-23 35-28 32-36 19-45 8h-125q-8 0-13 5t-5 13v107q0 8 5 13t13 5h125q139 0 229-125z m628-446q0-8-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107q-18 0-48 0t-45-1-41 1-39 3-36 6-35 10-32 16-33 22-31 30-31 39q33 52 76 152 12-25 20-40t23-36 28-31 35-20 46-8h143v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13z m0 500q0-8-5-13l-179-179q-5-5-12-5-8 0-13 6t-5 12v107h-143q-27 0-49-8t-38-25-29-35-25-43q-18-34-43-95-16-37-28-62t-30-59-36-55-41-47-50-38-60-23-71-10h-125q-8 0-13 5t-5 13v107q0 8 5 13t13 5h125q27 0 48 9t39 25 28 34 26 43q17 35 43 96 16 36 28 62t30 58 36 56 41 46 50 38 59 24 72 9h143v107q0 8 5 13t13 5q6 0 13-5l178-178q5-5 5-13z" horiz-adv-x="1000" /> +<glyph glyph-name="lock" unicode="🔒" d="m179 421h285v108q0 59-42 101t-101 41-101-41-41-101v-108z m464-53v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74 177-74 73-176v-108h18q23 0 38-15t16-38z" horiz-adv-x="642.9" /> +<glyph glyph-name="link" unicode="🔗" d="m812 171q0 23-15 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q15 16 15 37z m-392 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 10-8 12-12 11-11q18 17 18 41z m500-394q0-67-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l114-116q47-46 47-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" /> +<glyph glyph-name="wrench" unicode="🔧" d="m214 29q0 14-10 25t-25 10-26-10-10-25 10-26 26-10 25 10 10 26z m360 234l-381-381q-21-20-50-20-29 0-51 20l-59 61q-21 20-21 50 0 29 21 51l380 380q22-55 64-97t97-64z m353 243q0-22-12-59-27-75-92-122t-144-46q-104 0-177 73t-73 177 73 176 177 74q32 0 67-10t60-26q9-6 9-15t-9-16l-163-94v-125l108-60q2 2 44 27t75 45 40 20q8 0 13-5t4-14z" horiz-adv-x="928.6" /> +<glyph glyph-name="clock" unicode="🕔" d="m500 546v-250q0-7-5-12t-13-5h-178q-8 0-13 5t-5 12v36q0 8 5 13t13 5h125v196q0 8 5 13t12 5h36q8 0 13-5t5-13z m232-196q0 83-41 152t-110 111-152 41-153-41-110-111-41-152 41-152 110-111 153-41 152 41 110 111 41 152z m125 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" /> +<glyph glyph-name="block" unicode="🚫" d="m732 352q0 90-48 164l-421-420q76-50 166-50 62 0 118 25t96 65 65 97 24 119z m-557-167l421 421q-75 50-167 50-83 0-153-40t-110-112-41-152q0-91 50-167z m682 167q0-88-34-168t-91-137-137-92-166-34-167 34-137 92-91 137-34 168 34 167 91 137 137 91 167 34 166-34 137-91 91-137 34-167z" horiz-adv-x="857.1" /> </font> </defs> </svg>
\ No newline at end of file diff --git a/admin/themes/default/fontello/font/fontello.ttf b/admin/themes/default/fontello/font/fontello.ttf Binary files differindex a73ac9549..2ea76648b 100644 --- a/admin/themes/default/fontello/font/fontello.ttf +++ b/admin/themes/default/fontello/font/fontello.ttf diff --git a/admin/themes/default/fontello/font/fontello.woff b/admin/themes/default/fontello/font/fontello.woff Binary files differindex 964384e4d..0da2b5825 100644 --- a/admin/themes/default/fontello/font/fontello.woff +++ b/admin/themes/default/fontello/font/fontello.woff diff --git a/admin/themes/default/icon/index.php b/admin/themes/default/icon/index.php index c8de97f60..0b96c3efa 100644 --- a/admin/themes/default/icon/index.php +++ b/admin/themes/default/icon/index.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/themes/default/index.php b/admin/themes/default/index.php index c8de97f60..0b96c3efa 100644 --- a/admin/themes/default/index.php +++ b/admin/themes/default/index.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/themes/default/template/admin.tpl b/admin/themes/default/template/admin.tpl index 67e0832bb..318075406 100644 --- a/admin/themes/default/template/admin.tpl +++ b/admin/themes/default/template/admin.tpl @@ -42,6 +42,9 @@ $('#menubar').lightAccordion({ {if $NB_PHOTOS_IN_CADDIE > 0} <li><a href="{$U_CADDIE}"><i class="icon-flag"></i>{'Caddie'|@translate}<span class="adminMenubarCounter">{$NB_PHOTOS_IN_CADDIE}</span></a></li> {/if} +{if $NB_ORPHANS > 0} + <li><a href="{$U_ORPHANS}"><i class="icon-heart-broken"></i>{'Orphans'|@translate}<span class="adminMenubarCounter">{$NB_ORPHANS}</span></a></li> +{/if} </ul> </dd> </dl> diff --git a/admin/themes/default/template/album_notification.tpl b/admin/themes/default/template/album_notification.tpl index 32aa8e414..1b3aa73bd 100644 --- a/admin/themes/default/template/album_notification.tpl +++ b/admin/themes/default/template/album_notification.tpl @@ -1,3 +1,59 @@ +{combine_script id='jquery.selectize' load='footer' path='themes/default/js/plugins/selectize.min.js'} +{combine_css id='jquery.selectize' path="themes/default/js/plugins/selectize.{$themeconf.colorscheme}.css"} + +{footer_script} +jQuery(document).ready(function() { + jQuery("select[name=who]").change(function () { + checkWhoOptions(); + }); + + checkWhoOptions(); + + function checkWhoOptions() { + var option = jQuery("select[name=who] option:selected").val(); + jQuery(".who_option").hide(); + jQuery(".who_" + option).show(); + } + + jQuery(".who_option select").selectize({ + plugins: ['remove_button'] + }); + + jQuery("form#categoryNotify").submit(function(e) { + var who_selected = false; + var who_option = jQuery("select[name=who] option:selected").val(); + + if (jQuery(".who_" + who_option + " select").length > 0) { + if (jQuery(".who_" + who_option + " select option:selected").length > 0) { + who_selected = true; + } + } + + if (!who_selected) { + jQuery(".actionButtons .errors").show(); + e.preventDefault(); + } + else { + jQuery(".actionButtons .errors").hide(); + console.log("form can be submited"); + } + }); +}); +{/footer_script} + +{html_style} +.who_option { + margin-top:5px; +} + +span.errors { + background-image:none; + padding:2px 5px; + margin:0; + border-radius:5px; +} +{/html_style} + <div class="titrePage"> <h2><span style="letter-spacing:0">{$CATEGORIES_NAV}</span> › {'Edit album'|@translate} {$TABSHEET_TITLE}</h2> </div> @@ -5,36 +61,58 @@ <form action="{$F_ACTION}" method="post" id="categoryNotify"> <fieldset id="emailCatInfo"> - <legend>{'Send an information email to group members'|@translate}</legend> - -{if isset($group_mail_options)} + <legend>{'Send mail to users'|@translate}</legend> <p> - <strong>{'Group'|@translate}</strong> - <br> - <select name="group"> - {html_options options=$group_mail_options} + <strong>{'Recipients'|@translate}</strong> + <select name="who"> + <option value="group">{'Group'|translate}</option> + <option value="users">{'Users'|translate}</option> </select> </p> + <p class="who_option who_group"> +{if isset($group_mail_options)} + <select name="group" placeholder="{'Type in a search term'|translate}" style="width:524px;"> + {html_options options=$group_mail_options} + </select> +{elseif isset($no_group_in_gallery) and $no_group_in_gallery} + {'There is no group in this gallery.'|@translate} <a href="admin.php?page=group_list" class="externalLink">{'Group management'|@translate}</a> +{else} + {'No group is permitted to see this private album'|@translate}. + <a href="{$permission_url}" class="externalLink">{'Permission management'|@translate}</a> +{/if} + </p> + + <p class="who_option who_users"> +{if isset($user_options)} + <select name="users[]" multiple placeholder="{'Type in a search term'|translate}" style="width:524px;"> + {html_options options=$user_options selected=$user_options_selected} + </select> +{else} + {'No user is permitted to see this private album'|@translate}. + <a href="{$permission_url}" class="externalLink">{'Permission management'|@translate}</a> +{/if} + </p> + <p> <strong>{'Complementary mail content'|@translate}</strong> <br> <textarea cols="50" rows="5" name="mail_content" id="mail_content" class="description">{$MAIL_CONTENT}</textarea> </p> +{if isset($auth_key_duration)} <p> - <input class="submit" type="submit" value="{'Send'|@translate}" name="submitEmail"> + {'Each email sent will contain its own automatic authentication key on links, valid for %s.'|translate:$auth_key_duration} + <br>{'For security reason, authentication keys do not work for administrators.'|translate} </p> +{/if} -{elseif isset($no_group_in_gallery) and $no_group_in_gallery} - <p>{'There is no group in this gallery.'|@translate} <a href="admin.php?page=group_list" class="externalLink">{'Group management'|@translate}</a></p> -{else} - <p> - {'No group is permitted to see this private album'|@translate}. - <a href="{$permission_url}" class="externalLink">{'Permission management'|@translate}</a> + <p class="actionButtons"> + <input class="submit" type="submit" value="{'Send'|@translate}" name="submitEmail"> + <span class="errors" style="display:none">✘ {'No recipient selected'|translate}</span> </p> -{/if} + </fieldset> </form> diff --git a/admin/themes/default/template/batch_manager_global.tpl b/admin/themes/default/template/batch_manager_global.tpl index 46262c0ff..c3be514b4 100644 --- a/admin/themes/default/template/batch_manager_global.tpl +++ b/admin/themes/default/template/batch_manager_global.tpl @@ -268,6 +268,7 @@ $(document).ready(function() { jQuery("select[name=filter_prefilter]").change(function() { jQuery("#empty_caddie").toggle(jQuery(this).val() == "caddie"); jQuery("#duplicates_options").toggle(jQuery(this).val() == "duplicates"); + jQuery("#delete_orphans").toggle(jQuery(this).val() == "no_album"); }); }); @@ -329,10 +330,15 @@ var sliders = { {'Predefined filter'|@translate} <select name="filter_prefilter"> {foreach from=$prefilters item=prefilter} - <option value="{$prefilter.ID}" {if isset($filter.prefilter) && $filter.prefilter eq $prefilter.ID}selected="selected"{/if}>{$prefilter.NAME}</option> + {assign 'optionClass' ''} + {if $prefilter.ID eq 'no_album'}{assign 'optionClass' 'icon-heart-broken'}{/if} + {if $prefilter.ID eq 'caddie'}{assign 'optionClass' 'icon-flag'}{/if} + + <option value="{$prefilter.ID}" class="{$optionClass}" {if isset($filter.prefilter) && $filter.prefilter eq $prefilter.ID}selected="selected"{/if}>{$prefilter.NAME}</option> {/foreach} </select> <a id="empty_caddie" href="admin.php?page=batch_manager&action=empty_caddie" style="{if !isset($filter.prefilter) or $filter.prefilter ne 'caddie'}display:none{/if}">{'Empty caddie'|translate}</a> + <a id="delete_orphans" href="admin.php?page=batch_manager&action=delete_orphans" style="{if !isset($filter.prefilter) or $filter.prefilter ne 'no_album'}display:none{/if}">{'Delete %d orphan photos'|translate:$NB_ORPHANS}</a> <span id="duplicates_options" style="{if !isset($filter.prefilter) or $filter.prefilter ne 'duplicates'}display:none{/if}"> {'based on'|translate} diff --git a/admin/themes/default/template/cat_modify.tpl b/admin/themes/default/template/cat_modify.tpl index d71ad0528..013cf9553 100644 --- a/admin/themes/default/template/cat_modify.tpl +++ b/admin/themes/default/template/cat_modify.tpl @@ -28,6 +28,69 @@ categoriesCache.selectize(jQuery('[data-selectize=categories]'), { return filtered; } }); + +jQuery(document).ready(function() { + jQuery(document).on('click', '.refreshRepresentative', function(e) { + var $this = jQuery(this); + var method = 'pwg.categories.refreshRepresentative'; + + jQuery.ajax({ + url: "ws.php?format=json&method="+method, + type:"POST", + data: { + category_id: $this.data("category_id") + }, + success:function(data) { + var data = jQuery.parseJSON(data); + if (data.stat == 'ok') { + jQuery(".albumThumbnailImage") + .attr('href', data.result.url) + .find("img").attr('src', data.result.src) + .end().show(); + + jQuery(".albumThumbnailRandom").hide(); + } + else { + alert("error on "+method); + } + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + alert("serious error on "+method); + } + }); + + e.preventDefault(); + }); + + jQuery(document).on('click', '.deleteRepresentative', function(e) { + var $this = jQuery(this); + var method = 'pwg.categories.deleteRepresentative'; + + jQuery.ajax({ + url: "ws.php?format=json&method="+method, + type:"POST", + data: { + category_id: $this.data("category_id") + }, + success:function(data) { + var data = jQuery.parseJSON(data); + if (data.stat == 'ok') { + jQuery(".albumThumbnailImage").hide(); + jQuery(".albumThumbnailRandom").show(); + } + else { + alert("error on "+method); + } + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + alert("serious error on "+method); + } + }); + + e.preventDefault(); + }); +}); + {/footer_script} @@ -35,7 +98,7 @@ categoriesCache.selectize(jQuery('[data-selectize=categories]'), { <h2><span style="letter-spacing:0">{$CATEGORIES_NAV}</span> › {'Edit album'|@translate} {$TABSHEET_TITLE}</h2> </div> -<form action="{$F_ACTION}" method="POST" id="catModify"> +<div id="catModify"> <fieldset> <legend>{'Informations'|@translate}</legend> @@ -44,19 +107,18 @@ categoriesCache.selectize(jQuery('[data-selectize=categories]'), { <tr> <td id="albumThumbnail"> {if isset($representant) } - {if isset($representant.picture) } - <a href="{$representant.picture.URL}"><img src="{$representant.picture.SRC}" alt=""></a> - {else} - <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/category_representant_random.png" alt="{'Random photo'|@translate}"> - {/if} + <a class="albumThumbnailImage" style="{if !isset($representant.picture)}display:none{/if}" href="{$representant.picture.url}"><img src="{$representant.picture.src}"></a> + <img class="albumThumbnailRandom" style="{if isset($representant.picture)}display:none{/if}" src="{$ROOT_URL}{$themeconf.admin_icon_dir}/category_representant_random.png" alt="{'Random photo'|@translate}"> +<p class="albumThumbnailActions"> {if $representant.ALLOW_SET_RANDOM } - <p style="text-align:center;"><input class="submit" type="submit" name="set_random_representant" value="{'Refresh'|@translate}" title="{'Find a new representant by random'|@translate}"></p> + <a href="#refresh" data-category_id="{$CAT_ID}" class="refreshRepresentative" title="{'Find a new representant by random'|@translate}">{'Refresh'|@translate}</a> {/if} {if isset($representant.ALLOW_DELETE) } - <p><input class="submit" type="submit" name="delete_representant" value="{'Delete Representant'|@translate}"></p> + | <a href="#delete" data-category_id="{$CAT_ID}" class="deleteRepresentative" title="{'Delete Representant'|@translate}">{'Delete'|translate}</a> {/if} +</p> {/if} </td> @@ -90,6 +152,7 @@ categoriesCache.selectize(jQuery('[data-selectize=categories]'), { </fieldset> +<form action="{$F_ACTION}" method="POST"> <fieldset> <legend>{'Properties'|@translate}</legend> <p> @@ -137,3 +200,4 @@ categoriesCache.selectize(jQuery('[data-selectize=categories]'), { </fieldset> </form> +</div> {* #catModify *}
\ No newline at end of file diff --git a/admin/themes/default/template/configuration_watermark.tpl b/admin/themes/default/template/configuration_watermark.tpl index 11343057d..24e2a346e 100644 --- a/admin/themes/default/template/configuration_watermark.tpl +++ b/admin/themes/default/template/configuration_watermark.tpl @@ -111,6 +111,13 @@ <input size="3" maxlength="3" type="text" name="w[xrepeat]" value="{$watermark.xrepeat}"{if isset($ferrors.watermark.xrepeat)} class="dError"{/if}> {if isset($ferrors.watermark.xrepeat)}<span class="dErrorDesc" title="{$ferrors.watermark.xrepeat}">!</span>{/if} </label> + + <br> + <label>{'Y Repeat'|translate} + <input size="3" maxlength="3" type="text" name="w[yrepeat]" value="{$watermark.yrepeat}"{if isset($ferrors.watermark.yrepeat)} class="dError"{/if}> + {if isset($ferrors.watermark.yrepeat)}<span class="dErrorDesc" title="{$ferrors.watermark.yrepeat}">!</span>{/if} + </label> + </div> </li> diff --git a/admin/themes/default/template/notification_by_mail.tpl b/admin/themes/default/template/notification_by_mail.tpl index 0be49bdd1..95506616c 100644 --- a/admin/themes/default/template/notification_by_mail.tpl +++ b/admin/themes/default/template/notification_by_mail.tpl @@ -127,6 +127,16 @@ jQuery(document).ready(function(){ </table> </fieldset> +{if isset($auth_key_duration)} + <fieldset> + <legend>{'Informations'|@translate}</legend> + <p> + {'Each email sent will contain its own automatic authentication key on links, valid for %s.'|translate:$auth_key_duration} + <br>{'For security reason, authentication keys do not work for administrators.'|translate} + </p> + </fieldset> +{/if} + <p> <input type="submit" value="{'Send'|@translate}" name="send_submit"> </p> diff --git a/admin/themes/default/template/photos_add_direct.tpl b/admin/themes/default/template/photos_add_direct.tpl index ad9e80b07..71663fc20 100644 --- a/admin/themes/default/template/photos_add_direct.tpl +++ b/admin/themes/default/template/photos_add_direct.tpl @@ -86,7 +86,7 @@ jQuery(document).ready(function(){ // url : '../upload.php', url : 'ws.php?method=pwg.images.upload&format=json', - chunk_size: '500kb', + chunk_size: '{/literal}{$chunk_size}{literal}kb', filters : { // Maximum file size diff --git a/admin/themes/default/template/picture_modify.tpl b/admin/themes/default/template/picture_modify.tpl index aeba2dd6f..71b3d2ba4 100644 --- a/admin/themes/default/template/picture_modify.tpl +++ b/admin/themes/default/template/picture_modify.tpl @@ -63,6 +63,7 @@ jQuery("a.preview-box").colorbox({ <li>{$INTRO.add_date}</li> <li>{$INTRO.added_by}</li> <li>{$INTRO.size}</li> + <li>{$INTRO.formats}</li> <li>{$INTRO.stats}</li> <li>{$INTRO.id}</li> </ul> diff --git a/admin/themes/default/template/user_list.tpl b/admin/themes/default/template/user_list.tpl index 39e3318b9..54b8b936e 100644 --- a/admin/themes/default/template/user_list.tpl +++ b/admin/themes/default/template/user_list.tpl @@ -1,3 +1,4 @@ +{include file='include/colorbox.inc.tpl'} {combine_script id='common' load='footer' path='admin/themes/default/js/common.js'} {combine_script id='jquery.dataTables' load='footer' path='themes/default/js/plugins/jquery.dataTables.js'} @@ -258,11 +259,6 @@ jQuery(document).ready(function() { user.lastVisit_string = sprintf(lastVisit_pattern, user.last_visit_string, user.last_visit_since); } - user.updateString = sprintf( - "{/literal}{'User %s updated'|translate|escape:javascript}{literal}", - user.username - ); - user.email = user.email || ''; user.statusLabel = statusLabels[user.status]; @@ -274,7 +270,7 @@ jQuery(document).ready(function() { jQuery("script.userDetails").html() ); - jQuery("#user"+userId).append(template(user)); + jQuery("#user"+userId).html(template(user)); /* groups select */ jQuery('[data-selectize=groups]').selectize({ @@ -339,10 +335,19 @@ jQuery(document).ready(function() { console.log('technical error loading user details'); } }); - - return '<div id="user'+userId+'" class="userProperties"><img class="loading" src="themes/default/images/ajax-loader-small.gif"></div>'; + + jQuery(".user_form_popin") + .attr("id", "user"+userId) + .html('<div class="popinWait"><span><img class="loading" src="themes/default/images/ajax-loader-small.gif"> {/literal}{'Loading...'|translate|escape:'javascript'}{literal}</span></div>') + ; } +jQuery(document).on('click', '.close-user-details', function(e) { + jQuery('.user_form_popin').colorbox.close(); + e.preventDefault(); +}); + + /* change password */ jQuery(document).on('click', '.changePasswordOpen', function() { var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); @@ -474,7 +479,7 @@ jQuery(document).ready(function() { jQuery('#user'+userId+' .userDelete .loading').show(); }, success:function(data) { - oTable.fnDraw(); + jQuery('.user_form_popin').colorbox.close(); jQuery('#showAddUser .infos').html('✔ User '+username+' deleted').show(); }, error:function(XMLHttpRequest, textStatus, errorThrows) { @@ -520,8 +525,25 @@ jQuery(document).ready(function() { }, success:function(data) { jQuery('#user'+userId+' .submitWait').hide(); - jQuery('#user'+userId+' input[type=submit]').hide(); - jQuery('#user'+userId+' .propertiesUpdateDone').show(); + + var html_message; + + var data = jQuery.parseJSON(data); + if (data.stat == 'ok') { + var message = sprintf( + "{/literal}{'User %s updated'|translate|escape:javascript}{literal}", + data.result.users[0].username + ); + + html_message = '<span class="infos">✔ '+message+'</span>'; + } + else { + html_message = '<span class="errors">✘ '+data.message+'</span>'; + } + + jQuery('#user'+userId+' .propertiesUpdateDone') + .html(html_message) + .show(); }, error:function(XMLHttpRequest, textStatus, errorThrows) { jQuery('#user'+userId+' .submitWait').hide(); @@ -537,28 +559,17 @@ jQuery(document).ready(function() { */ jQuery(document).on('click', '#userList tbody td .openUserDetails', function() { var nTr = this.parentNode.parentNode; - if (jQuery(this).hasClass('icon-cancel-circled')) { - /* This row is already open - close it */ - jQuery(this) - .removeClass('icon-cancel-circled') - .addClass('icon-pencil') - .attr('title', "{/literal}{'Open user details'|translate|escape:'javascript'}{literal}") - .html("{/literal}{'edit'|translate|escape:'javascript'}{literal}") - ; - - oTable.fnClose( nTr ); - } - else { - /* Open this row */ - jQuery(this) - .removeClass('icon-pencil') - .addClass('icon-cancel-circled') - .attr('title', "{/literal}{'Close user details'|translate|escape:'javascript'}{literal}") - .html("{/literal}{'close'|translate|escape:'javascript'}{literal}") - ; - - oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' ); - } + + jQuery.colorbox({ + inline:true, + title:"{/literal}{'Edit user'|translate}{literal}", + href:".user_form_popin", + onClosed: function() { + oTable.fnDraw(); + } + }); + + fnFormatDetails(oTable, nTr); }); @@ -1151,9 +1162,16 @@ span.infos, span.errors {background-image:none; padding:2px 5px; margin:0;border <div style="clear:both"></div> </div> {* userPropertiesContainer *} - <span class="infos propertiesUpdateDone" style="display:none">✔ <%- user.updateString %></span> - - <input type="submit" value="{'Update user'|translate|escape:html}" style="display:none;" data-user_id="<%- user.id %>"> + <input type="submit" value="{'Update user'|translate|escape:html}" data-user_id="<%- user.id %>"> <img class="submitWait" src="themes/default/images/ajax-loader-small.gif" style="display:none"> + <a href="#close" class="icon-cancel-circled close-user-details" title="{'Close user details'|translate}">{'close'|translate}</a> + <span class="propertiesUpdateDone" style="display:none"> + <span class="infos">✔ ...</span> + <span class="errors">✘ ...</span> + </span> </form> </script> + +<div style="display:none"> + <div class="user_form_popin userProperties"></div> +</div>
\ No newline at end of file diff --git a/admin/themes/default/theme.css b/admin/themes/default/theme.css index 4a151b9a4..0aa0dba1a 100644 --- a/admin/themes/default/theme.css +++ b/admin/themes/default/theme.css @@ -213,7 +213,7 @@ LI.menuLi { } /* */ -FORM#catModify TABLE { width: auto; } +#catModify TABLE { width: auto; } #catModify p { line-height: 20px; @@ -221,6 +221,11 @@ FORM#catModify TABLE { width: auto; } text-align: left; } +#catModify p.albumThumbnailActions { + text-align:center; + white-space:nowrap; +} + FIELDSET.elementEdit .thumb { display: block; float: right; @@ -1223,6 +1228,21 @@ a.group_perm { .userProperty {width:340px;float:left;margin-bottom:15px;} .userActions {float:right;text-align:right;} +.user_form_popin { + width:750px; + height:430px; + padding:20px; +} + +.userProperties form { + text-align:left; +} + +.popinWait { + padding-top:200px; +} + + .preview-box.icon-zoom-in { display:block; position:relative; diff --git a/admin/themes/roma/index.php b/admin/themes/roma/index.php index c8de97f60..0b96c3efa 100644 --- a/admin/themes/roma/index.php +++ b/admin/themes/roma/index.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/themes_installed.php b/admin/themes_installed.php index eb16dc144..f798f21f1 100644 --- a/admin/themes_installed.php +++ b/admin/themes_installed.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/themes_new.php b/admin/themes_new.php index 803327e8d..e1360792b 100644 --- a/admin/themes_new.php +++ b/admin/themes_new.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/updates.php b/admin/updates.php index bfd6b6a1f..a38a0e538 100644 --- a/admin/updates.php +++ b/admin/updates.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
-// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
diff --git a/admin/updates_ext.php b/admin/updates_ext.php index 72b2e13a7..c8586f08d 100644 --- a/admin/updates_ext.php +++ b/admin/updates_ext.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
-// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
diff --git a/admin/updates_pwg.php b/admin/updates_pwg.php index 4619ad3bd..023ff8e48 100644 --- a/admin/updates_pwg.php +++ b/admin/updates_pwg.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+
// | Piwigo - a PHP based photo gallery |
// +-----------------------------------------------------------------------+
-// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org |
+// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org |
// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net |
// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick |
// +-----------------------------------------------------------------------+
diff --git a/admin/user_list.php b/admin/user_list.php index 83815f66f..183f771f7 100644 --- a/admin/user_list.php +++ b/admin/user_list.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/user_list_backend.php b/admin/user_list_backend.php index 1edaa1369..290873c87 100644 --- a/admin/user_list_backend.php +++ b/admin/user_list_backend.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ diff --git a/admin/user_perm.php b/admin/user_perm.php index e40c064c2..68b8c60c5 100644 --- a/admin/user_perm.php +++ b/admin/user_perm.php @@ -2,7 +2,7 @@ // +-----------------------------------------------------------------------+ // | Piwigo - a PHP based photo gallery | // +-----------------------------------------------------------------------+ -// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2008-2016 Piwigo Team http://piwigo.org | // | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | // | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | // +-----------------------------------------------------------------------+ |