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

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Интеграция Zoo 2.х и JomSocial
« : 08.12.2010, 22:09:17 »
Задался вопросом интеграции Zoo 2.х и JomSocial.

Что для этого необходимо:
1. Элемент Zoo - ссылка в материале на профиль. В стандартной комплектации Zoo имеется элемент itemauthor, но он не выводит ссылку.
Создал элемент Author Link. Выводит ссылку на профиль и аватар (JomSocial/СВ). Стиль отображения можно  подредактировать в CSS.
Распаковываем  authorlink.zip  и его содержимое помещаем в  каталог:  /administrator/components/com_zoo/elements/
      Скачать: http://www.raslab.org/authorlink.zip
Для версии Zoo 2.4.х содержимое помещать в  /media/zoo/elements/.
      Скачать: http://www.raslab.org/zavantazhyty/category/3-zoo.html?download=3%3Aelement-author-link

2. Плагин JomSocial - отображение списка материалов в профиле.
      Скачать: http://www.raslab.org/plg_myzooitems.zip
Для версии Zoo 2.4.х:
      Скачать: http://www.raslab.org/zavantazhyty/category/2-community.html?download=4%3Adodatok-my-zoo-items
3. Плагин или хак для Zoo для отображения нового ивента в JomSocial Activity Stream и начисления балов, когда пользователь добавляет, изменяет либо удаляет материал Zoo. Естественно название материала и ссылка на него присутствуют.
Хак.
Активность и балы для сохранения/изменения. Добавляем код в function save() в конце, перед $this->setRedirect($link, $msg); в файлы item.php (/site/administrator/components/com_zoo/controllers/) и submission.php (/site/components/com_zoo/controllers/)
Код: php
// start JomSocial integration for add/update item/submission
/*
Insert into function save()
before $this->setRedirect($link, $msg)
in file item.php       (/site/administrator/components/com_zoo/controllers/)
in file submission.php (/site/components/com_zoo/controllers/)
*/
$jsLibCore = JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php';
if (is_file($jsLibCore)) {
require_once($jsLibCore); // JomSocial core library include          
if ($this->item){
$itemID = $this->item->id;
$itemTitle = $this->item->name;
$actorCreated = $this->item->created_by;
$actorModified = $this->item->modified_by;
$state = $this->item->state;
}
if ($item){
$itemID = $item->id;
$itemTitle = $item->name;
$actorCreated = $item->created_by;
$actorModified = $item->modified_by;
$state = $item->state;
}
$appID  = $this->application->id;
  $appTitle = $this->application->name;
            $appAlias = $this->application->alias;            
                      
            $act = new stdClass();
            if ($cid || $this->item_id)//if ($this->item_id) //for submission
             {
$act->cmd = 'com_zoo.item.update';
             $act->actor = $actorModified;
             $act->target = 0; // no target
             $act->title = JText::_('{multiple}{actors}{/multiple}{single}{actor}{/single} updated item <a href="'.CRoute::_('index.php?option=com_zoo&view=item&item_id='.$itemID).'">'.$itemTitle.'</a> in <a href="'.CRoute::_('index.php?option=com_zoo&view=frontpage&app_id='.$appID).'">'.$appTitle.'</a>');
           $act->content    = '';
             $act->app    = 'zoo';
             $act->cid    = $itemID;
             $act->params = 'action='.$appAlias.'.item.update';
}
else {
$act->cmd = 'com_zoo.item.add';
             $act->actor = $actorCreated;
             $act->target = 0; // no target
             $act->title  = JText::_('{multiple}{actors}{/multiple}{single}{actor}{/single} added a new item <a href="'.CRoute::_('index.php?option=com_zoo&view=item&item_id='.$itemID).'">'.$itemTitle.'</a> in <a href="'.CRoute::_('index.php?option=com_zoo&view=frontpage&app_id='.$appID).'">'.$appTitle.'</a>');
     $act->content    = '';
             $act->app    = 'zoo';
             $act->cid    = $itemID;
             $act->params = 'action='.$appAlias.'.item.add';
}

if ($state == 1) // if item is published - add activity&points
{  
            // add activity
             CFactory::load('libraries', 'activities'); // activity stream library include            
             CActivityStream::add($act);
            // add points
             CFactory::load('libraries', 'userpoints'); // userpoints library include
CuserPoints::assignPoint($act->cmd,$act->actor);
}
else // else - add points
{
// add points
             CFactory::load('libraries', 'userpoints'); // userpoints library include
CuserPoints::assignPoint($act->cmd,$act->actor);
}

   }
// end JomSocial integration for add/update item/submission

Активность и балы для удаления итема. Правим теже файлы, только теперь функцию remove()
Код: php
// start JomSocial integration for remove item/submission
/*
For item.php:
Insert into function remove()
Find   // delete items
foreach ($cid as $id) {
$table->delete($table->get($id));
}
inside the loop -  foreach, before $table->delete($table->get($id));
insert - $item = $table->get($id);
and after $table->delete($table->get($id));
all below the code.
For submission.php - only insert the following code after $table->delete($item);
*/
$jsLibCore = JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php';
if (is_file($jsLibCore)) {
require_once($jsLibCore); // JomSocial core library include

if ($item->created_by != $this->user->id){
  $cleaner = $this->user->id;
  }
  else {
  $cleaner = $item->created_by;
  }                  
                      
            $act = new stdClass();
            $act->cmd = 'com_zoo.item.remove';
            $act->actor = $cleaner;
            $act->target = 0; // no target
            $act->title  = JText::_('{multiple}{actors}{/multiple}{single}{actor}{/single} deleted item <strong>'.$item->name.'</strong> in <a href="'.CRoute::_('index.php?option=com_zoo&view=frontpage&app_id='.$this->application->id).'">'.$this->application->name.'</a>');      
            $act->content    = '';
            $act->app    = 'zoo';
            $act->cid    = $item->id;
            $act->params = 'action='.$this->application->alias.'.item.remove';
            
            // add activity
             CFactory::load('libraries', 'activities'); // activity stream library include            
             CActivityStream::add($act);
            // add points
             CFactory::load('libraries', 'userpoints'); // userpoints library include
CuserPoints::assignPoint($act->cmd, $item->created_by); // Deduct points when special user or admininstator/moderator remove item
      
}
// end JomSocial integration for remove item/submission

Для того чтобы начислялись очки также необходимо закинуть файл jomsocial_rule.xml в components/com_zoo/.
Содержимое файла ниже:
Код: xml
<?xml version="1.0" encoding="utf-8"?>
<jomsocial>
<component>com_zoo</component>
<rules>
<rule>
<name>Add Item</name>
<description>Give points when registered user add item.</description>
<action_string>com_zoo.item.add</action_string>
<publish>true</publish>
<points>2</points>
<access_level>1</access_level>      
</rule>
<rule>
<name>Update Item</name>
<description>Give points when registered user update item.</description>
<action_string>com_zoo.item.update</action_string>
<publish>true</publish>
<points>1</points>
<access_level>2</access_level>      
</rule>
<rule>
<name>Remove Item</name>
<description>Deduct points when special user or admininstator/moderator remove item.</description>
<action_string>com_zoo.item.remove</action_string>
<publish>true</publish>
<points>-2</points>
<access_level>2</access_level>
</rule>
</rules>
</jomsocial>

Для версии Zoo 2.4.х. появилась возможность создать отдельный плагин:
      Скачать: http://www.raslab.org/zavantazhyty/category/1-zoo.html?download=2%3Azoo2jomsocial-activity-stream

Выражаю отдельную благодарность demon1977 и pavel_28121за помощь и консультирование.

В будущем будут обновления элемента и плагинов.
« Последнее редактирование: 31.03.2011, 17:30:17 от MetaSpirit »
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

palan

  • Осваиваюсь на форуме
  • 13
  • 6 / 1
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #1 : 18.12.2010, 15:54:15 »
Спасибо за Ваш труд!
Подскажите, где скачать authorlink.zip
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #2 : 21.12.2010, 14:58:45 »
Спасибо за Ваш труд!
Подскажите, где скачать authorlink.zip
http://www.raslab.org/authorlink.zip
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #3 : 24.12.2010, 17:00:32 »
2. Плагин JomSocial - отображение списка материалов в профиле.

Закончил плагин для выведения опубликованых материалов в профиле. В дальнейшем будет реализован вывод материалов в зависимости от приложения.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

locksmith

  • Захожу иногда
  • 60
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #4 : 02.01.2011, 04:52:40 »
Что-то не пойму где плагин выводит материалы из ZOO. Установил, включил смотрю и нигде не вижу. Подскажите.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #5 : 05.01.2011, 10:11:34 »
Что-то не пойму где плагин выводит материалы из ZOO. Установил, включил смотрю и нигде не вижу. Подскажите.
Плагин выводит материалы в профиле. После включения плагина, необходимо еще добавить приложение My Zoo Items на страницу через менеджер  приложений JomSocial.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

fad-dmitrij

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #6 : 05.01.2011, 14:39:02 »
Спасибо! Очень нужная вещь!
*

locksmith

  • Захожу иногда
  • 60
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #7 : 05.01.2011, 22:27:59 »
Автору спасибо! Вот только как плюс поставить? куды жать?
*

locksmith

  • Захожу иногда
  • 60
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #8 : 12.01.2011, 07:37:09 »
Товарищи подскажите - стоит ZOO и когда открываешь полностью статью то в конце после комментария вылазит такое:
Зашёл как "имя пользователя" (Joomla)

Как убрать эу надпись. Всё перерыл. Не могу найти.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #9 : 13.01.2011, 14:04:30 »
Как убрать эу надпись. Всё перерыл. Не могу найти.
Необходимо искать в настройках комментариев. Но здесь совсем другая тема.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

locksmith

  • Захожу иногда
  • 60
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #10 : 14.01.2011, 04:18:33 »
Я понимаю, что здесь другая тема. Просто ты в ZOO хорошо соображаешь и поэтому я именно здесь задал этот вопрос. А в настройках комментариев ничего такого нет.
*

locksmith

  • Захожу иногда
  • 60
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #11 : 16.01.2011, 09:00:33 »
А еще как сделать чтобы это приложении authorlink.zip было включено и установленно по умолчанию для нового пользователя?
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #12 : 16.01.2011, 10:51:51 »
А еще как сделать чтобы это приложении authorlink.zip было включено и установленно по умолчанию для нового пользователя?
Если Author Link включен в шаблон представления материала (напр., full), то будет показыватся всегда, он независим от пользователя, это элемент ZOO. А вот plg_myzooitems зависит от пользователя и чтобы он отображался у каждого пользователя необходимо в настройках плагина установить "Core Application - Да".
Цитировать
А в настройках комментариев ничего такого нет.
Тогда нужно смотреть в самом исходном коде комментариев, видимо оно жестко задается из-за того чтобы различать откуда комментатор (joomla, facebook, twitter ....).
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

locksmith

  • Захожу иногда
  • 60
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #13 : 16.01.2011, 12:47:17 »
Если Author Link включен в шаблон представления материала (напр., full), то будет показыватся всегда, он независим от пользователя, это элемент ZOO. А вот plg_myzooitems зависит от пользователя и чтобы он отображался у каждого пользователя необходимо в настройках плагина установить "Core Application - Да".Тогда нужно смотреть в самом исходном коде комментариев, видимо оно жестко задается из-за того чтобы различать откуда комментатор (joomla, facebook, twitter ....).


А как установить место где будет отображаться plg_myzooitems по умолчанию?
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #14 : 16.01.2011, 13:57:55 »
А как установить место где будет отображаться plg_myzooitems по умолчанию?
Порядок "по умолчанию" определяет сортировка в менеджере плагинов для "community", позже порядок можно настроить в своем профиле в меню приложений.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

locksmith

  • Захожу иногда
  • 60
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #15 : 16.01.2011, 14:23:11 »
Порядок "по умолчанию" определяет сортировка в менеджере плагинов для "community", позже порядок можно настроить в своем профиле в меню приложений.

Дак как сделать чтобы человек зарегестрировался - зашел в профиль а zooitems уже у него установлен и отображен например ниже стены. Как указать место? Чтобы пользователь сразу видел у себя в профиле ничего сам не передвигая и не настраивая.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #16 : 16.01.2011, 21:25:41 »
Дак как сделать чтобы человек зарегестрировался - зашел в профиль а zooitems уже у него установлен и отображен например ниже стены. Как указать место? Чтобы пользователь сразу видел у себя в профиле ничего сам не передвигая и не настраивая.
Куда ж уже подробнее разжевывать! Тут кто-то сильно меня не понимает или не догоняет. :o
Делаем так:
  • Заходим в менеджер приложений
  • ставим сортировку по типу "community" и видим все плагины для JomSocial
  • находим plg_myzooitems и в настройках плагина установить "Core Application - Да" - теперь он будет отображатся у всех и его нельзя будет удалить со страницы профиля
  • далее сортируем в том порядке в котором хотим чтобы они отображались, напр., My ZOO Items ставим ниже Walls и он в профиле будет отображатся ниже стены
Тема на счет сортировки закрыта. Далее, экспериментируйте.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

Chedwick

  • Захожу иногда
  • 172
  • 16 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #17 : 18.01.2011, 02:33:22 »
Огромное спасибо за Ваш труд. Плюсанул.

А как продвигаются дела с
Чуток позже сделаю для удаления и модификации материала, а также начисление поинтов.
?

Уж очень интересует начисление поинтов
*

aleyu

  • Новичок
  • 6
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #18 : 18.01.2011, 02:49:52 »
Что то не пойму а как пользователям добавлять и редактировать?
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #19 : 18.01.2011, 09:00:01 »
А как продвигаются дела с?
Уж очень интересует начисление поинтов
Думаю, к концу месяца сделаю. Завал на основной работе. Времени катастрофически не хватает + праздники.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

Chedwick

  • Захожу иногда
  • 172
  • 16 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #20 : 18.01.2011, 15:01:30 »
Думаю, к концу месяца сделаю. Завал на основной работе. Времени катастрофически не хватает + праздники.
Будем ждать ))
*

aleyu

  • Новичок
  • 6
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #21 : 19.01.2011, 00:13:09 »
что то я не то сделал с item.php возможно по этому не отображается всё корректно, можешь скинуть готовый файл уже с кодом на aleyu@mail.ru? или выложи если  нетрудно у меня zoo2.3
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #22 : 29.01.2011, 17:16:44 »
Добавил начисление балов, подправил функциональность. Все изменения в первом сообщении.
Выкладываю готовые функции которые необходимо изменить в item.php версия для zoo 2.3
function save()
Код: php
public function save() {

// check for request forgeries
YRequest::checkToken() or jexit('Invalid Token');

// init vars
$db         = JFactory::getDBO();
$config     = JFactory::getConfig();
$now        = JFactory::getDate();
$post       = YRequest::get('post');
$frontpage  = YRequest::getBool('frontpage', false);
$categories = YRequest::getArray('categories', null);
$details = YRequest::getArray('details', null);
$metadata   = YRequest::getArray('meta', null);
$cid        = YRequest::getArray('cid.0', '', 'int');
$tzoffset   = $config->getValue('config.offset');
$post       = array_merge($post, $details);

try {

// get item table
$table = YTable::getInstance('item');

// get item
if ($cid) {
$item = $table->get($cid);
} else {
$item = new Item();
$item->application_id = $this->application->id;
$item->type = YRequest::getVar('type');
}

// bind item data
$item->bind($post, array('elements', 'params', 'created_by'));
            $created_by = isset($post['created_by'])? $post['created_by'] : '';
            $item->created_by = empty($created_by)? JFactory::getUser()->id : $created_by == 'NO_CHANGE' ? $item->created_by : $created_by;
$tags = isset($post['tags'])? $post['tags'] : array();
$item->setTags($tags);

// bind element data
foreach ($item->getElements() as $id => $element) {
if (isset($post['elements'][$id])) {
$element->bindData($post['elements'][$id]);
} else {
$element->bindData();
}
}

// set alias
$item->alias = ItemHelper::getUniqueAlias($item->id, YString::sluggify($item->alias));

// set modified
$item->modified    = $now->toMySQL();
$item->modified_by = $this->user->get('id');

// set created date
if ($item->created && strlen(trim($item->created)) <= 10) {
$item->created .= ' 00:00:00';
}
$date = JFactory::getDate($item->created, $tzoffset);
$item->created = $date->toMySQL();

// set publish up date
if (strlen(trim($item->publish_up)) <= 10) {
$item->publish_up .= ' 00:00:00';
}
$date = JFactory::getDate($item->publish_up, $tzoffset);
$item->publish_up = $date->toMySQL();

// set publish down date
if (trim($item->publish_down) == JText::_('Never') || trim($item->publish_down) == '') {
$item->publish_down = $db->getNullDate();
} else {
if (strlen(trim($item->publish_down)) <= 10) {
$item->publish_down .= ' 00:00:00';
}
$date = JFactory::getDate($item->publish_down, $tzoffset);
$item->publish_down = $date->toMySQL();
}

// get primary category
$primary_category = @$post['params']['primary_category'];
if (empty($primary_category) && count($categories)) {
$primary_category = $categories[0];
}

// set params
$item->params = $item
->getParams()
->remove('metadata.')
->remove('template.')
->set('metadata.', @$post['params']['metadata'])
->set('template.', @$post['params']['template'])
->set('config.enable_comments', @$post['params']['enable_comments'])
->set('config.primary_category', $primary_category)
->toString();

// save item
$table->save($item);

// make sure categories contain primary category
if (!empty($primary_category) && !in_array($primary_category, $categories)) {
$categories[] = $primary_category;
}

// save category relations
if ($frontpage) {
$categories[] = 0;
}
CategoryHelper::saveCategoryItemRelations($item->id, $categories);

// set redirect message
$msg = JText::_('Item Saved');

} catch (YException $e) {

// raise notice on exception
JError::raiseNotice(0, JText::_('Error Saving Item').' ('.$e.')');
$this->_task = 'apply';
$msg = null;

}

$link = $this->baseurl;
switch ($this->getTask()) {
case 'apply' :
$link .= '&task=edit&type='.$item->type.'&cid[]='.$item->id;
break;
case 'saveandnew' :
$link .= '&task=add';
break;
}
// start JomSocial integration for add/update item
/*
Вставить в функцию save() перед $this->setRedirect($link, $msg) (строка 394) в файле item.php (/administrator/components/com_zoo/controllers/)
*/
$jsLibCore = JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php';
if (is_file($jsLibCore)) {
require_once($jsLibCore); // activity stream include

            $itemTitle = $item->name;
            $appTitle = $this->application->name;
           
            $act = new stdClass();
            $act->cmd = 'wall.write';
            $act->actor = $item->created_by;
            $act->target = 0; // no target
            if ($cid) {
$act->title = JText::_('{multiple}{actors}{/multiple}{single}{actor}{/single} updated item <a href="'.CRoute::_('index.php?option=com_zoo&view=item&item_id='.$item->id).'">'.$itemTitle.'</a> in <a href="'.CRoute::_('index.php?option=com_zoo&view=frontpage&app_id='.$item->application_id).'">'.$appTitle.'</a>');
} else {
$act->title  = JText::_('{multiple}{actors}{/multiple}{single}{actor}{/single} added a new item <a href="'.CRoute::_('index.php?option=com_zoo&view=item&item_id='.$item->id).'">'.$itemTitle.'</a> in <a href="'.CRoute::_('index.php?option=com_zoo&view=frontpage&app_id='.$item->application_id).'">'.$appTitle.'</a>');
}           
            $act->content    = '';
            $act->app    = 'wall';
            $act->cid    = 0;
 
            CFactory::load('libraries', 'activities');
            CActivityStream::add($act);
         
      $jsLibUserpoint = JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'userpoints.php';
if (is_file($jsLibUserpoint)) {
require_once($jsLibUserpoint); // assign UserPoints include

if ($cid) {
CuserPoints::assignPoint('com_zoo.item.update'); // Give points when registered user update item
} else {
CuserPoints::assignPoint('com_zoo.item.add'); // Give points when registered user add item
}     
}

  }
//else {
// return;
//}
// end JomSocial integration for add/update item
$this->setRedirect($link, $msg);
}

function remove()
Код: php
public function remove() {

// check for request forgeries
YRequest::checkToken() or jexit('Invalid Token');

// init vars
$cid = YRequest::getArray('cid', array(), 'int');

if (count($cid) < 1) {
JError::raiseError(500, JText::_('Select a item to delete'));
}

try {

// get item table
$table = YTable::getInstance('item');
$user = &JFactory::getUser();
    $userid = $user->get('id');
// delete items
foreach ($cid as $id) {
$item = $table->get($id);
$table->delete($table->get($id));
// start JomSocial integration for remove item
/*
Вставить в функцию remove()
Находим:
// delete items
foreach ($cid as $id) {
$table->delete($table->get($id));
}
и перед // delete items
вставляем : $user = &JFactory::getUser();
    $userid = $user->get('id');
далее внутри цикла foreach перед $table->delete($table->get($id));
вставляем $item = $table->get($id);
а после $table->delete($table->get($id));
весь ниже следующий код
*/
$jsLibCore = JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php';
if (is_file($jsLibCore)) {
require_once($jsLibCore); // activity stream include

            $itemTitle = $item->name;
            $appTitle = $this->application->name;
           
            $act = new stdClass();
            $act->cmd = 'wall.write';
            $act->actor = $userid; // ID текущего пользователя
            $act->target = 0; // no target
            $act->title  = JText::_('{multiple}{actors}{/multiple}{single}{actor}{/single} deleted item <strong>'.$itemTitle.'</strong> in <a href="'.CRoute::_('index.php?option=com_zoo&view=frontpage&app_id='.$item->application_id).'">'.$appTitle.'</a>');     
            $act->content    = '';
            $act->app    = 'wall';
            $act->cid    = 0;
 
            CFactory::load('libraries', 'activities');
            CActivityStream::add($act);
         
      $jsLibUserpoint = JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'userpoints.php';
if (is_file($jsLibUserpoint)) {
require_once($jsLibUserpoint); // assign UserPoints include

CuserPoints::assignPoint('com_zoo.item.remove'); // Deduct points when special user or admininstator/moderator remove item

}

  }
//else {
// return;
//}
// end JomSocial integration for remove item

}

// set redirect message
$msg = JText::_('Item Deleted');

} catch (YException $e) {

// raise notice on exception
JError::raiseWarning(0, JText::_('Error Deleting Item').' ('.$e.')');
$msg = null;

}

$this->setRedirect($this->baseurl, $msg);
}
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #23 : 29.01.2011, 17:45:10 »
Тестирование показало, что если работать через админку то все нормально работает. Но чтобы работало при добавлении материалов с фронта, то в той же папке необходимо править файл submission.php. Там изменяем те же функции, но единственное отличие в том что в хаке для function save() необходимо переменную $item в переменных интеграции (между start/end JomSocial integration for add/update item) заменить на $submission. И теперь все должным образом работает и для фронта.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #24 : 30.01.2011, 14:38:44 »
В результате тестирования оказалось, что балы все-таки не начисляються. Сейчас думаю над другим подходом к реализации замысла.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

stefansrb

  • Новичок
  • 5
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #25 : 01.02.2011, 21:15:32 »
Hi guys. I'm from Serbia so I'll write in English. I did everything as you said, and activities are displayed in JomSocial, but I can't make avatars in comments to be displayed from JomSocial??
Can someone PLEASE help me with this ? ANd thank you guys for this integration, it's awesome.

p.s. I extracted authorlink.zip , but when i wanted to edit template in zoo, it doesn't show element named authorlink...
*

stefansrb

  • Новичок
  • 5
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #26 : 01.02.2011, 21:42:16 »
Now i managed to make it work, but i thought that it will show JomSocial avatars in comments, not profile link and avatar ? Is there any way to display JomSocial profile picture thumb in place for avatar in comments ?
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #27 : 01.02.2011, 23:05:04 »
Now i managed to make it work, but i thought that it will show JomSocial avatars in comments, not profile link and avatar ? Is there any way to display JomSocial profile picture thumb in place for avatar in comments ?
Данный элемент только для материалов. Вместо стандартных комментариев использую элемент комментариев JComments.
Но способ есть. Для этого правим в /site/components/com_zoo/partials/_comment.php
Находим здесь вывод данных автора:
Код: php
<?php if ($params->get('avatar', 0)) : ?>
<div class="avatar">
<?php echo $author->getAvatar(50); ?>
</div>
<?php endif; ?>

<?php if ($author->url) : ?>
<div class="author">
<a href="<?php echo JRoute::_($author->url); ?>" title="<?php echo $author->url; ?>" rel="nofollow"><?php echo $author->name; ?></a>
</div>
<?php else: ?>
<div class="author"><?php echo $author->name; ?></div>
<?php endif; ?>
т.е. если будем только использовать JomSocial, без линка на Фейсбук или твиттер, то можно сделать следующее:
вышеприведенный код меняем на:
Код: php
if(file_exists(JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php')){
require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');

$myLink = CRoute::_('index.php?option=com_community&view=profile&userid='.$userID);
$JSuser =& CFactory::getUser($userID);
$myName = $JSuser->getDisplayName();
$myAvatar = $JSuser->getThumbAvatar();

<div class="avatar">
<?php echo "<img src=\"".$myAvatar."\" alt=\"".$myName."\" />" ?>
</div>

<div class="author">
<a href="<?php echo $myLink ?>" title="<?php echo $myName ?>" rel="nofollow"><?php echo $myName ?></a>
</div>

Примерно так должно быть. На работоспособность проверяйте сами, делал на скорую руку.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
*

stefansrb

  • Новичок
  • 5
  • 0 / 0
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #28 : 02.02.2011, 04:12:15 »
Nop, it won't work... :/ gives an unexpected $end error at line about 57 ... Could you upload your tweaked _comment.php file ?
Thanks for your effort!
*

MetaSpirit

  • Завсегдатай
  • 1370
  • 106 / 0
  • R.A.S.Lab[.org]
Re: Интеграция Zoo 2.х и JomSocial
« Ответ #29 : 02.02.2011, 10:50:37 »
Nop, it won't work... :/ gives an unexpected $end error at line about 57 ... Could you upload your tweaked _comment.php file ?
Thanks for your effort!
Да, ошибка есть не было данных за переменную $userID.
Хотел написать "к ранее приведенному коду добавляем:", но передумал чуток помыслив получаем следующее:

Код: php
<div class="comment-head">

<?php if (!empty($author->user_id)) : ?>
<?php
$userID = $author->user_id;
if(file_exists(JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php')){
require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');
 
$myLink = CRoute::_('index.php?option=com_community&view=profile&userid='.$userID);
$JSuser =& CFactory::getUser($userID);
$myName = $JSuser->getDisplayName();
$myAvatar = $JSuser->getThumbAvatar();
}
else
{
$myLink = JRoute::_('index.php?option=com_user&view=user&userid='.$userID);
$JSuser =& JFactory::getUser($userID);
$myName = $JSuser->name;
$myAvatar = "";
}
?>
<?php if ($myAvatar) : ?>
<div class="avatar">
<?php echo "<img src=\"".$myAvatar."\" alt=\"".$myName."\" />" ?>
</div>
<?php endif; ?>
 
<div class="author">
<a href="<?php echo $myLink ?>" title="<?php echo $myName ?>" rel="nofollow"><?php echo $myName ?></a>
</div>
<?php else: ?>
<?php if ($params->get('avatar', 0)) : ?>
<div class="avatar">
<?php echo $author->getAvatar(50); ?>
</div>
<?php endif; ?>

<?php if ($author->url) : ?>
<div class="author">
<a href="<?php echo JRoute::_($author->url); ?>" title="<?php echo $author->url; ?>" rel="nofollow"><?php echo $author->name; ?></a>
</div>
<?php else: ?>
<div class="author"><?php echo $author->name; ?></div>
<?php endif; ?>
<?php endif; ?>
<div class="meta">
<?php echo JHTML::_('date', $comment->created, JText::_('DATE_FORMAT_COMMENTS') ); ?>
| <a class="permalink" href="#comment-<?php echo $comment->id; ?>">#</a>
</div>
</div>
Немного поясню данный код: необходимо заменить вместо аналогичного <div class="comment-head">...</div> файла /site/components/com_zoo/partials/_comment.php
Вначале проверяем, если автор имеет user_id значит он пользователь joomla и выводим аватар и ссылку на профиль JS, если нет user_id то выводим код по умолчанию, т.е. должны работать и ФБ и Твиттер, а также другие ссылки на профиль в комментариях.
Тестировать не было времени, если где то затерялась ошибка, то пишите какая в какой строке и какого файла, иначе сложно искать.
R.A.S.Lab[.org]: ZOOvirtue - корзина для ZOO, Яндекс.Карты для ZOO, ItemPanes - табы для ZOO, ZOOlendar - календарь для ZOO  и др.
Создание расширений для YOOtheme ZOO на заказ. Становитесь в очередь.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

миграция с CommunityBuilder на JomSocial

Автор anthophyta

Ответов: 6
Просмотров: 2286
Последний ответ 22.03.2021, 13:27:40
от bizzy3
Интеграция JomSocial с компонентом голосований NorrCompetition

Автор Sulpher

Ответов: 0
Просмотров: 577
Последний ответ 20.06.2018, 11:33:52
от Sulpher
Интеграция Kunena и JomSocial

Автор se_demon

Ответов: 100
Просмотров: 25710
Последний ответ 05.03.2016, 05:12:15
от Amigos
JAchievements - Система достижений пользователей социальной сети JomSocial

Автор foodgy

Ответов: 87
Просмотров: 16694
Последний ответ 29.01.2016, 10:31:27
от ubo
Модификация видео плагина на JomSocial

Автор artliffe

Ответов: 119
Просмотров: 31557
Последний ответ 16.03.2014, 16:48:39
от DenEremeii