Roadmap для client-side скриптов и дизайна
+ 1. Нормальный полноценный CSS и более приличные шаблоны темы и форума.
- 2. Скрипт который по нажатию ссылки reply открывает форму прямо на
++ 2. Скрипт который по нажатию ссылки reply открывает форму прямо на
странице (находящуюся в <div id="reply">).
- Форма должна открываться непосредственно под текущей ссылкой.
+ Форма должна открываться непосредственно под текущей ссылкой. vitus
- 3. Аналогичный скрипт для ссылки login
+- 3. Аналогичный скрипт для ссылки login. (нафиг не надо)
+ 4. client-side проверка прав доступа done, safir
+ 5 скрытие элементов управления,
недоступных текущему пользователю. done, vitus
6. Шаблоны остальных операций - по мере реализации оных.
7. Операция цитирования реплики, на которую отвечаешь (вероятно, с
server-side поддержкой)
- 8. Скрипт который при заполнении очередного поля аплоада картинки в
- форме реплики, добавляет следующее пустое поле.
++ 8. Скрипт который при заполнении очередного поля аплоада картинки в
+ форме реплики, добавляет следующее пустое поле. vitus
password_field.disabled=0;
}
}
+//
+// Вызывается при заполнении очередного поля аплоада картинки и
+// добавляет еще одно такое же.
+//
+function addPictureInput(tag) {
+ // Ищем вверх по дереву элемент с классом pictureinput
+ while (tag.className != "pictureinput") {
+ if (!tag.parentNode) {
+ // Не нашли
+ break;
+ }
+ tag=tag.parentNode;
+ }
+ // Теперь пошли вниз по сиблингам искать, есть ли пустое поле
+ var prev=tag;
+ while (tag && tag.className == "pictureinput") {
+ prev = tag;
+ tag=tag.nextSibling;
+ }
+ var inputs = prev.getElementsByTagName("input");
+ if (!inputs[0].value) {
+ // Последний элемент еще не заполнен. Новый не нужен.
+ return;
+ }
+ var copy = prev.cloneNode(true);
+ inputs = copy.getElementsByTagName("input");
+ inputs[0].value = "";
+ inputs[0].name="image"+(parseInt(inputs[0].name.substring(5,
+ inputs[0].name.length))+1);
+ inputs[0].title = inputs[0].name;
+ prev.parentNode.insertBefore(copy,tag);
+ return;
+}
+//
selected>Без разметки</option>
<option value="bbcode">BBCode</option>
<option value="html">Html</option></select></td></tr>
-<tr><td>Картинка</td> <td><input onchange="addPictureInput(this);" type=file name="image1"></td></tr>
+<tr class="pictureinput"><td>Картинка</td> <td><input onchange="addPictureInput(this);" type=file name="image1"></td></tr>
<tr><td colspan=2 align=right><input type=submit name="reply"
value="Высказаться">
</table>
selected>Без разметки</option>
<option value="bbcode">BBCode</option>
<option value="html">Html</option></select></td></tr>
-<tr><td>Картинка</td> <td><input onchange="addPictureInput(this);" type=file name="image1"></td></tr>
+<tr class="pictureinput"><td>Картинка</td> <td><input onchange="addPictureInput(this);" type=file name="image1"></td></tr>
<tr><td colspan=2 align="right">
<input type="button" value="Отмена" onclick="return hideForm('replyform');">
<input type=submit name="reply" value="Высказаться"></td></tr>