На информационном ресурсе применяются cookie-файлы. Оставаясь на сайте, вы подтверждаете свое согласие на их использование.
Вопрос к понимающим в js, jquery
4326
7
Koda5
experienced
Всем доброго времени суток!
Признаться вобще мало разбираю сей язык, а вот сталкиваться с ним так или иначе приходится.
Пытаюсь адаптировать CKeditor под возможность загрузки лайтбоксовых картинок. Если с пхп частью всё более-менее понятно, то добавить мельчайшую функцию в жс код беда неимоверная.
Есть пара файликов:
Здесь описываесь окошко загрузки файла на сервер, к нему требовалось добавить параметры ширина и высота, обозвал их imgwidth и imgheight;
...
{
id : 'Upload',
hidden : true,
filebrowser : 'uploadButton',
label : editor.lang.image.upload,
elements :
[
{
type : 'file',
id : 'upload',
label : editor.lang.image.btnUpload,
style: 'height:40px',
size : 38
},
{
id : 'imgwidth',
type : 'text',
label : 'Ширина',
style : 'width: 30%',
'default' : '200',
onChange : function()
{
alert(this.getValue());
}
},
{
id : 'imgheight',
type : 'text',
label : 'Высота',
style : 'width: 30%',
'default' : '100',
onChange : function()
{
alert(this.getValue());
}
},
{
type : 'fileButton',
id : 'uploadButton',
filebrowser : 'info:txtUrl',
label : editor.lang.image.btnUpload,
'for' : [ 'Upload', 'upload']
}
]
},
...
и второй, сжатый жс, что собирает параметры для отправки пхпешке:
...
function q(v,w,x){var y=x.params||{};
y.CKEditor=v.name;y.CKEditorFuncNum=v._.filebrowserFn;if(!y.langCode)y.langCode=v.langCode;
y.img_width=?????;y.img_height=?????;
w.action=m(x.url,y);w.filebrowser=x;};
...
Нужно передать this.getValue() из первого файла во второй. Дабы не разбираться во всех остальных нутрях, думал это сделать через чего-нить подобное глобальным переменным, но так и не нашёл рабочего варианта.
Вопрос - куда нужно записать this.getValue(), чтоб добраться до него из второго жс-ника ?
Признаться вобще мало разбираю сей язык, а вот сталкиваться с ним так или иначе приходится.
Пытаюсь адаптировать CKeditor под возможность загрузки лайтбоксовых картинок. Если с пхп частью всё более-менее понятно, то добавить мельчайшую функцию в жс код беда неимоверная.
Есть пара файликов:
Здесь описываесь окошко загрузки файла на сервер, к нему требовалось добавить параметры ширина и высота, обозвал их imgwidth и imgheight;
...
{
id : 'Upload',
hidden : true,
filebrowser : 'uploadButton',
label : editor.lang.image.upload,
elements :
[
{
type : 'file',
id : 'upload',
label : editor.lang.image.btnUpload,
style: 'height:40px',
size : 38
},
{
id : 'imgwidth',
type : 'text',
label : 'Ширина',
style : 'width: 30%',
'default' : '200',
onChange : function()
{
alert(this.getValue());
}
},
{
id : 'imgheight',
type : 'text',
label : 'Высота',
style : 'width: 30%',
'default' : '100',
onChange : function()
{
alert(this.getValue());
}
},
{
type : 'fileButton',
id : 'uploadButton',
filebrowser : 'info:txtUrl',
label : editor.lang.image.btnUpload,
'for' : [ 'Upload', 'upload']
}
]
},
...
и второй, сжатый жс, что собирает параметры для отправки пхпешке:
...
function q(v,w,x){var y=x.params||{};
y.CKEditor=v.name;y.CKEditorFuncNum=v._.filebrowserFn;if(!y.langCode)y.langCode=v.langCode;
y.img_width=?????;y.img_height=?????;
w.action=m(x.url,y);w.filebrowser=x;};
...
Нужно передать this.getValue() из первого файла во второй. Дабы не разбираться во всех остальных нутрях, думал это сделать через чего-нить подобное глобальным переменным, но так и не нашёл рабочего варианта.
Вопрос - куда нужно записать this.getValue(), чтоб добраться до него из второго жс-ника ?
Дабы не разбираться во всех остальных нутрях, думал это сделать через чего-нить подобное глобальным переменным, но так и не нашёл рабочего варианта.В лоб - http://api.jquery.com/data/
Вопрос - куда нужно записать this.getValue(), чтоб добраться до него из второго жс-ника ?
По правильному, наверное передать функции q соответсвующие параметры, она же откуда-то вызывается.
Ну и нужно помнить, что глобальные переменные это всегда зло.
Спасибо, возможноб это и сработало еслиб я нашёл правильное место во втором файле...
Беда оказалось в том что ГЕТ запрос собирается в момент открытия окна, а не при клике на кнопку "Загрузить изображение".
Начал копать дальше итог мозг взоврван вобще, руки уже опускаются( Благо хоть исходник нашел второго файла. Ситуация в целом немного прояснилась, но до конца довести не могу.
Прилагаю оба файла:
image.js
со строчки 1176 начинается опись окошка где происходит загрузка файла, сам добавил туда следущие поля:
use_lightbox, imgwidth, imgheight
plugin.js
функция setupFileElement - собирает гет строку, вызывается при открытии окошка добавления каринки в текст
функция uploadFile - срабатывает при клике на кнопку отправки, проверяет заполненость полей
требуется в функции uploadFile добавить в ГЕТ запрос переменные use_lightbox, imgwidth, imgheight
Если кто готов взяться, напишите в личку почём обойдётся.
Беда оказалось в том что ГЕТ запрос собирается в момент открытия окна, а не при клике на кнопку "Загрузить изображение".
Начал копать дальше итог мозг взоврван вобще, руки уже опускаются( Благо хоть исходник нашел второго файла. Ситуация в целом немного прояснилась, но до конца довести не могу.
Прилагаю оба файла:
image.js
со строчки 1176 начинается опись окошка где происходит загрузка файла, сам добавил туда следущие поля:
use_lightbox, imgwidth, imgheight
plugin.js
функция setupFileElement - собирает гет строку, вызывается при открытии окошка добавления каринки в текст
функция uploadFile - срабатывает при клике на кнопку отправки, проверяет заполненость полей
требуется в функции uploadFile добавить в ГЕТ запрос переменные use_lightbox, imgwidth, imgheight
Если кто готов взяться, напишите в личку почём обойдётся.
Не знаю, поможет это Вам или нет, но в в plugins.js написан следующий текст:
* The filebrowser plugin also supports more advanced configuration performed through
* a JavaScript object.
*
* The following settings are supported:
*
* <ul>
* <li><code>action</code> – <code>Browse</code> or <code>QuickUpload</code>.</li>
* <li><code>target</code> – the field to update in the <code><em>tabId:elementId</em></code> format.</li>
* <li><code>params</code> – additional arguments to be passed to the server connector (optional).</li>
* <li><code>onSelect</code> – a function to execute when the file is selected/uploaded (optional).</li>
* <li><code>url</code> – the URL to be called (optional).</li>
* </ul>
и ниже пример.
* The filebrowser plugin also supports more advanced configuration performed through
* a JavaScript object.
*
* The following settings are supported:
*
* <ul>
* <li><code>action</code> – <code>Browse</code> or <code>QuickUpload</code>.</li>
* <li><code>target</code> – the field to update in the <code><em>tabId:elementId</em></code> format.</li>
* <li><code>params</code> – additional arguments to be passed to the server connector (optional).</li>
* <li><code>onSelect</code> – a function to execute when the file is selected/uploaded (optional).</li>
* <li><code>url</code> – the URL to be called (optional).</li>
* </ul>
и ниже пример.
С params уже ставил эксперименты, пытался их динамически менять. Но так и не разобрался как это сделать. А потом еще увидел, что они применяются в момент загрузки страницы в функции setupFileElement и бросил эту затею совсем.
"ОнСелект" признаться не заметил - сейчас попробовал - он выполняется уже после аплода файла.
функция uploadFile для этой цели вродь само-то подходит, но я не не могу сообразить как из неё поменять этот action, что задаётся в setupFileElement, и как добраться до переменных use_lightbox, imgwidth, imgheight. Хотя для последнего можноб было поиспользовать злые глобальные переменные)))
"ОнСелект" признаться не заметил - сейчас попробовал - он выполняется уже после аплода файла.
функция uploadFile для этой цели вродь само-то подходит, но я не не могу сообразить как из неё поменять этот action, что задаётся в setupFileElement, и как добраться до переменных use_lightbox, imgwidth, imgheight. Хотя для последнего можноб было поиспользовать злые глобальные переменные)))
Решение найдено) помог метод тыка и немного логики. и почти без глобальных переменных

Покажите решение, может кому-нибудь понадобиться.
Сейчас читают
Падет ли БЗ как Рим под нашествием варваров?
51995
413
Тунис... стоит ли ехать?
227497
119
Почему мне не нравится Новосибирск? (часть 2)
175939
991
До экшена , где хранится гет строка, добраться можно следущим образом:
До значений полей, также при наличии "диалога" ( w=y.getDialog(); ):
В итоге получилось:
Все это положил в функцию fileUpload.
Переделаю ещё немного, чтоб только для лайтбоксовых рисунков были все эти параметры + уходить будет на другую пхпшку.
var y=this;var w=y.getDialog();
w.getContentElement(y['for'][0],y['for'][1]).getInputElement().getParent().$.action
До значений полей, также при наличии "диалога" ( w=y.getDialog(); ):
w.getContentElement('Upload', 'imgwidth').getInputElement().$.value
//где Upload - ид вкладки, imgwidth - ид конкретного элемента.
В итоге получилось:
function strpos( haystack, needle, offset){
var i = haystack.indexOf( needle, offset );
return i >= 0 ? i : false;
}
if (w.getContentElement('Upload', 'imgwidth') !== undefined) {
//проверка существует ли поле imgwidth. Без проверки будут вылетать ошибки в js т.к. функция используется не только для загрузки картинок
if (strpos(w.getContentElement(y['for'][0],y['for'][1]).getInputElement().getParent().$.action, 'imgwidth' ,0)==false)
{window.action_orig = w.getContentElement(y['for'][0],y['for'][1]).getInputElement().getParent().$.action; }
//window.action_orig - переменная в которой храню изначальное значение экшена, без добавления моих элементов. в if заходит только если в экшене нет 'imgwidth'
var action_add = '';
action_add = action_add+'&imgwidth='+w.getContentElement('Upload', 'imgwidth').getInputElement().$.value;
action_add = action_add+'&imgheight='+w.getContentElement('Upload', 'imgheight').getInputElement().$.value;
action_add = action_add+'&use_lightbox='+w.getContentElement('Upload', 'use_lightbox').getInputElement().$.checked;
w.getContentElement(y['for'][0],y['for'][1]).getInputElement().getParent().$.action = window.action_orig + action_add;
}
Все это положил в функцию fileUpload.
Переделаю ещё немного, чтоб только для лайтбоксовых рисунков были все эти параметры + уходить будет на другую пхпшку.
ТОП 5
3
4