LINUX.ORG.RU

Тестирование нового поля редактирования


0

1

На lor.vyborg.ru представлена новая система добавления и редактирования сообщений markItUp! (для LORCODE). Известная проблема одна: не работает javascript-слайдер выезжающей формы комментария. Кто знает, как пофиксить — милости прошу.

Тестируем, отписываемся.

Спасибо hizel'ю за площадку для тестирования.

Ответ на: комментарий от post-factum

это я нашёл в консоле ошибок файера и ещё если в файере нажать на типике ctrl + u я ухожу на другую тему почемуто

visual ★★★
()
Ответ на: комментарий от hizel

где говорите ваша реализация?

Вот пока что набросал. Работает пока что только с тегами b, i, u, s, но другие теги легко запилить.

#include <iostream>
#include <stack>

using namespace std;

struct tagstate {
	bool bold : 1;
	bool italic : 1;
	bool underlined : 1;
	bool strike : 1;
	bool operator!=(tagstate second) {
		return bold != second.bold ||
			italic != second.italic ||
			underlined != second.underlined ||
			strike != second.strike;
	}
	tagstate operator=(tagstate second) {
		bold = second.bold;
		italic = second.italic;
		underlined = second.underlined;
		strike = second.strike;
		return *this;
	}
} lorcode, html;

stack<char> html_tags;

int main()
{
	bool value;
	int state = 0;
	char tag;

	while (true) {
		char ch;
		cin>>ch;
		if (cin.eof()) {
			break;
		}

		switch (state) {
		case 0:	// Text
			switch (ch) {
			case '[':
				state = 1;
				value = true;
				break;
			default:
				if (lorcode != html) {
					// Close all opened html tags and open necessary
					while (!html_tags.empty()) {
						cout<<'<'<<'/'<<html_tags.top()<<'>';
						html_tags.pop();
					}
					if (lorcode.bold) {
						cout<<"<b>";
						html_tags.push('b');
					}
					if (lorcode.italic) {
						cout<<"<i>";
						html_tags.push('i');
					}
					if (lorcode.underlined) {
						cout<<"<u>";
						html_tags.push('u');
					}
					if (lorcode.strike) {
						cout<<"<s>";
						html_tags.push('s');
					}
					html = lorcode;
				}
				cout<<ch;
				break;
			}
			break;

		case 1:	// Tag start
			switch (ch) {
			case 'b':
			case 'i':
			case 'u':
			case 's':
				state = 2;
				tag = ch;
				break;
			case '/':	// Closing tag
				value = false;
				break;
			default:
				state = 0;
				cout<<'['<<ch;
				break;
			}
			break;
		case 2: // ']' required
			switch (ch) {
			case ']':
				state = 0;
				switch (tag) {
				case 'b':
					if (lorcode.bold != value) {
						lorcode.bold = value;
					} else {
						cerr<<"Double tag [b]"<<endl;
					}
					break;
				case 'i':
					if (lorcode.italic != value) {
						lorcode.italic = value;
					} else {
						cerr<<"Double tag [i]"<<endl;
					}
					break;
				case 'u':
					if (lorcode.underlined != value) {
						lorcode.underlined = value;
					} else {
						cerr<<"Double tag [u]"<<endl;
					}
					break;
				case 's':
					if (lorcode.strike != value) {
						lorcode.strike = value;
					} else {
						cerr<<"Double tag [s]"<<endl;
					}
					break;
				}
				break;
			default:
				state = 0;
				cout<<'[';
				if (!value) {
					cout<<'/';
				}
				cout<<tag<<ch;
				break;
			}
			break;
		}
	}

	// Close all opened html tags
	while (!html_tags.empty()) {
		cout<<'<'<<'/'<<html_tags.top()<<'>';
		html_tags.pop();
	}

	return 0;
}
Она генерирует неоптимальный html, например, встречаются такие штуки, как ‘</b><b>’ и ‘<b><i>ABC</i></b><i>DEF></i>’. Первое легко лечится, если не выводить теги сразу, а второе лечится, если запоминать порядок поступления lorcode-тегов и выводить html в таком же порядке.

Просьба сообщить, в чём ошибочность такого типа реализации, если она есть, и почему бы не запилить подобное, если ошибки нет.

gentoo_root ★★★★★
()

кстате говоря, в том же файерфоксе, addComments.js интерпретируется в cp1251 а на каноничном лоре в utf-8

visual ★★★
()
Ответ на: комментарий от gentoo_root

как то странно она парсит:

[b]A[s]B[/b]C[/s]
<b>A</b><b><s>B</s></b><s>C</s>

и я не вижу почему, если вы можете написать на С++, почему не можете написать на жабке

hizel ★★★★★
()
Ответ на: комментарий от hizel

>как то странно она парсит:

Если это: ‘</b><b>’, — то я знаю об этом, просто лень исправлять, это не сложно. Или что-то другое?

и я не вижу почему, если вы можете написать на С++, почему не можете написать на жабке

Не писал никогда раньше на Java, языка не знаю. Надо будет что-нибудь почитать по Java на досуге.

gentoo_root ★★★★★
()

Кстати сейчас если нет такого пользователя, то тег user зачёркивает то, что между ним. post-factum, vilfred, megabucks, anonymous. Может в таком случае не зачёркивать слово, а просто игнорировать тег? Забаненные зачёркиваются, а anonymous нет. Кстати для меня открытие, что последнего можно заигнорить.

octy ★★
()
Ответ на: комментарий от adriano32

Вообще, кнопка list работает неинтуитивно, только с выделением зачем-то. Логичнее было, что при щелчке на ней без выделения она создавала пустой список. Точно так же «элемент списка» работал бы без выделения, просто вставляя [*].

octy ★★
()
Ответ на: комментарий от octy

anonymous-а еще не забанили, зачем его зачеркивать

hizel ★★★★★
()

Ой какая страшная форма :(

o
()
Ответ на: комментарий от hizel

я имел ввиду, что в режиме лоркод:
вне [p] '\n' => '<br/>\n' и '[br]' => '<br/>'
внутри [p] только '[br]' => '<br/>'

но видимо ТеХофаги не одобрят

anonymous
()
Ответ на: комментарий от gentoo_root

из любимого тобой Linux kernel coding style:

The answer to that is that if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.

а в твоем куске быдлокода аж 6й уровень отступа

anonymous
()
Ответ на: комментарий от anonymous

>а в твоем куске быдлокода аж 6й уровень отступа

Я просто по быстрому написал код, чтобы было видно идею. И 6-ой отступ — это ещё не самое страшное в нём.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

Есть переводы, но надо искать 8 издание. В интернетах не нашёл, поэтому надо покупать. А если с англицким все ок - то гоу.

Deleted
()
Ответ на: комментарий от Deleted

Скачал, вроде, на английском первый том 8-го издания, буду читать.

gentoo_root ★★★★★
()
Ответ на: комментарий от post-factum

раньше оно очень редко случалось, а сейчас - стабильно. Надо бы разобраться какой из скриптов к этому привел

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Ну это же не markitup'овская проблема?

Скажи ещё, как вернуть выезд формы комментария по js. Я не пойму, почему он отвалился.

post-factum ★★★★★
() автор топика

Оффтопик:
post-factum, ты в цитатнике отправляешь в биореактор много хороших, смешных цитат. Сколько можно? И когда будет поддержка юникода?
По теме: будет здорово, когда эти фичи тут будут. Я лично за.

Dmitry_Sokolowsky ★★★★★
()
Ответ на: комментарий от Dmitry_Sokolowsky

Чё-то я про цитатник не понял.

А за фичи поборемся :).

post-factum ★★★★★
() автор топика
Ответ на: комментарий от visual

поправил, это ошибка в addComment.js которая проявлялась при обновлении jQuery. Из-за нее и форма не выезжала

maxcom ★★★★★
()
Ответ на: комментарий от gentoo_root

> Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.

Это я поправил, надо только тестовую базу перелить

maxcom ★★★★★
()
Ответ на: комментарий от gentoo_root

парсер ошибки не выдает, он их пытается исправить, но не всегда это делает как ожидает автор

maxcom ★★★★★
()
Ответ на: комментарий от post-factum

> Скажи ещё, как вернуть выезд формы комментария по js. Я не пойму, почему он отвалился.

Поправил

maxcom ★★★★★
()
Ответ на: комментарий от post-factum

да, там был код который ломался при обновлении на 1.5. Вчера была 1.4.2, сегодня я поставил 1.5.2, но возможно придется откатиться

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Кстати, с markitup'ом всё так же не работает. По крайней мере, у меня на локалхосте.

hizel, если есть время, смержи себе ветку от меня, я там списки пофиксил, вставку тегов. Немного приятнее. Resize всё такой же галимый, не пойму опять же, почему.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

внедрил

P.S. школье на тестовой площадке бушует, когда надоест... :-)

hizel ★★★★★
()
Ответ на: комментарий от DoctorSinus

Может, hizel его оттудова убрал.

Никак руки не дойдут разобраться, почему слайдинг формочки не работает.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от hizel

В каком смысле «новую»? Лучше было бы включить и натравить кого-нибудь на js, чтобы помог.

Если будешь опять включать, то ветку у себя я немного обновил.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

ну с тем же успехом, js-developer может завести у себя твой форк, учитывая существенное упрощение запуска отладочной копии

hizel ★★★★★
()
Ответ на: комментарий от post-factum

мне надоели петросяны, которые регулярно удаляют тестовые новости и отрезают шкворец maxcom-у и другим видными деятелям, душа болит :-(

hizel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.