Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 23 Ответов
  • 4961 Просмотров
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Здравствуйте.

Кнопка Сохранить располагается в структуре, приведенной во вложении.

Как в например Chrome ищется файл с функцией, которая начинает отрабатывать первой по нажатию этой кнопки?

Нашел в index.php вот такой код:
Код
<script type="text/javascript">

//<![CDATA[
Joomla.submitbutton=function(a){
var options = { path: '/', expires: 2}
if (a == 'apply') {
var idx = jQuery('#tabs li.current').index();
jQuery.cookie('vmapply', idx, options);
} else {
jQuery.cookie('vmapply', '0', options);
}
jQuery( '#media-dialog' ).remove();
Joomla.submitform(a);
};
//]]>...
Только не понимаю, как искать дальше и на тот ли след я напал :)
Где-то по цепи запускается SQL запрос, который надо найти и изменить

Благодарю
« Последнее редактирование: 27.05.2013, 16:29:57 от borro »
*

varX

  • Живу я здесь
  • 2450
  • 141 / 5
  • разработка компонентов
Вы браузером серверные функции пытаетесь искать, я правильно понял?
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Вы браузером серверные функции пытаетесь искать, я правильно понял?
вот это мысль :) может и так. не знаю как докопаться до места, которое формирует UPDATE запрос к БД. У вас есть идеи?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Если это действительно тот скрипт, который обрабатывает клик, то смотрите куда передается форма т.к. скрипт просто передает фому куда она просится. Чтобы проверить тот-ли это скрипт, поставьте во вкладке "Скрипт" FireBug стоп где-нибудь в этом скрипте, если стоп сработает - значит скрипт тот.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Похоже мне надо научиться пользоваться каким-нибудь IDE. NetBeans?
*

varX

  • Живу я здесь
  • 2450
  • 141 / 5
  • разработка компонентов
Похоже мне надо научиться пользоваться каким-нибудь IDE. NetBeans?

Это уже подает надежды. Но я бы рекомендовал блокнот.
Разработка и ремонт. VirtueMart. JoomShopping. Свои компоненты. Принимаю заявки на plasma-web.ru.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Это уже подает надежды. Но я бы рекомендовал блокнот.
я посмотрел - никаких хранимых процедур, триггеров, функций в базе нет. значит UPDATE запрос генерится в файлах?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Где-то по цепи запускается SQL запрос, который надо найти и изменить
Скорее всего в недрах JDatabaseTable (libraries/joomla/database/table.php), но это функция ядра. А перед тем, как оно будет вызвано - вызовется контроллер из /components/com_mycomponent/ (или /administrator/components/com_mycomponent), где mycomponent - название компонента.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Если собрать все скрытые инпуты и action формы то в 99% случаев эта информация исчерпывающе показывает на файл и функцию к которому(которой) форма обращается.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Скорее всего в недрах JDatabaseTable (libraries/joomla/database/table.php), но это функция ядра. А перед тем, как оно будет вызвано - вызовется контроллер из /components/com_mycomponent/ (или /administrator/components/com_mycomponent), где mycomponent - название компонента.
Здравствуйте. Смотрел урок от Lynda.com по написанию расширений под Joomla. Наверно от слабого английского плохо понял. Вы бы могли посоветовать русскоязычное видео или текст, по которому можно понять состав, функцию и последовательность взаимодействия основных программных частей/модулей(хелперы и пр.) Joomla?

Похоже нашел функцию, которая записывает данные в БД:
function save($data = 0) в файле vmcontroller.php
Думаю в ней поставить debug_backtrace, чтобы добраться до места, где запросы генерятся. Почему-то если в ее теле использую var_dump(), не видно его вывода в админке, как будто новая страница загружается и не успеваю увидеть вывода. Есть ли в php команда "СТОП"? Думаю все-таки в IDE это правильнее делать
« Последнее редактирование: 28.05.2013, 10:29:27 от borro »
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
die();
exit;
Благодарю.
поставил NetBeans, создал проект, указав папку локального сайта. Нажимаю Отладка проекта - запускается фронтенд сайта со довесом XDEBUG_SESSION_START=netbeans-xdebug в адресной строке, но при этом  в NetBeans все время бегает ползунок о том, что NetBeans все ожидает подключения и никак не подключится. Похоже Неправильно настроил. Посоветуйте пожалуйста статью как отлаживать под NetBeans локальный сайт. Не нашел. Хотя можно и по любой другой IDE.
« Последнее редактирование: 28.05.2013, 14:12:47 от borro »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Если поставите PhpStorm то расскажу как настроить отдадку в нем ) нетбиносом уже давно не пользуюсь... уж очень он слабый стал по сравнению с штормом!
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
уж очень он слабый стал по сравнению с штормом!
+100500
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Если поставите PhpStorm то расскажу как настроить отдадку в нем ) нетбиносом уже давно не пользуюсь... уж очень он слабый стал по сравнению с штормом!
закачиваю 5 версию в надежде не сильно перегрузить мою слабую рабочую машину. Можете начать рассказывать :)
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Все очень просто )
1. Создаем проект (достаточно просто нажать open directory и указать папку с сайтом на локале)
2. как проект прогрузился на панели инструментов  нажимаем на стрелочку

и там появится "Edit Configuration..." нажимаем по нему
3. увидим такое окошко в  нем в самом верху нажимаем на плюсик и выбираем "PHP Web Application"

4. появится окошко в котором вводим название проекта в поле "Name"
5. В поле Server есть кнопочка с тремя точками нажимаем на неё появится ещё одно окошко которое надо нажать на кнопку плюс и заполнить приблизительно так:

тоесть в поле host указываете путь к сайту который вы набираете в браузере у вас может быть localhost просто например! и нажимаем кнопку ок!
в предыдыщем окне должно стать так:

дописываем в поле "Start URL" после слеша index.php и нажимаем окей! настройка завершена!

дальше ставим точку остановки

и жмем по кнопке с тараканом (Debug или Run->debug или shift f9)
Если все настроенно правильно(Xdebug)
то сайт зависнет (как только перейдет к выполнению этой точки остановик), как будто не может загрузится и должен замигать phpStorm
после этого наш редактор станет таким:

при наведение на переменные до точки остановки, через несколько секунд, будет вылетать окошко где можно посмотреть их значение
ну и плюс в окошке Variables можно это посмотреть!
« Последнее редактирование: 28.05.2013, 17:18:03 от Istaan »
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Здравствуйте.
Когда запускается отладка возникает сообщение
Цитировать
C:\xampp\php\php.exe C:\xampp\htdocs\antilopa2\administrator\components\com_virtuemart\helpers\vmcontroller.php
Fatal error: Call to undefined function jimport() in C:\xampp\htdocs\antilopa2\administrator\components\com_virtuemart\helpers\vmcontroller.php on line 21
Call Stack:
    0.0011     444936   1. {main}() C:\xampp\htdocs\antilopa2\administrator\components\com_virtuemart\helpers\vmcontroller.php:0
Process finished with exit code 255
PHPStorm 6. В чем может быть причина? Может нельзя напрямую отлаживать vmcontroller.php, а надо поставив точку останова в vmcontroller.php запускать index.php сайта?

также хочу спросить, как понимать что entity is depricated? - много методов перечеркнуто при просмотре php кода
« Последнее редактирование: 05.06.2013, 13:47:39 от borro »
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Вот давно бы нашли уже )

Joomla.submitform($a) отправляет форму с task=$a - в вашем случае 'apply'

По action формы посмотрите - в какой контроллер будет передаваться этот task

В контроллере в функции registerTask ищите какой на самом деле метод сопоставлен 'apply'

А уж в этом методе контроллера будет большая вероятность найти ваш update запрос (ну или хотя бы отследить выполнение далее до модели или таблицы).


Полагаться на отладку Joomla-проектов в IDE не стОит - некоторые специфические методы автозагрузки классов IDE могут не понять.
Тот же PhpStorm не предложит вам ничего для объекта полученного через J...::getInstance() - если только вы явно в phpdoc-е не укажете тип объекта, который получаете.
Хотя многие фреймворки он нативно поддерживает, тот же Yii
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Благодарю. C вами так и до просветления недалеко :)
в action формы стоит "index.php". раз кнопка стоит в админке, то это файл /administrator/index.php?
В контроллере в функции registerTask ищите какой на самом деле метод сопоставлен 'apply'
Получается файл контроллера - это /administrator/index.php? Там нет registerTask
« Последнее редактирование: 05.06.2013, 14:06:18 от borro »
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
в action формы стоит "index.php"...

Ну гляньте hidden инпуты в конце формы - там будут или controller или view
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Ну гляньте hidden инпуты в конце формы - там будут или controller или view

да, нашел, "product" там было. верно пали подозрения на vmcontroller.php, die() помог это понять, надо не бояться его применять.
В этом файле есть функция $model->store($data);
Погружаюсь далее и видимо в vmmodel.php...

Поклон!
« Последнее редактирование: 05.06.2013, 15:06:03 от borro »
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
В функции save файла vmcontroller.php есть строки

Код
...
$model = VmModel::getModel($this->_cname);
$id = $model->store($data);
...
Если открыть файл administrator/components/com_virtuemart/helpers/vmmodel.php, то в нем есть определение функции store. Если в ней ставлю exit() или die(), то ничего не происходит.
Вопрос, если происходит инициализация объекта класса VmModel:
Код
$model = VmModel::getModel($this->_cname);
, то изменения в одном из его методов(добавил в функцию store код:
Код
var_dump($data);
die();
)
должны изменять ход выполнения строки
Код
$id = $model->store($data);
а именно останов выполнения функции?
« Последнее редактирование: 05.06.2013, 17:26:51 от borro »
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Вам надо искать конкретную модель, которая инициализируется в данном контексте, а не абстрактную vmmodel
Так что надо выяснить что у вас в $this->_cname для начала - и смотреть фукнцию store этой модели.
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Ну гляньте hidden инпуты в конце формы - там будут или controller или view
Здравствуйте.
Волею судеб снова надо разобраться с тем, что происходит после нажатия этой кнопки Сохранить.
Если бы я тогда ответил Вам, что там в скрытом инпуте стоит
<input type="hidden" name="view" value="product">
Какой файл Вы бы посоветовали искать тогда далее чтобы вести отладку?  ^-^ Вообще дело, как вы может быть поняли, происходит в админке VirtueMart при редактировании карточки товара
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Improved AJAX Login & Register + социальные кнопки

Автор atkaa1

Ответов: 12
Просмотров: 3157
Последний ответ 07.10.2017, 18:02:29
от vipiusss
jQuarks - нет кнопки "Показывать результаты сразу" в админке

Автор Cristallizacia

Ответов: 0
Просмотров: 1011
Последний ответ 05.06.2014, 14:20:49
от Cristallizacia
[Решено] Сохранить файл на удаленном ПК и прочитать 

Автор AlekVolsk

Ответов: 18
Просмотров: 1218
Последний ответ 03.04.2014, 13:55:16
от AlekVolsk
Не загружается файл

Автор x_files_1

Ответов: 0
Просмотров: 896
Последний ответ 24.02.2014, 13:02:36
от x_files_1
Как форму HTML с обработчиком на php превравить в модуль Joomla 3.1.5?

Автор sevzem

Ответов: 4
Просмотров: 1253
Последний ответ 14.02.2014, 18:25:10
от sevzem