Список разделов › phpBBex 1.x (поддерживается) › Поддержка 1.x
function bbcode_second_pass_code($type, $code)
{
// when using the /e modifier, preg_replace slashes double-quotes but does not
// seem to slash anything else
$code = str_replace('\"', '"', $code);
switch ($type)
{
case 'php':
// Not the english way, but valid because of hardcoded syntax highlighting
if (strpos($code, '<span class="syntaxdefault"><br /></span>') === 0)
{
$code = substr($code, 41);
}
// no break;
default:
$code = str_replace("\t", ' ', $code);
$code = str_replace(' ', ' ', $code);
$code = str_replace(' ', ' ', $code);
$code = str_replace("\n ", "\n ", $code);
// keep space at the beginning
if (!empty($code) && $code[0] == ' ')
{
$code = ' ' . substr($code, 1);
}
// remove newline at the beginning
if (!empty($code) && $code[0] == "\n")
{
$code = substr($code, 1);
}
break;
}
$code = $this->bbcode_tpl('code_open') . $code . $this->bbcode_tpl('code_close');
return $code;
}
function bbcode_second_pass_code($type, $code)
{
$code = str_replace('\"', '"', $code);
$geshi_path = './includes/geshi/geshi.php';
if( !include_once( $geshi_path ) ) {
} else {
$astr_to = array('<', '>', '[', ']', '.', ':','"');
$astr_from = array('<', '>', '[', ']', '.', ':','"');
$code = str_replace($astr_from, $astr_to, $code);
if (!strlen($type)){
$type='purebasic';
}
$geshi = new GeSHi( $code, $type );
$geshi->set_header_type(GESHI_HEADER_NONE);
$code = $geshi->parse_code();
$code = str_replace( '<br />', '', $code );
}
$code = $this->bbcode_tpl('code_open') . $code . $this->bbcode_tpl('code_close');
return $code;
}
function selectCode(a)
{
// Get ID of code block
var e = a.parentNode.parentNode.getElementsByTagName('CODE')[0];
// Not IE and IE9+
if (window.getSelection)
{
var s = window.getSelection();
// Safari
if (s.setBaseAndExtent)
{
s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
}
// Firefox and Opera
else
{
// workaround for bug # 42885
if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<BR>')
{
e.innerHTML = e.innerHTML + ' ';
}
var r = document.createRange();
r.setStart(e.firstChild, 0);
r.setEnd(e.lastChild, e.lastChild.textContent.length);
s.removeAllRanges();
s.addRange(r);
}
}
// Some older browsers
else if (document.getSelection)
{
var s = document.getSelection();
var r = document.createRange();
r.selectNodeContents(e);
s.removeAllRanges();
s.addRange(r);
}
// IE
else if (document.selection)
{
var r = document.body.createTextRange();
r.moveToElementText(e);
r.select();
}
}
Никита Однороб:тут где-то ошибка теперь (после модификации)
$code = str_replace( '<br />', '', $code );
$code = $code.'<br />';
jQuery.fn.selectText = function(){
var d = document,
element = this[0],
range, selection
if (d.body.createTextRange) {
range = d.body.createTextRange()
range.moveToElementText(element)
range.select()
} else if (window.getSelection) {
selection = window.getSelection()
range = d.createRange()
range.selectNodeContents(element)
selection.removeAllRanges()
selection.addRange(range)
}
};
$(document)
// Code
.on('click', '.codebox > dt', function (e) {
e.preventDefault()
e.stopPropagation()
$(this).closest('.codebox').find('code').selectText()
})
factotum:так показалось прозрачней и практичней.
<a href="#" onclick="selectCode(this); return false;">{L_SELECT_ALL_CODE}</a>
<span>{L_SELECT_ALL_CODE}</span>
.on('click', '.codebox > dt', function (e) {
.on('click', '.codebox > dt > span', function (e) {
factotum:вроде и на iOS заработало, точно не помню.
Никита Однороб:Тему можно закрыть
нет. в iOS немного по другомуSumanai:А сейчас не работает?
все правильно. но лучше заменить на класс.Sumanai:По моему лучше будет заменить
.on('click', '.select-code', function (e) {
$geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
$geshi->set_header_type(GESHI_HEADER_PRE_TABLE);
int i
long x
<dl class="codebox"><dt>Код: <a href="#" onclick="selectCode(this); return false;">Выделить всё</a></dt><dd><code><table class="c" ><tbody><tr class="li1"><td style="width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;">1<br />2<br /></pre></td><td style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><pre style="font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;"><span style="color: #993333;">int</span> i<br /><span style="color: #993333;">long</span> x</pre></td></tr></tbody></table><br /></code></dd></dl>