Commit 2d7dde13 authored by David Prévot's avatar David Prévot

Imported Upstream version 3.1.0~rc3

parent cf6001d5
......@@ -64,7 +64,7 @@ function action_purger_dist($arg = null)
// on ne supprime que _CACHE_PLUGINS_OPT qui declenche la reconstruction des 3
// _CACHE_PIPELINES _CACHE_PLUGINS_PATH et _CACHE_PLUGINS_FCT
// pour eviter des problemes de concurence
// cf http://core.spip.org/issues/2989
// cf http://core.spip.net/issues/2989
//@spip_unlink(_CACHE_PIPELINES);
//@spip_unlink(_CACHE_PLUGINS_PATH);
//@spip_unlink(_CACHE_PLUGINS_FCT);
......
......@@ -165,7 +165,7 @@ function logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $lien, $p,
if ($fichier) return $code;
// class spip_logos a supprimer ulterieurement (transition douce vers spip_logo)
// cf http://core.spip.org/issues/2483
// cf http://core.spip.net/issues/2483
$class = "spip_logo ";
if ($align) $class .= "spip_logo_$align ";
$class .= "spip_logos";
......
......@@ -386,6 +386,20 @@ function autoriser_changerlangue_dist($faire, $type, $id, $qui, $opt) {
$multi_secteurs = lire_config('multi_secteurs');
$champs = objet_info($type, 'field');
if ($multi_secteurs == 'oui' and array_key_exists('id_rubrique', $champs)) { // multilinguisme par secteur et objet rattaché à une rubrique
$primary = id_table_objet($type);
if ($table!='spip_rubriques'){
$id_rubrique = sql_getfetsel('id_rubrique', "$table", "$primary=" . intval($id));
} else {
$id_rubrique = $id;
}
$id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
if (!$id_secteur>0)
$id_secteur = $id_rubrique;
$langue_secteur = sql_getfetsel('lang', "spip_rubriques", "id_rubrique=" . intval($id_secteur));
$langue_objet = sql_getfetsel('lang', "$table", "$primary=" . intval($id));
if ($langue_secteur!=$langue_objet){ // configuration incohérente, on laisse l'utilisateur corriger la situation
return true;
}
if ($table != 'spip_rubriques') { // le choix de la langue se fait seulement sur les rubriques
return false;
} else {
......@@ -400,6 +414,20 @@ function autoriser_changerlangue_dist($faire, $type, $id, $qui, $opt) {
return autoriser('modifier',$type,$id,$qui,$opt);
}
/**
* Autorisation de changer le lien de traduction
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_changertraduction_dist($faire, $type, $id, $qui, $opt) {
return autoriser('modifier',$type,$id,$qui,$opt);
}
/**
* Autorisation de changer la date d'un contenu
*
......
......@@ -4372,7 +4372,7 @@ function encoder_contexte_ajax($c, $form = '', $emboite = NULL, $ajaxid = '') {
$env = $c;
if (function_exists('gzdeflate') && function_exists('gzinflate')) {
$env = gzdeflate($env);
// http://core.spip.org/issues/2667 | https://bugs.php.net/bug.php?id=61287
// http://core.spip.net/issues/2667 | https://bugs.php.net/bug.php?id=61287
if (substr(phpversion(),0,5) == '5.4.0' AND !@gzinflate($env)) {
$cache_contextes_ajax = true;
spip_log("Contextes AJAX forces en fichiers ! Erreur PHP 5.4.0", _LOG_AVERTISSEMENT);
......
......@@ -152,7 +152,7 @@ function surcharger_langue($fichiers) {
}
if (is_array($surcharges[$fichier])) {
$GLOBALS[$GLOBALS['idx_lang']] = array_merge(
(array)$GLOBALS[$GLOBALS['idx_lang']],
(isset($GLOBALS[$GLOBALS['idx_lang']]) ? (array)$GLOBALS[$GLOBALS['idx_lang']] : array()),
$surcharges[$fichier]
);
}
......
......@@ -2179,7 +2179,7 @@ function spip_initialisation_suite(){
// le script de l'espace prive
// Mettre a "index.php" si DirectoryIndex ne le fait pas ou pb connexes:
// les anciens IIS n'acceptent pas les POST sur ecrire/ (#419)
// meme pb sur thttpd cf. http://forum.spip.org/fr_184153.html
// meme pb sur thttpd cf. http://forum.spip.net/fr_184153.html
if (!defined('_SPIP_ECRIRE_SCRIPT')) {
define('_SPIP_ECRIRE_SCRIPT', (empty($_SERVER['SERVER_SOFTWARE']) ? '' :
preg_match(',IIS|thttpd,', $_SERVER['SERVER_SOFTWARE']) ?
......
......@@ -309,7 +309,7 @@ $liste_des_authentifications = array(
// pour specifier les versions de SPIP necessaires
// il faut s'en tenir a un nombre de decimales fixe
// ex : 2.0.0, 2.0.0-dev, 2.0.0-beta, 2.0.0-beta2
$spip_version_branche = "3.1.0-rc2";
$spip_version_branche = "3.1.0-rc3";
// version des signatures de fonctions PHP
// (= numero SVN de leur derniere modif cassant la compatibilite et/ou necessitant un recalcul des squelettes)
$spip_version_code = 22159;
......
......@@ -25,7 +25,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'avis_connexion_erreur_creer_base' => 'База данных не может быть создана.',
'avis_connexion_erreur_nom_base' => 'Название базы может состоять только из латинских букв, цифр и знака нижнего подчеркивания.',
'avis_connexion_ldap_echec_1' => 'Не удалось подключиться к LDAP.',
'avis_connexion_ldap_echec_2' => 'Вернитесь на предыдущую страницу и проверьте внесенную вами информацию.',
'avis_connexion_ldap_echec_2' => 'Вернитесь на предыдущую страницу и проверьте введенную вами информацию.',
'avis_connexion_ldap_echec_3' => 'Кроме того, не используйте поддержку LDAP для импорта пользователей.',
'avis_deplacement_rubrique' => 'Внимание! В этом разделе находится @contient_breves@ новостей@scb@: если вы перемещаете его, пожалуйста, поставьте отметку для подтверждения операции.',
'avis_erreur_connexion_mysql' => 'Ошибка соединения с SQL ',
......@@ -67,7 +67,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// C
'cache_modifiable_webmestre' => 'Этот параметр может быть изменен только вебмастером.',
'calendrier_synchro' => 'Если вы используете календарь, совместимый с <b> iCal </b>, вы можете согласовать его с данными сайта.',
'calendrier_synchro' => 'Если вы используете календарь, совместимый с <b>iCal</b>, вы можете согласовать его с данными сайта.',
'config_activer_champs' => 'Включить следующие поля',
'config_choix_base_sup' => 'Выберите базу на этом сервере',
'config_erreur_base_sup' => 'SPIP не может отобразить список доступных баз данных',
......@@ -436,7 +436,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'info_site_reference_2' => 'Ссылающийся сайт',
'info_site_web' => 'САЙТ:',
'info_sites' => 'сайты',
'info_sites_lies_mot' => 'Сайты с этим ключем',
'info_sites_lies_mot' => 'Сайты с этим ключом',
'info_sites_proxy' => 'Использовать прокси',
'info_sites_trouves' => 'Найденные сайты',
'info_sous_titre' => 'Подзаголовок:',
......@@ -753,18 +753,15 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'texte_effacer_statistiques' => 'Удалить статистику',
'texte_en_cours_validation' => 'Материалы, требующие проверки. ',
'texte_enrichir_mise_a_jour' => '<!—Вы можете улучшить свой текст, используя «типографические ярлыки»—>',
'texte_fichier_authent' => '<b>Должен ли SPIP создавать <tt> .htpasswd </tt>
и <tt> .htpasswd-admin </tt> файлы в папке @dossier@? </b> <p>
Эти файлы используются для ограничения доступа авторов и администраторов
к другим частям сайта (например, к папке с серверной статистикой). </p>
<p>Если у вас нет необходимости в таких действиях, то оставьте это значение по умолчанию.</p>',
'texte_fichier_authent' => '<b>Должен ли SPIP создавать <tt>.htpasswd</tt> и <tt>.htpasswd-admin</tt> файлы в папке @dossier@?</b><p>Эти файлы используются для ограничения доступа авторов и администраторов к другим частям сайта (например, к папке с серверной статистикой). </p>
<p>Если у вас нет необходимости в таких действиях, то оставьте значение по умолчанию.</p>',
'texte_informations_personnelles_1' => 'Теперь система создаст вашу учетную запись на сайте.',
'texte_informations_personnelles_2' => '(Примечание: если вы переустанавливаете SPIP и ваш старый логин и пароль всё еще работают, вы можете',
'texte_introductif_article' => '(Вступительный текст к статье)',
'texte_jeu_caractere' => 'Рекомендуется использовать кодировку (<tt>utf-8</tt>) на вашем сайте. Это сделает возможным отображать текст на любом языке. ',
'texte_jeu_caractere_3' => 'Текущая кодировка:',
'texte_jeu_caractere_4' => 'Если это не соответствует ситуации, которую вы имеете с данными (например, после восстановления базы данных с резервной копии), или если <em>вы создаете этот сайт</em> и хотите использовать разные наборы символов, пожалуйста, укажите набор символов здесь:',
'texte_login_ldap_1' => '(Держите пустым для анонимного доступа или войдите в полную дорожку, например «<tt> uid=smith, ou=users, dc=my-domain, dc=com </tt>».)',
'texte_login_ldap_1' => '(Держите пустым для анонимного доступа или введите полный путь, например «<tt>uid=smith, ou=users, dc=my-domain, dc=com</tt>».)',
'texte_login_precaution' => 'Внимание! Это ваш текущий логин на сайте, меняйте вдумчиво.',
'texte_messagerie_agenda' => 'Система отправки сообщений позволяет авторам сайта общаться непосредственно в редакторской части сайта. Она связана с календарем.',
'texte_mise_a_niveau_base_1' => 'Вы только что обновили файлы SPIP
......
......@@ -47,7 +47,7 @@
<traducteur nom="kent1" lien="http://trad.spip.net/auteur/kent1" />
<traducteur nom="Yannick Bailly" lien="http://trad.spip.net/auteur/yannick-bailly" />
</langue>
<langue code="en" url="http://trad.spip.net/tradlang_module/spip?lang_cible=en" total="636" traduits="635" relire="0" modifs="1" nouveaux="0" pourcent="99.84">
<langue code="en" url="http://trad.spip.net/tradlang_module/spip?lang_cible=en" total="636" traduits="636" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="Benitron" lien="http://trad.spip.net/auteur/benitron" />
<traducteur nom="Fil" lien="http://trad.spip.net/auteur/fil" />
<traducteur nom="George" lien="http://trad.spip.net/auteur/جورج-قندلفت" />
......@@ -190,7 +190,7 @@
</langue>
<langue code="roa" url="http://trad.spip.net/tradlang_module/spip?lang_cible=roa" total="636" traduits="518" relire="0" modifs="32" nouveaux="86" pourcent="81.45">
</langue>
<langue code="ru" url="http://trad.spip.net/tradlang_module/spip?lang_cible=ru" total="636" traduits="635" relire="0" modifs="1" nouveaux="0" pourcent="99.84">
<langue code="ru" url="http://trad.spip.net/tradlang_module/spip?lang_cible=ru" total="636" traduits="636" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="olly" lien="http://trad.spip.net/auteur/olly" />
<traducteur nom="Serge Markitanenko" lien="http://trad.spip.net/auteur/serge-markitanenko" />
</langue>
......@@ -205,7 +205,7 @@
</langue>
<langue code="tr" url="http://trad.spip.net/tradlang_module/spip?lang_cible=tr" total="636" traduits="544" relire="0" modifs="29" nouveaux="63" pourcent="85.53">
</langue>
<langue code="uk" url="http://trad.spip.net/tradlang_module/spip?lang_cible=uk" total="636" traduits="635" relire="0" modifs="1" nouveaux="0" pourcent="99.84">
<langue code="uk" url="http://trad.spip.net/tradlang_module/spip?lang_cible=uk" total="636" traduits="636" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="olly" lien="http://trad.spip.net/auteur/olly" />
<traducteur nom="Retenodus" lien="http://trad.spip.net/auteur/retenodus" />
</langue>
......
......@@ -597,7 +597,7 @@ and log in to the site.
'pass_nouveau_pass' => 'New password',
'pass_ok' => 'OK',
'pass_oubli_mot' => 'Forgotten password',
'pass_procedure_changer' => 'In order to change your password, we have to check your identity first. Please enter the e-mail address associated with this account.', # MODIF
'pass_procedure_changer' => 'In order to change your password, we have to check your identity first. Please enter the e-mail address associated with this account.',
'pass_quitter_fenetre' => 'Close this window',
'pass_rappel_login' => 'Reminder: your identifier (login) is "@login@".',
'pass_recevoir_mail' => 'You will receive an email explaining how you can retrieve your access to the site.',
......
......@@ -109,20 +109,20 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'date_de_mois_9' => '@j@ сентября',
'date_demain' => 'завтра',
'date_fmt_heures_minutes' => '@h@:@m@',
'date_fmt_heures_minutes_court' => '@h@h@m@',
'date_fmt_heures_minutes_court' => '@h@:@m@',
'date_fmt_jour' => '@nomjour@ @jour@',
'date_fmt_jour_heure' => '@jour@ до @heure@',
'date_fmt_jour_heure_debut_fin' => '@jour@ с @heure_debut@ по @heure_fin@',
'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ с @heure_debut@@dtabbr@ по @dtstart@@heure_fin@@dtend@',
'date_fmt_jour_mois' => '@jourmois@',
'date_fmt_jour_mois_annee' => '@jourmois@ @annee@',
'date_fmt_jour_heure' => '@jour@ в @heure@',
'date_fmt_jour_heure_debut_fin' => '@jour@ с @heure_debut@ до @heure_fin@',
'date_fmt_jour_heure_debut_fin_abbr' => '@dtstart@@jour@ с @heure_debut@@dtabbr@ до @dtstart@@heure_fin@@dtend@',
'date_fmt_jour_mois' => '@jour@ @nommois@',
'date_fmt_jour_mois_annee' => '@jour@ @nommois@ @annee@',
'date_fmt_mois_annee' => '@nommois@ @annee@',
'date_fmt_nomjour' => '@nomjour@ @date@',
'date_fmt_nomjour_date' => 'от @nomjour@ @date@',
'date_fmt_periode' => 'С @date_debut@ по @date_fin@',
'date_fmt_periode_abbr' => 'С @dtart@@date_debut@@dtabbr@ по @dtend@@date_fin@@dtabbr@',
'date_fmt_periode' => 'С @date_debut@ до @date_fin@',
'date_fmt_periode_abbr' => 'С @dtart@@date_debut@@dtabbr@ до @dtend@@date_fin@@dtabbr@',
'date_fmt_periode_from' => 'С',
'date_fmt_periode_to' => 'по',
'date_fmt_periode_to' => 'до',
'date_fmt_saison_annee' => '@saison@ @annee@',
'date_heures' => 'час',
'date_hier' => 'вчера',
......@@ -435,7 +435,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'info_nom_non_utilisateurs_connectes' => 'Не показывать меня в списке пользователей online.',
'info_nom_utilisateurs_connectes' => 'Показывать меня в списке пользователей online.',
'info_nombre_en_ligne' => 'Сейчас на сайте:',
'info_non_resultat' => 'Ничего не найдено по запросу "@cherche_mot@"',
'info_non_resultat' => 'Ничего не найдено по запросу «@cherche_mot@»',
'info_non_utilisation_messagerie' => 'Система личных сообщений отключена на этом сайте.',
'info_nouveau_message' => 'ПОЛУЧЕНО НОВОЕ СООБЩЕНИЕ',
'info_nouveaux_messages' => 'У ВАС @total_messages@ НОВОЕ(ЫХ) СООБЩЕНИЕ(Й):',
......@@ -457,7 +457,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'info_propose_5' => 'на связанном с этим форуме, расположенном по адресу:',
'info_publie_01' => 'Статья «@titre@» была одобрена @connect_nom@.',
'info_publie_1' => '[@nom_site_spip@] ОПУБЛИКОВАНО: @titre@',
'info_publie_2' => 'Опубликована статья
'info_publie_2' => 'Статья опубликована
-----------------',
'info_rechercher' => 'Поиск',
'info_rechercher_02' => 'Поиск:',
......@@ -479,7 +479,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'info_tout_afficher' => 'Показать все',
'info_travaux_texte' => 'Ведутся работы по настройке сайта, скоро мы начнем работу.',
'info_travaux_titre' => 'Сайт еще не работает',
'info_trop_resultat' => 'Слишком много результатов по запросу "@cherche_mot@"; пожалуйста, уточните запрос.',
'info_trop_resultat' => 'Слишком много результатов по запросу «@cherche_mot@»; пожалуйста, уточните запрос.',
'info_utilisation_messagerie_interne' => 'Сервис внутренних приватных сообщений включен.',
'info_valider_lien' => 'подтвердить ссылку',
'info_verifier_image' => ', проверьте, что ваши изображения были переданы правильно.',
......@@ -519,7 +519,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'login_deconnexion_ok' => 'Вышел из системы.',
'login_erreur_pass' => 'Пароль введен неправильно.',
'login_espace_prive' => 'административная часть',
'login_identifiant_inconnu' => 'Логин "@login@" неизвестен.',
'login_identifiant_inconnu' => 'Логин «@login@» неизвестен.',
'login_login' => 'Логин:',
'login_login2' => 'Логин или email:',
'login_login_pass_incorrect' => '(Неправильный логин или пароль).',
......@@ -527,9 +527,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'login_non_securise' => 'Внимание, эта форма небезопасна!
Если вы не хотите, чтобы ваш пароль был открыт для перехвата в сети, активизируйте Javascript в вашем браузере и ',
'login_nouvelle_tentative' => 'Попробовать еще раз',
'login_par_ici' => 'Вы зарегистрированы ... вам сюда...',
'login_par_ici' => 'Вы зарегистрированы... вам сюда...',
'login_pass2' => 'Пароль:',
'login_preferez_refuser' => '<b>Если Вы хотите отказываться от cookies </b>, есть другой метод входа на сайт (менее безопасный):',
'login_preferez_refuser' => '<b>Если Вы хотите отказаться от cookies </b>, есть другой метод входа на сайт (менее безопасный):',
'login_recharger' => 'перегрузить страницу',
'login_rester_identifie' => 'Запомнить логин на несколько дней',
'login_retour_public' => 'На главную страницу сайта',
......@@ -605,9 +605,9 @@ and connect again to the site.
'pass_nouveau_pass' => 'Новый пароль',
'pass_ok' => 'OK',
'pass_oubli_mot' => 'Забытый пароль',
'pass_procedure_changer' => 'Введите e-mail, который вы указали при регистрации.', # MODIF
'pass_procedure_changer' => 'Чтобы изменить пароль введите, пожалуйста, e-mail, который вы указали при регистрации.',
'pass_quitter_fenetre' => 'Закрыть окно',
'pass_rappel_login' => 'Напоминаем: ваш логин "@login@".',
'pass_rappel_login' => 'Напоминаем: ваш логин «@login@».',
'pass_recevoir_mail' => 'Вы получите письмо, в котором будут дальнейшие инструкции по регистрации на сайте.',
'pass_retour_public' => 'Назад к основному сайту',
'pass_rien_a_faire_ici' => 'Нечего здесь делать',
......@@ -712,7 +712,7 @@ and connect again to the site.
'zbug_resultat' => 'результат',
'zbug_serveur_indefini' => 'Не определен SQL сервер',
'zbug_statistiques' => 'Информация о SQL запросах (отсортировано по времени выполнения) ',
'zbug_table_inconnue' => 'Неизвестная SQL таблица "@table@"',
'zbug_table_inconnue' => 'Неизвестная SQL таблица «@table@»',
'zxml_connus_attributs' => 'известные атрибуты',
'zxml_de' => 'из',
'zxml_inconnu_attribut' => 'неизвестный атрибут',
......
......@@ -593,7 +593,7 @@ and connect again to the site.
'pass_nouveau_pass' => 'Новий пароль',
'pass_ok' => 'OK',
'pass_oubli_mot' => 'Забутий пароль',
'pass_procedure_changer' => 'Введіть e-mail, який ви вказали при реєстрації.', # MODIF
'pass_procedure_changer' => 'Щоб змінити пароль, будь ласка, ведіть e-mail, який ви вказали при реєстрації.',
'pass_quitter_fenetre' => 'Закрити вікно',
'pass_rappel_login' => 'Нагадуємо: ваш логін „@login@”.',
'pass_recevoir_mail' => 'Ви одержите листа, в якому будуть подальші інструкції з реєстрації на сайті.',
......
......@@ -578,7 +578,7 @@ function supprimer_toutes_sessions() {
/**
* Ranger les images de local/cache-gd2 dans des sous-rep
* http://core.spip.org/issues/3277
* http://core.spip.net/issues/3277
*/
$GLOBALS['maj'][21676] = array(
array('ranger_cache_gd2'),
......
......@@ -2,12 +2,12 @@
prefix="spip"
categorie="outil"
version="3.1.0-rc"
etat="dev"
etat="test"
compatibilite="];["
schema="21676"
documentation="http://www.spip.net"
demonstration="http://demo.spip.org"
developpement="http://core.spip.org/projects/spip/"
demonstration="http://demo.spip.net"
developpement="http://core.spip.net/projects/spip/"
>
<nom>SPIP</nom>
......@@ -135,6 +135,7 @@
<procure nom="iterateurs" version="0.6.1" />
<procure nom="queue" version="0.6.6" />
<procure nom="jquery" version="1.11.3" />
<menu nom="menu_accueil" titre="icone_accueil" icone="images/accueil-48.png" action="accueil" />
<menu nom="menu_edition" titre="icone_edition" icone="images/edition-48.png" action="navigation" parametres="menu=menu_edition" />
......
......@@ -498,7 +498,7 @@ define('CODE_EXECUTER_BALISE', "executer_balise_dynamique('%s',
*
* On leur adjoint les arguments explicites de la balise (cf `#LOGIN{url}`)
* et d'éventuelles valeurs transmises d'autorité par la balise.
* (cf http://core.spip.org/issues/1728)
* (cf http://core.spip.net/issues/1728)
*
* La fonction `executer_balise_dynamique()` définie par la
* constante `CODE_EXECUTER_BALISE` recevra à l'exécution la valeur de tout ca.
......
......@@ -235,35 +235,56 @@ function image_alpha($im, $alpha = 63)
imagedestroy($im);
imagedestroy($im2);
}
return _image_ecrire_tag($image,array('src'=>$dest));
}
/**
* Recadre (rogne) une image en indiquant la taille de la découpe souhaitée
*
* http://code.spip.net/@image_recadre
* On peut indiquer une proportion ou une taille spécifique, une position de rognage
* et une couleur de fond, si le rognage est de taille plus grande que l'image d'origine.
*
* @example
* - `[(#FICHIER|image_recadre{800, 400})]`
* - `[(#FICHIER|image_recadre{800, 400, center})]`
* - `[(#FICHIER|image_recadre{800, 400, center, black})]`
* - `[(#FICHIER|image_recadre{16:9})]`
* - `[(#FICHIER|image_recadre{16:9, -})]` (- est appliqué par défaut, équivalent à image_passe_partout)
* - `[(#FICHIER|image_recadre{16:9, +, center, white})]`
* - `[(#FICHIER|image_recadre{16:9, -, top left})]`
* - `[(#FICHIER|image_recadre{16:9, -, top=40 left=20})]`
*
* @filtre
* @uses _image_valeurs_trans()
* @uses _image_tag_changer_taille() si image trop grande pour être traitée
* @uses _image_ecrire_tag()
* @link http://www.spip.net/5786
*
* @param string $im
* Chemin de l'image ou balise html `<img src=... />`
* @param string|int $width
* largeur du recadrage
* ou ratio sous la forme "16:9"
* Largeur du recadrage
* ou ratio sous la forme "16:9"
* @param string|int $height
* hauteur du recadrage
* ou "+" (agrandir) ou "-" (reduire) si un ratio est fourni pour width
* Hauteur du recadrage
* ou "+" (agrandir) ou "-" (reduire) si un ratio est fourni pour width
* @param string $position
* center, left, right, top, bottom, ou combinaisons ("top left")
* Indication de position de la découpe :
* - `center`, `left`, `right`, `top`, `bottom`,
* - ou combinaisons de plusiers `top left`
* - ou indication en pixels depuis une position `top=50` ou composée `top=40 left=50`
* - ou nom d'une fonction spéciale qui calculera et retournera la position souhaitée
* @param string $background_color
* couleur de fond si on agrandit l'image
* Couleur de fond si on agrandit l'image
* @return string
* balise image recadree
* balise image recadrée
*/
function image_recadre($im, $width, $height, $position = 'center', $background_color = 'white')
{
$fonction = array('image_recadre', func_get_args());
$image = _image_valeurs_trans($im, "recadre-$width-$height-$position-$background_color",false,$fonction);
if (!$image) return("");
$x_i = $image["largeur"];
......@@ -294,41 +315,51 @@ function image_recadre($im, $width, $height, $position = 'center', $background_c
if ($width==0) $width=$x_i;
if ($height==0) $height=$y_i;
$offset_width = $x_i-$width;
$offset_height = $y_i-$height;
$position=strtolower($position);
if (strpos($position,'left')!==FALSE){
if (preg_match(';left=(\d{1}\d+);', $position, $left)){
$offset_width=$left[1];
// chercher une fonction spéciale de calcul des coordonnées de positionnement.
// exemple 'focus' ou 'focus-center' avec le plugin 'Centre Image'
if (!in_array($position, array('center', 'top', 'right', 'bottom', 'left'))) {
if (count(explode(" ", $position)) == 1) {
$positionner = charger_fonction("image_positionner_par_" . str_replace("-", "_", $position), "inc", true);
if ($positionner) {
$position = $positionner($im, $width, $height);
}
}
else{
}
if (strpos($position,'left')!==FALSE) {
if (preg_match(';left=(\d{1}\d+);', $position, $left)){
$offset_width=$left[1];
} else {
$offset_width=0;
}
}
elseif (strpos($position,'right')!==FALSE)
} elseif (strpos($position,'right')!==FALSE) {
$offset_width=$offset_width;
else
} else {
$offset_width=intval(ceil($offset_width/2));
}
if (strpos($position,'top')!==FALSE){
if (strpos($position,'top')!==FALSE) {
if (preg_match(';top=(\d{1}\d+);', $position, $top)){
$offset_height=$top[1];
}
else{
} else {
$offset_height=0;
}
}
elseif (strpos($position,'bottom')!==FALSE)
} elseif (strpos($position,'bottom')!==FALSE) {
$offset_height=$offset_height;
else
} else {
$offset_height=intval(ceil($offset_height/2));
}
$im = $image["fichier"];
$dest = $image["fichier_dest"];
$creer = $image["creer"];
if ($creer) {
$im = $image["fonction_imagecreatefrom"]($im);
imagepalettetotruecolor($im);
......@@ -336,9 +367,9 @@ function image_recadre($im, $width, $height, $position = 'center', $background_c
@imagealphablending($im_, false);
@imagesavealpha($im_,true);
if ($background_color=='transparent')
if ($background_color=='transparent') {
$color_t = imagecolorallocatealpha( $im_, 255, 255, 255 , 127 );
else {
} else {
$bg = _couleur_hex_to_dec($background_color);
$color_t = imagecolorallocate( $im_, $bg['red'], $bg['green'], $bg['blue']);
}
......@@ -349,8 +380,8 @@ function image_recadre($im, $width, $height, $position = 'center', $background_c
imagedestroy($im_);
imagedestroy($im);
}
return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$width,'height'=>$height));
return _image_ecrire_tag($image, array('src'=>$dest, 'width'=>$width, 'height'=>$height));
}
......
<paquet
prefix="images"
categorie="multimedia"
version="1.1.11"
version="1.2.0"
etat="stable"
compatibilite="[3.0.0;3.1.*]"
logo="images/image_filtre-32.png"
......
......@@ -49,7 +49,7 @@ ul.forums li.statut_prop,
ul.forums li.statut_prop:hover { background-color: #FFFBEF; border-color: #EFCA68; }
ul.forums li .cartouche { min-height: 30px; padding: 5px; padding-#GET{left}: 30px; border-bottom: 1px solid #eee; }
ul.forums li .cartouche .numero {position: absolute;right: 5px;font-size: 1.5em;color:#bbb;font-weight: bold;font-style: italic;}
ul.forums li .cartouche .numero {position: absolute;#GET{right}: 5px;font-size: 1.5em;color:#bbb;font-weight: bold;font-style: italic;}
ul.forums li.statut_off .cartouche,
ul.forums li.statut_privoff .cartouche { border-color: #edd3d3; }
ul.forums li.statut_spam .cartouche { border-color: #ddd; }
......
......@@ -2,7 +2,7 @@
<span class="image_loading"></span>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
[(#ENV{editable}|ou{#ENV{_traduisible}})
<form method='post' action='#ENV{action}'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
......@@ -34,7 +34,7 @@
[(#ENV{_lister_id_trad}|oui)
<div class="fieldset voir_traductions">
<INCLURE{fond=#ENV**{_vue_traductions},id_trad=#ENV{_lister_id_trad},titre=<:info_traductions:>,objet=#ENV{_objet},env,ajax} />
[(#ENV{editable})
[(#ENV{editable}|ou{#ENV{_traduisible}})
<span class="input[(#ENV{_saisie_en_cours}|non)none-js]">
<input type="submit" class="submit supprimer_trad" name="supprimer_trad" value="<:trad_delier|attribut_html:>" />
</span>
......@@ -56,11 +56,11 @@
(#URL_ECRIRE{#ENV{_objet}|objet_info{url_edit},new=oui&lier_trad=#ENV{_id_objet}}|parametre_url{#ENV{_objet}|=={rubrique}|?{id_parent,id_rubrique},#ENV{_id_parent}}|icone_horizontale{<:trad_new:>,traduction,new})
</div>]
]
[(#ENV{editable})
[(#ENV{editable}|ou{#ENV{_traduisible}})
<p class="boutons[(#ENV{_saisie_en_cours}|non)none-js]">
<input type='submit' class='over' name='changer' value='<:bouton_changer:>' />
<input type='submit' class='submit' name='annuler' value='<:bouton_fermer:>' />
<input type="submit" class="submit" value="<:bouton_changer:>" />
</p>
</div></form>]
</div>
</div>
\ No newline at end of file
......@@ -69,8 +69,9 @@ function formulaires_traduire_charger_dist($objet, $id_objet, $retour = '', $tra
$valeurs['changer_lang'] = '';
$valeurs['_traduisible'] = autoriser('changertraduction',$objet,$id_objet);
$valeurs['_traduire'] = '';
if (isset($valeurs['id_trad'])) {
if (isset($valeurs['id_trad']) AND $valeurs['_traduisible']) {
$valeurs['_traduire'] = ($traduire?' ':'');
$valeurs['_vue_traductions'] = "prive/objets/liste/" . (trouver_fond($f=table_objet($objet)."-trad","prive/objets/liste")?$f:"objets-trad");
// pour afficher la liste des trad sur la base de l'id_trad en base
......
......@@ -332,3 +332,5 @@ form.bouton_action_post.link button.submit:hover, .formulaire_spip .boutons inpu
/* formulaire_editer_logo */
.formulaire_editer_logo .titrem,.formulaire_editer_logo .ajouter_survol {text-transform: uppercase;}
/* Date picker : passer par dessus des icones et du menu haut */
.ui-datepicker { z-index: 1001 !important;}
......@@ -114,7 +114,7 @@
.onglets_simple ul {list-style:none;margin-#ENV{left}:1px;padding:0;}
.onglets_simple ul li {float:#ENV{left};padding:0;margin:0;margin-bottom:-1px;}
.onglets_simple ul li strong,.onglets_simple ul li a {display:block;float:#ENV{left};padding:4px 7px;border:1px solid #ENV{foncee};margin-#ENV{left}:5px;background-color:#eee;background-position:center left;background-repeat:no-repeat;}
.onglets_simple ul li strong,.onglets_simple ul li a {display:block;float:#ENV{left};padding:4px 7px;border:1px solid #ENV{foncee};margin-#ENV{left}:5px;background-color:#eee;background-position:center #ENV{left};background-repeat:no-repeat;}
.onglets_simple ul li strong,.onglets_simple ul li a:hover {background-color:#f8f7f3;}
.onglets_simple ul li a:hover {cursor:hand;cursor:pointer;}
.onglets_simple ul li strong {border-bottom:1px solid #f8f7f3;color:#555;}
......
<svn_revision>
<text_version>
Origine: svn://trac.rezo.net/spip/tags/spip-3.1.0-rc2
Revision: 22623
Dernier commit: 2015-12-03 22:57:44 +0100
Origine: svn://trac.rezo.net/spip/tags/spip-3.1.0-rc3
Revision: 22646
Dernier commit: 2015-12-10 11:09:13 +0100
</text_version>
<origine>svn://trac.rezo.net/spip/tags/spip-3.1.0-rc2</origine>
<revision>22623</revision>
<commit>2015-12-03 22:57:44 +0100 </commit>
<origine>svn://trac.rezo.net/spip/tags/spip-3.1.0-rc3</origine>
<revision>22646</revision>
<commit>2015-12-10 11:09:13 +0100 </commit>
</svn_revision>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment