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

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Информация по написанию компонента
« Ответ #210 : 08.03.2010, 22:02:57 »
здравствуйте вновь! у меня такие вопросики - первый по форуму - как повысить пользователю карму? (чего-то не нашёл).
когда будет 20 сообщений.

task - то функция.
модель попытается выполнить указанную в task текст, как имя метода класса
осталось определиться правильно ли передается view для вызова соотв. модели контроллера
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #211 : 08.03.2010, 22:39:38 »
осталось определиться правильно ли передается view для вызова соотв. модели контроллера
Вот в этом-то и вопрос - как в данной реализации передать в модель task delete? Например, при создании, у меня task add вызывается post'ом из отдельной формы 'add', а тут отдельной формы нет, да и к тому же есть ещё и edit (тоесть постом данной формы один из двух методов не вызвать - как понять когда какой?).
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #212 : 08.03.2010, 22:43:46 »
щас пишу немного по-другому:

в контролллере добавил:

Код
function remove()
{
$arrayIDs = JRequest::getVar('cid', null, 'default', 'array' );
if($arrayIDs === null)
{
JError::raiseError(500, 'cid missing');
}
$model = &$this->getModel('Technics3');
$model->deleteTechnics($arrayIDs);
$redirectTo = JRoute::_('index.php?option='.JRequest::getVar('option'));
$this->setRedirect($redirectTo, 'Deleted..');
}

далее в модель:

Код
	function deleteTechnics($arrayIDs)
{
$query = "DELETE FROM #__usertech WHERE id IN (".implode(',', $arrayIDs).")";
$db = $this->getDBO();
$db->setQuery($query);
if (!$db->query())
{
$errorMessage = $this->getDBO()->getErrorMsg();
JError::raiseError(500, 'Error deleting: '.$errorMessage);
}
}

только вот как вызывать всё это чудо из вида - пока не осознал :(
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #213 : 08.03.2010, 23:04:27 »
А можно ли как-нибудь из javascript-функции (или ещё откуда можно) во view вызвать(передать) task delete?
чутьё подсказывает, что это была бы самая лафовая реализация... Просто в эту js-функцию я могу передать всё что нужно (id, название...), а там уже оттуда в контроллер, а он к модели..

« Последнее редактирование: 08.03.2010, 23:24:19 от viroff »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #215 : 09.03.2010, 18:56:08 »
спасибо, конечно, но мне бы всё это в front-end замутить.... а там, насколько я понимаю JToolBarHelper не работает.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #216 : 09.03.2010, 19:19:10 »
А до конца дочитали? Там есть описание, какой JS надо добавить, чтобы работала СВОЯ кнопка.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #217 : 09.03.2010, 20:44:57 »
А до конца дочитали? Там есть описание, какой JS надо добавить, чтобы работала СВОЯ кнопка.

Простите, проглядел....(просто я уже про тулбархэлпер насмотрелся, а вот этого не видел - хороший, однако, ресурс -docs.joomla.org :) )
в очередной раз меня на путь истинный направляете - буду ковырять в этом направлении.
Код
A Custom button relies on javascript from includes/js/joomla.javascript.js to execute the task indicated by the user:
function submitbutton(pressbutton) {
  submitform(pressbutton);
}
In more complex cases a user can override this javascript by implementing his own submitbutton function. To keep the toolbar buttons in working order, the user has to replace the document.adminForm.task.value with the pressbutton value:
function submitbutton(pressbutton) {
// Some conditions
  document.adminForm.task.value=pressbutton;
// More conditions
  submitform(pressbutton);
}

вот оно.
« Последнее редактирование: 09.03.2010, 20:50:41 от viroff »
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #218 : 09.03.2010, 22:04:06 »
тоесть получается, что я ПЕРЕОПРЕДЕЛЮ function submitbutton(pressbutton) НЕ в includes/js/joomla.javascript.js А в своём файлике (view например) на такую
Код
function submitbutton(pressbutton) {
document.adminForm.task.value=pressbutton;
submitform(pressbutton);
}
далее, вызвав эту ф-цию  submitbutton('del'), моему контроллеру полетит task 'del', а если тут же вызову submitbutton('edit'), то случится edit?
вызов, только на ум не приходит.. :'(
или же эту ф-цию. в родном джумловском js надо переписать (изменить)?
« Последнее редактирование: 09.03.2010, 22:11:51 от viroff »
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #219 : 09.03.2010, 22:38:53 »
получилось! из view, по крайней мере уходит task, какой надо! :D

переопределил ф-цию в моём view, а на кнопках передаю вот чего:
Код
<img alt="edit" src="edit.png" onclick="return submitbutton('edit')" />

<img alt="del" src="delete.png" onclick="return submitbutton('remove')" />

проверил так - при нажатии на сие чуда в адресной строке пишется
Код
http://localhost/Joomla15/index.php?id=&option=com_technics3&063ee764742c79602177e420d4d82a08=1&task=remove
или
Код
http://localhost/Joomla15/index.php?id=&option=com_technics3&063ee764742c79602177e420d4d82a08=1&task=edit

таки, из view я ушёл, теперь функции в контроллере и в модели пишу...

а можно ли в таск параметры передавать?  ::)
« Последнее редактирование: 09.03.2010, 22:50:42 от viroff »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #220 : 10.03.2010, 12:26:01 »
Ну как обычно через POST или GET. Потом через JRequest::getVar() получать.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #221 : 10.03.2010, 14:25:55 »
не совсем понятно (в очередной раз) - сделал я то, что описал выше, только вот как проверить попадание task'a в контроллер? Ну не вызывается и всё тут.
я, значит, пишу пока для проверки так:
view - как и было (см. выше)
controller:
Код
function remove()
{
JRequest::setVar('view', 'single');
$this->display();
}
-взято из рабочего метода add() - ну хоть показать single должон? (Хотя add вызывается из меню с главной страницы - тоесть я его в бэкэнде добавил в менюшку)

К тому же, в атрибутах формы пишу method="post" - вроде постит (соответственно, адресная строка, которую я описывал постом выше, меняется на ткую - index.php?option=com_technics3 (значение параметра action у формы) это значит "спостил", значит передались мои параметры?
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Информация по написанию компонента
« Ответ #222 : 10.03.2010, 15:32:50 »
поставь туда просто echo '**************';
и не парь се моск.
сразу все будет видно - отрабатывает или нет.
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #223 : 10.03.2010, 17:52:38 »
поставь туда просто echo '**************';
и не парь се моск.
сразу все будет видно - отрабатывает или нет.
Предложу свой способ:

var_dump($_REQUEST); die(); :)

ну или чтобы совсем красиво echo '<pre>'.var_dump($_REQUEST).'</pre>'; die();
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #224 : 10.03.2010, 22:34:03 »
каюсь, товарищи...
ничего у меня не получалось, потому, что я поступил как кофейник.
Писал (по урокам уважаемого bzzik'a) компонент для админки.
Потом, вдохновившись результатами решил перенести это во фронт. Copy - Paste.
В результате у меня view фронтэндные вызывают методы в бэкэндном контроллере....
Иду читать матчасть, но если коротенько объясните, не обижусь :)
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #225 : 11.03.2010, 00:28:34 »
Хы, это интересно. Я думаю, что надо подправить в файле точки входа:

require_once (JPATH_COMPONENT_ADMINISTRATOR.DS.'controller.php');
на
require_once (JPATH_COMPONENT.DS.'controller.php');
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #226 : 11.03.2010, 11:39:28 »
Хы, это интересно. Я думаю, что надо подправить в файле точки входа:

require_once (JPATH_COMPONENT_ADMINISTRATOR.DS.'controller.php');
на
require_once (JPATH_COMPONENT.DS.'controller.php');

да, спасибо, я уже понял - уже прошёлся по "Запискам начинающего веб-мастера" - действительно, упустил я точку входа... вот и подтыкается у меня вместо фронта бэкэндовский контроллер. Пролистал записки вновь и получил больше понимания, нежели когда в первый раз читал. Правильно - пока пишешь - учишься, а как написал - забываешь.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #227 : 11.03.2010, 11:59:37 »
А у меня все никак времени нету их продолжить :( Хорошо, что хоть основное успел написать.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #228 : 11.03.2010, 22:42:13 »
А у меня все никак времени нету их продолжить :( Хорошо, что хоть основное успел написать.
Вот и хорошо... что успели написать :) Сегодня с удалением разобрался - работает, что вдохновляет. Впереди редактирование и просмотр подробностей.
Затем уже буду добавлять возможность загрузки фото в базу.

Не хочется забегать далеко вперёд, но, в двух словах подскажите, пожалуйста, у кого уже опыт есть - как лучше фотки в базе хранить - в base64 (аль ещё как?) или ссылки в базу, а изображения на сервере. Фоты - ну например 320х240 jpeg, на одну запись в бд их около 4, а записей всего около 700 :) (я склонен ко второму варианту, но пока не искал ничего). ;)
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #230 : 11.03.2010, 23:12:00 »
ферштейн, спасибо.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #231 : 15.03.2010, 21:55:07 »
здравствуйте все!
У меня такая ситуация: мне необходимо выводить содержимое моей бд (около 700-800 записей) в таблицу ПОСТРАНИЧНО - по 50 - 60 записей на страницу. Вопрос такой: стоит ли загружать всё содержимое бд для каждого пользователя (обращения на страницу), а потом раскладывать на страницы,
либо же мудрее будет загружать из базы уже по кусочкам (столько сколько пользователь попросил). В теории второй вариант медленнее для пользователя (если он смотрит более 2х страниц) но это не важно. Акцент хочется сделать на стабильность работы базы при массовых запросах.
Сейчас склоняюсь к первому способу реализации.
Поделитесь мыслями и опытом. (база - 700-800 записей, загрузка - максимум 50 пользователей смотрят записи одновременно).
« Последнее редактирование: 15.03.2010, 23:03:48 от viroff »
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #232 : 15.03.2010, 23:09:41 »
здравствуйте все!
У меня такая ситуация: мне необходимо выводить содержимое моей бд (около 700-800 записей) в таблицу ПОСТРАНИЧНО - по 50 - 60 записей на страницу. Вопрос такой: стоит ли загружать всё содержимое бд для каждого пользователя (обращения на страницу), а потом раскладывать на страницы,
либо же мудрее будет загружать из базы уже по кусочкам (столько сколько пользователь попросил). В теории второй вариант медленнее для пользователя (если он смотрит более 2х страниц) но это не важно. Акцент хочется сделать на стабильность работы базы при массовых запросах.
Сейчас склоняюсь к первому способу реализации.
Поделитесь мыслями и опытом. (база - 700-800 записей, загрузка - максимум 50 пользователей смотрят записи одновременно).

вопрос снят - http://docs.joomla.org/Using_JPagination_in_your_component
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #233 : 27.03.2010, 16:32:57 »
Здравствуйте снова! pagination сделал, теперь странички выводятся так как надо, кнопочки в строках работают...
Есть кнопка отображения подробностей, при нажатии на неё переход по ссылке (открывается вид) с загрузкой необходимой информации из базы. А вот как сделать popup window, я чего-то пока не знаю (да и хорошо ли это?) Подскажите, кто опытнее - как лучше - подробности показывать popup или отдельным видом? (если попап, то как его вызвать) и в него передать инфу (вопросик несколько абстрактный и объёмный, но я, как могу его ковыряю сам) ИЛИ же лучше оставить вывод подробностей в отдельном виде, но тогда ПОДСКАЖИТЕ, пожалуйста, какую мне кнопку написать, чтобы вернуться назад на ТУ страницу в pagination, С КОТОРОЙ я ушёл в подробности? (пока я понимаю так - нужно ссылочку на эту страницу в вид передавать, а потом на кнопке "НАЗАД" по ней переходить)
С нетерпением жду ваших советов.
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Информация по написанию компонента
« Ответ #234 : 28.03.2010, 04:00:31 »
(это ммм)...
Здравствуйте товарищ viroff
Самый эфекктивный поп поднять это будет что то типа
<a href="#" onklick="alert('Lf ghb,eltn c yfvb cbkf")Ура</a>:)
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #235 : 28.03.2010, 11:33:18 »
 :( а они ещё и издеваются.

тем не менее, столкнулся с ещё одной бедой - submitbutton (из-за submitform) не срабатывает, если пользователь не зарегистрирован.
Как это лечится не нашёл. Или это так и должно быть?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #236 : 28.03.2010, 14:13:35 »
:( а они ещё и издеваются.

тем не менее, столкнулся с ещё одной бедой - submitbutton (из-за submitform) не срабатывает, если пользователь не зарегистрирован.
Как это лечится не нашёл. Или это так и должно быть?

Хмм, вот этого не знаю. По идее не должно быть так.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #237 : 28.03.2010, 16:48:09 »
Хмм, вот этого не знаю. По идее не должно быть так.
Код
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.view');

?>
<div class="componentheading"><?php echo JText::_('VIEWTECH TITLE'); ?></div>


<script language="javascript" type="text/javascript">
/**
* Default function.  Usually would be overriden by the component
*/
function submitbutton(pressbutton)
{
document.adminForm.task.value=pressbutton;
submitform(pressbutton);
}
    function ViewInfo(InfoId)
{

document.adminForm.techId.value=InfoId;
alert(document.adminForm.techId.value);
submitbutton('info');
}
function Edit(editTechId)
{
document.adminForm.techId.value=editTechId;
submitbutton('edit')
    }

function Delete(deletingId, deletingName)
{
        var agree = confirm('<?php echo JText::_('AGREE ROW DELETE'); ?>'+' '+ deletingName+'?');
if(agree)
{
document.adminForm.techName.value=deletingName;
document.adminForm.techId.value=deletingId;
submitbutton('remove');
}
else
{
return 0;
}
    }
function changePage(pagenumber)
{
/*<?$currentpagenumber=pagenumber?>*/
}


</script>
<style type="text/css">
        .style1
        {
            width: 100%;
            border: 2px solid #FFFFFF;
            background-color: #C0C0C0;
font-size: x-small;
line-height: 1;
        }
.style2
        {
            width: 100%;
            border: 2px solid #FFFFFF;
            background-color: #eff1fe;
font-size: x-small;
line-height: 1;
        }
.style3
        {
            width: 100%;
            border: 2px solid #FFFFFF;
            background-color: #f7f7f7;
font-size: x-small;
line-height: 1;
        }
.style4
        {
            width: 99%;
            background-color: #ff9393;
border-style: thin;
        }
.styledownbtn
{
font-size: x-small;
}
</style>
<?
$user =& JFactory::getUser();
?>
<form action="index.php?option=com_technics3" name="adminForm"  method="post" id="adminForm">
<table id="viewTable" class="style1";>
<tr bgcolor="#E0E0E0" style="text-align: center; font-weight: bold;">
        <td>
            <?php echo JText::_('TABLEHEAD NUMBER'); ?></td>
<td>
            <?php echo JText::_('TABLEHEAD NAME'); ?></td>
        <td>
            <?php echo JText::_('TABLEHEAD TYPE'); ?></td>
        <td>
            <?php echo JText::_('TABLEHEAD NOTES'); ?></td>
        <td>
            <?php echo JText::_('TABLEHEAD COUNTRY'); ?></td>
        <td>
            <?php echo JText::_('TABLEHEAD REGION'); ?></td>
        <td>
            <?php echo JText::_('TABLEHEAD CITY'); ?></td>
        <td>
            <?php echo JText::_('TABLEHEAD PRICE'); ?></td>
<td>
            <?php echo JText::_('TABLEHEAD ISFOTO'); ?></td>
        <td>
            <?php echo JText::_('TABLEHEAD DOIT'); ?></td>
    </tr>
<?php

foreach ($this->items as $row)
{

if(($i % 2)==0)
{
?>
<tr class="style3">
<?
}
else
{
?>
<tr class="style2">
<?
}
$i++;
?>

   
        <td>
            <?echo $this->pagination->limitstart+$i;?></td>
        <td>
            <?echo $row->name;?></td>
        <td>
            <?echo $row->type;?></td>
        <td>
            <?echo $row->notes;?></td>
        <td>
            <?echo $row->country;?></td>
        <td>
            <?echo $row->region;?></td>
        <td>
            <?echo $row->city;?></td>
        <td>
            <?echo $row->price;?></td>
<td>
<? if($row->imagename!=null){?><img alt="foto" src="tick.png" /><?}?></td>
        <td>
<img alt="info" src="info.png" onclick="return ViewInfo(<?echo $row->id;?>)" />
<?if(($user->id == $row->ownerid))
{
if($user->guest != 1)
{?>
<img alt="edit" src="edit.png" onclick="return Edit(<?echo $row->id;?>)" />

<img alt="del" src="delete.png" onclick="return Delete(<?echo $row->id;?>, '<?echo $row->name;?>')" />
<?}}?></td>
    </tr>
<?php
}
$firstrownumber=$rowsperpage+1;
?>
<input type="hidden" name="id" value="<?php echo $row->id; ?>" />
<input type="hidden" name="option" value="com_technics3" />

<?php echo JHTML::_('form.token'); ?>
<input type="hidden" name="task" value=""/>
<input type="hidden" name="techId" value="" />
<input type="hidden" name="techName" value="" />


<img src="info.png" />-<?php echo JText::_('TABLEHEAD BUTTON INFO'); ?>
<img src="edit.png" />-<?php echo JText::_('TABLEHEAD BUTTON EDIT'); ?>
<img src="delete.png" />-<?php echo JText::_('TABLEHEAD BUTTON DEL'); ?>
</table>
<?php echo $this->pagination->getListFooter(); ?>
</form>
вот код. На форуме видел такую же проблему - человек решил, а как не написал :( 
http://joomlaforum.ru/index.php/topic,82992.0.html
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #238 : 29.03.2010, 10:29:11 »
Хмм... Может откликнется. Можно ещё на официальном форуме спросить.
*

viroff

  • Осваиваюсь на форуме
  • 42
  • 0 / 0
  • потому что не все йогурты одинаково полезны...
Re: Информация по написанию компонента
« Ответ #239 : 29.03.2010, 19:04:31 »
http://forum.joomla-addons.org/index.php?topic=1969.0
вроде по теме, но вот вкурить не могу - про какой "the Joomla head section" он говорит?
если имеется ввиду переопределение ф-ции, так оно у меня имеется. Такое ощущение, что оно не видится.
http://forum.joomla.org/viewtopic.php?f=231&t=327872 - вот тут уже что-то!
« Последнее редактирование: 29.03.2010, 19:18:11 от viroff »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

При попытке войти в админку 404 ошибка компонента

Автор omezik

Ответов: 4
Просмотров: 2399
Последний ответ 31.08.2019, 22:41:46
от Taatshi
Вывод компонента в качестве модуля

Автор fMichail

Ответов: 4
Просмотров: 2968
Последний ответ 06.08.2014, 15:16:29
от anar4ik
Переменные, доступные из любого компонента

Автор Serjo_man

Ответов: 3
Просмотров: 1523
Последний ответ 03.02.2014, 05:22:00
от Arkadiy
Работа компонента Ninja RSS 1.1.11 на Joomla 1.5.26

Автор Adam.K

Ответов: 1
Просмотров: 1435
Последний ответ 16.12.2013, 21:26:31
от Adam.K
Доработка компонента - нужна помощь

Автор wfire

Ответов: 5
Просмотров: 1355
Последний ответ 24.09.2013, 13:17:28
от robert