Код: Выделить всё

Есть любые вопросы, связанные со стилями/темами для phpBB 3.0.x? Задайте их здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Андруха
phpBB 1.0.0
Сообщения: 8
Стаж: 16 лет 3 месяца
Благодарил (а): 1 раз

Re: Код: Выделить всё

Сообщение Андруха »

MIT писал(а): Андруха писал(а):После замены стандартного

Зачем, позволь узнать?
Всего лишь потому, что в скачанном из этой темы текстовике написано:

Код: Выделить всё

Open template\bbcode.html
__________________
Find
        <div class="codetitle"><b>{L_CODE}:</b>
        <div class="codecontent">
<!-- END code_open -->

<!-- BEGIN code_close -->
        </div>

Replace With
        <div class="codetitle"><b>{L_CODE}:</b><a onclick="selectCode(this); return false;" href="#">Select all</a></div>
        <code class="codecontent">
<!-- END code_open -->

<!-- BEGIN code_close -->
        </code>
К стати я (как мне кажется) нашёл ошибку и исправил её так

Код: Выделить всё

<a href="#" onclick="selectCode(this); return false;">
функция по прежнему не вызывается, перебрасывает на верх страницы, зато "Выделить всё" реагирует на наведение.
Аватара пользователя
Андруха
phpBB 1.0.0
Сообщения: 8
Стаж: 16 лет 3 месяца
Благодарил (а): 1 раз

Re: Код: Выделить всё

Сообщение Андруха »

MIT писал(а):Вот у тебя используется функция selectCode, но она у тебя нигде не объявлена. Как думаешь, почему не работает?
Спасибо за подсказку, пару дней почитал и попробовал. Сейчас текст скрипта находится в голове загруженной страницы, функция объявлена...
Посоветуйте пожалуйста ещё. Своих мыслей к сожалению нет.
Аватара пользователя
Андруха
phpBB 1.0.0
Сообщения: 8
Стаж: 16 лет 3 месяца
Благодарил (а): 1 раз

Re: Код: Выделить всё

Сообщение Андруха »

Гдето я косячу... Код выделяется, всё в порядке, но выделяется только в первом блоке на странице, причем не важно из какого блока вызывается функция. Видимо selectCode(this) вставлено гдето не там т.к. "this" не работает. Дайте подсказку, может пойму...
AlexStudio
phpBB 1.0.0
Сообщения: 4
Стаж: 16 лет 2 месяца

Re: Код: Выделить всё

Сообщение AlexStudio »

И подниму опять вопрос:
Как всетаки сделать "Выделить все" и полоску прокрутки в Subsilver 2?
Предыдущие советы не пашут...
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Код: Выделить всё

Сообщение Shredder »

AlexStudio
Вот 100% работающий код, только что ставил:

Открыть /styles/subsilver2/template/bbcode.html

Найти:

Код: Выделить всё

<!-- BEGIN quote_close -->
</div>
<!-- END quote_close -->

<!-- BEGIN code_open -->
<div class="codetitle"><b>{L_CODE}:</b></div><div class="codecontent">
<!-- END code_open -->
Заменить на:

Код: Выделить всё

<!-- BEGIN code_open -->
<div>
<div class="codetitle"><b>{L_CODE}:</b> <a href="#" onclick="selectCode(this); return false;">{L_SELECT_ALL_CODE}</a></div>
<div class="codecontent">
<code>
<!-- END code_open -->

<!-- BEGIN code_close -->
</code>
</div>
</div>
<!-- END code_close -->
Открыть /styles/subsilver2/template/overall_header.html

Найти:

Код: Выделить всё

// ]]>
</script>
Добавить перед:

Код: Выделить всё

function selectCode(a)
{
	// Get ID of code block
	var e = a.parentNode.parentNode.getElementsByTagName('CODE')[0];

	// Not IE
	if (window.getSelection)
	{
		var s = window.getSelection();
		// Safari
		if (s.setBaseAndExtent)
		{
			s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
		}
		// Firefox and Opera
		else
		{
			var r = document.createRange();
			r.selectNodeContents(e);
			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();
	}
}
Открыть styles/subsilver2/theme/stylesheet.css

Найти:

Код: Выделить всё

.codecontent {
	direction: ltr;
	margin: 0 5px 10px 5px;
	padding: 5px;
	border-color: #A9B8C2;
	border-width: 0 1px 1px 1px;
	border-style: solid;
	font-weight: normal;
	color: #006600;
	font-size: 0.85em;
	font-family: Monaco, 'Courier New', monospace;
	background-color: #FAFAFA;
}
Заменить на:

Код: Выделить всё

.codecontent code {
	overflow: auto;
	display: block;
	height: auto;
	max-height: 200px;
	white-space: normal;
	margin: 0 5px 10px 5px;
	padding: 5px;
	border-color: #A9B8C2;
	border-width: 0 1px 1px 1px;
	border-style: solid;
	font-weight: normal;
	color: #006600;
	font-size: 0.85em;
	font-family: Monaco, 'Courier New', monospace;
	background-color: #FAFAFA;
}
Аватара пользователя
Андруха
phpBB 1.0.0
Сообщения: 8
Стаж: 16 лет 3 месяца
Благодарил (а): 1 раз

Re: Код: Выделить всё

Сообщение Андруха »

Андруха писал(а):Гдето я косячу... Код выделяется, всё в порядке, но выделяется только в первом блоке на странице, причем не важно из какого блока вызывается функция. Видимо selectCode(this) вставлено гдето не там т.к. "this" не работает. Дайте подсказку, может пойму...
Я по совету MIT

Код: Выделить всё

<div class="codetitle">

<b>{L_CODE}:</b>
<a href="#" onclick="selectCode(this) ;return false;">&nbsp;<i>Выделить всё</i></a></div><div class="codecontent"><code class="codecontent">
<!-- END code_open -->

<!-- BEGIN code_close -->
</code></div>
"обернул" в

Код: Выделить всё

<div></div>
получилось так

Код: Выделить всё

<!-- BEGIN code_open -->
<div>
<div class="codetitle">

<b>{L_CODE}:</b>
<a href="#" onclick="selectCode(this) ;return false;">&nbsp;<i>Выделить всё</i></a></div><div class="codecontent"><code class="codecontent">
<!-- END code_open -->

<!-- BEGIN code_close -->
</code></div></div>
<!-- END code_close -->
Работает всё чудесно! Огромное спасибо!

Вернуться в «Стили для phpBB 3.0.x»