Bonjour à tous,
Comment ajouter l'option [Sélectionner] dans les textes sous forme de "Code" (si possible sans installer de Mod suppémentaire)?
Merci! ;)
texte
c'est automatique avec le bbcode "code" dans la version 2, pas dans la version 1. pour quelle version d'smf?
Re,
Il doit bien y avoir une solution!
J'en ai vraiment besoin et et je voudrai m'épargner le changement vers une autre version.
Merci ;)
Bonjour,
Voici ma solution testée et éprouvée :)
Sources/Subs.php
Rechercher :
array(
'tag' => 'code',
'type' => 'unparsed_content',
'content' => '<div class="codeheader">' . $txt['smf238'] . ':</div><div class="code">' . ($context['browser']['is_gecko'] ? '<pre style="margin-top: 0; display: inline;">$1</pre>' : '$1') . '</div>',
// !!! Maybe this can be simplified?
'validate' => isset($disabled['code']) ? null : create_function('&$tag, &$data, $disabled', '
global $context;
if (!isset($disabled['code']))
{
$php_parts = preg_split('~(<?php|?>)~', $data, -1, PREG_SPLIT_DELIM_CAPTURE);
for ($php_i = 0, $php_n = count($php_parts); $php_i < $php_n; $php_i++)
{
// Do PHP code coloring?
if ($php_parts[$php_i] != '<?php')
continue;
$php_string = '';
while ($php_i + 1 < count($php_parts) && $php_parts[$php_i] != '?>')
{
$php_string .= $php_parts[$php_i];
$php_parts[$php_i++] = '';
}
$php_parts[$php_i] = highlight_php_code($php_string . $php_parts[$php_i]);
}
// Fix the PHP code stuff...
$data = str_replace("<pre style="display: inline;"> </pre>", " ", implode('', $php_parts));
// Older browsers are annoying, aren't they?
if ($context['browser']['is_ie4'] || $context['browser']['is_ie5'] || $context['browser']['is_ie5.5'])
$data = str_replace(" ", "<pre style="display: inline;"> </pre>", $data);
elseif (!$context['browser']['is_gecko'])
$data = str_replace(" ", "<span style="white-space: pre;"> </span>", $data);
}'),
'block_level' => true,
),
array(
'tag' => 'code',
'type' => 'unparsed_equals_content',
'content' => '<div class="codeheader">' . $txt['smf238'] . ': ($2)</div><div class="code">' . ($context['browser']['is_gecko'] ? '<pre style="margin-top: 0; display: inline;">$1</pre>' : '$1') . '</div>',
// !!! Maybe this can be simplified?
'validate' => isset($disabled['code']) ? null : create_function('&$tag, &$data, $disabled', '
global $context;
if (!isset($disabled['code']))
{
$php_parts = preg_split('~(<?php|?>)~', $data[0], -1, PREG_SPLIT_DELIM_CAPTURE);
for ($php_i = 0, $php_n = count($php_parts); $php_i < $php_n; $php_i++)
{
// Do PHP code coloring?
if ($php_parts[$php_i] != '<?php')
continue;
$php_string = '';
while ($php_i + 1 < count($php_parts) && $php_parts[$php_i] != '?>')
{
$php_string .= $php_parts[$php_i];
$php_parts[$php_i++] = '';
}
$php_parts[$php_i] = highlight_php_code($php_string . $php_parts[$php_i]);
}
// Fix the PHP code stuff...
$data[0] = str_replace("<pre style="display: inline;"> </pre>", " ", implode('', $php_parts));
// Older browsers are annoying, aren't they?
if ($context['browser']['is_ie4'] || $context['browser']['is_ie5'] || $context['browser']['is_ie5.5'])
$data = str_replace(" ", "<pre style="display: inline;"> </pre>", $data);
elseif (!$context['browser']['is_gecko'])
$data = str_replace(" ", "<span style="white-space: pre;"> </span>", $data);
}'),
'block_level' => true,
),
Remplacer par :
array(
'tag' => 'code',
'type' => 'unparsed_content',
'content' => '<div class="codeheader">' . $txt['code'] . ': <a href="javascript:void(0);" onclick="return smfSelectText(this);" class="codeoperation">' . $txt['code_select'] . '</a></div><code>$1</code>',
// !!! Maybe this can be simplified?
'validate' => isset($disabled['code']) ? null : create_function('&$tag, &$data, $disabled', '
global $context;
if (!isset($disabled['code']))
{
$php_parts = preg_split('~(<?php|?>)~', $data, -1, PREG_SPLIT_DELIM_CAPTURE);
for ($php_i = 0, $php_n = count($php_parts); $php_i < $php_n; $php_i++)
{
// Do PHP code coloring?
if ($php_parts[$php_i] != '<?php')
continue;
$php_string = '';
while ($php_i + 1 < count($php_parts) && $php_parts[$php_i] != '?>')
{
$php_string .= $php_parts[$php_i];
$php_parts[$php_i++] = '';
}
$php_parts[$php_i] = highlight_php_code($php_string . $php_parts[$php_i]);
}
// Fix the PHP code stuff...
$data = str_replace("<pre style="display: inline;"> </pre>", " ", implode('', $php_parts));
// Older browsers are annoying, aren't they?
if ($context['browser']['is_ie4'] || $context['browser']['is_ie5'] || $context['browser']['is_ie5.5'])
$data = str_replace(" ", "<pre style="display: inline;"> </pre>", $data);
elseif (!$context['browser']['is_gecko'])
$data = str_replace(" ", "<span style="white-space: pre;"> </span>", $data);
else
$data = str_replace(" ", " ", $data);
}'),
'block_level' => true,
),
array(
'tag' => 'code',
'type' => 'unparsed_equals_content',
'content' => '<div class="codeheader">' . $txt['code'] . ': ($2) <a href="#" onclick="return smfSelectText(this);" class="codeoperation">' . $txt['code_select'] . '</a></div><code>$1</code>',
// !!! Maybe this can be simplified?
'validate' => isset($disabled['code']) ? null : create_function('&$tag, &$data, $disabled', '
global $context;
if (!isset($disabled['code']))
{
$php_parts = preg_split('~(<?php|?>)~', $data[0], -1, PREG_SPLIT_DELIM_CAPTURE);
for ($php_i = 0, $php_n = count($php_parts); $php_i < $php_n; $php_i++)
{
// Do PHP code coloring?
if ($php_parts[$php_i] != '<?php')
continue;
$php_string = '';
while ($php_i + 1 < count($php_parts) && $php_parts[$php_i] != '?>')
{
$php_string .= $php_parts[$php_i];
$php_parts[$php_i++] = '';
}
$php_parts[$php_i] = highlight_php_code($php_string . $php_parts[$php_i]);
}
// Fix the PHP code stuff...
$data[0] = str_replace("<pre style="display: inline;"> </pre>", " ", implode('', $php_parts));
// Older browsers are annoying, aren't they?
if ($context['browser']['is_ie4'] || $context['browser']['is_ie5'] || $context['browser']['is_ie5.5'])
$data = str_replace(" ", "<pre style="display: inline;"> </pre>", $data);
elseif (!$context['browser']['is_gecko'])
$data = str_replace(" ", "<span style="white-space: pre;"> </span>", $data);
else
$data = str_replace(" ", " ", $data);
}'),
'block_level' => true,
),
Themes/default/script.js
Rechercher :
function ajax_indicator(turn_on)
{
var indicator = document.getElementById("ajax_in_progress");
if (indicator != null)
{
if (navigator.appName == "Microsoft Internet Explorer" && navigator.userAgent.indexOf("MSIE 7") == -1)
{
indicator.style.top = document.documentElement.scrollTop;
}
indicator.style.display = turn_on ? "block" : "none";
}
}
Ajouter Après :
// Get the text in a code tag.
function smfSelectText(oCurElement, bActOnElement)
{
// The place we're looking for is one div up, and next door - if it's auto detect.
if (typeof(bActOnElement) == 'boolean' && bActOnElement)
var oCodeArea = document.getElementById(oCurElement);
else
var oCodeArea = oCurElement.parentNode.nextSibling;
if (typeof(oCodeArea) != 'object' || oCodeArea == null)
return false;
// Start off with my favourite, internet explorer.
if (document.body.createTextRange)
{
var oCurRange = document.body.createTextRange();
oCurRange.moveToElementText(oCodeArea);
oCurRange.select();
}
// Firefox at el.
else if (window.getSelection)
{
var oCurSelection = window.getSelection();
// Safari is special!
if (oCurSelection.setBaseAndExtent)
{
var oLastChild = oCodeArea.lastChild;
oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, typeof(oLastChild.innerText) == 'undefined' ? oLastChild.textContent.length : oLastChild.innerText.length);
}
else
{
var curRange = document.createRange();
curRange.selectNodeContents(oCodeArea);
oCurSelection.removeAllRanges();
oCurSelection.addRange(curRange);
}
}
return false;
}
Themes/default/languages/Modifications.french.php
Rechercher :
?>
Ajouter Avant :
$txt['code'] = 'Code ';
$txt['code_select'] = 'Sélectionner';
Themes/default/style.css
Chercher :
/* A code block - maybe even PHP. */
.code
{
color: #000000;
background-color: #dddddd;
font-family: "courier new", "times new roman", monospace;
font-size: x-small;
line-height: 1.3em;
/* Put a nice border around it. */
border: 1px solid #000000;
margin: 1px auto 1px auto;
padding: 1px;
width: 99%;
/* Don't wrap its contents, and show scrollbars. */
white-space: nowrap;
overflow: auto;
/* Stop after about 24 lines, and just show a scrollbar. */
max-height: 24em;
}
/* The "Quote:" and "Code:" header parts... */
.quoteheader, .codeheader
{
color: #000000;
text-decoration: none;
font-style: normal;
font-weight: bold;
font-size: x-small;
line-height: 1.2em;
}
Remplacer par :
/* A code block - maybe even PHP. */
code
{
color: #000000;
background-color: #dddddd;
display: block;
font-family: "courier new", "times new roman", monospace;
font-size: x-small;
line-height: 1.3em;
/* Put a nice border around it. */
border: 1px solid #000000;
margin: 1px auto 1px auto;
padding: 1px;
width: 99%;
overflow: auto;
white-space: nowrap;
/* Stop after about 24 lines, and just show a scrollbar. */
max-height: 24em;
}
/* The "Quote:" and "Code:" header parts... */
.quoteheader, .codeheader
{
color: #000000;
text-decoration: none;
font-style: normal;
font-weight: bold;
font-size: x-small;
line-height: 1.2em;
width: 100%;
}
/* For links to change the code stuff... */
.codeoperation
{
font-weight: normal;
}
Lainaus käyttäjältä: maximus23 - lokakuu 01, 2009, 07:35:20 AP
Voici ma solution testée et éprouvée :)
Merci maximus23, tu me donne un espoir :)
Malheureusement ça n'affiche pas l'option chez moi.
Thème testé "Default" et "Dilder Multicolor"
Edité pour ajouter ceci:
les données du .css n'influent pas: pas d'encadrement ni de couleur de fond
Bonsoir,
J'ai refait le test plusieurs fois et ici tout est ok :)
Tu es sur de n'avoir rien oublié ? tu as bien mis le script ? etc ?
à le faire en dûr autant le faire en mod....
Bonsoir,
Lance_yien avait demandé sans mod donc voilà :) Si j'ai le temps je le ferai :)
c'est justement à lance_yien que je disais ça lol...pour essayer de le convaincre que c'est mieux en mod lol...
car là le changement de code fait est clairement la base d'un mod lol...
Bonsoir,
Voilà j'ai ficelé cela en mod expérimental .Si quelqu'un à du local pour tester ce serait une bonne chose :) Bien raffraîchir la page après installation pour réinitialiser le Js :)
Lainaus käyttäjältä: lance_yien - lokakuu 01, 2009, 10:01:09 AP
Lainaus käyttäjältä: maximus23 - lokakuu 01, 2009, 07:35:20 AP
Voici ma solution testée et éprouvée :)
Merci maximus23, tu me donne un espoir :)
Malheureusement ça n'affiche pas l'option chez moi.
Thème testé "Default" et "Dilder Multicolor"
Edité pour ajouter ceci:
les données du .css n'influent pas: pas d'encadrement ni de couleur de fond
Les données n'influent pas car tu n'as pas raffraîchis ta page et vidé ton cache pour prendre en compte les modifications :)
Salut vous deux,
Lainaus käyttäjältä: GravuTrad - lokakuu 01, 2009, 05:42:43 IP
c'est justement à lance_yien que je disais ça lol...pour essayer de le convaincre que c'est mieux en mod lol...
car là le changement de code fait est clairement la base d'un mod lol...
J'avais dit
si possible :)
--
Lainaus käyttäjältä: maximus23 - lokakuu 01, 2009, 07:35:37 IP
Bonsoir,
Voilà j'ai ficelé cela en mod expérimental .Si quelqu'un à du local pour tester ce serait une bonne chose :) Bien raffraîchir la page après installation pour réinitialiser le Js :)
J'ai annulé toutes les modifications manuelles et je l'ai installé. Il fonctionne
TRÈS BIEN 
Encore, MERCI ;)
tu peux peut être le soumettre à la team smf maximus non?
Lainaus käyttäjältä: GravuTrad - lokakuu 02, 2009, 04:28:11 AP
tu peux peut être le soumettre à la team smf maximus non?
Excellente idée :)
--
Si ça peut rendre service: chez moi, j'étais obligé de vider les caches IE et FF pour que ça prenne effet.
Bon courage!
Bonsoir,
Cela peut se faire mais bon le mod est ficelé entre deux corrections donc il n'est pas très soigné pour être proposé pour le moment à la Team :) Toujours cet éternel manque de temps :)