diff --git a/src/administrator/components/com_weblinks/controllers/weblink.php b/src/administrator/components/com_weblinks/controllers/weblink.php index 278deea..f322d9a 100644 --- a/src/administrator/components/com_weblinks/controllers/weblink.php +++ b/src/administrator/components/com_weblinks/controllers/weblink.php @@ -59,21 +59,29 @@ class WeblinksControllerWeblink extends JControllerForm protected function allowEdit($data = array(), $key = 'id') { $recordId = (int) isset($data[$key]) ? $data[$key] : 0; - $categoryId = 0; - if ($recordId) + // Since there is no asset tracking, fallback to the component permissions. + if (!$recordId) { - $categoryId = (int) $this->getModel()->getItem($recordId)->catid; + return parent::allowEdit($data, $key); } - if ($categoryId) + // Get the item. + $item = $this->getModel()->getItem($recordId); + + // Since there is no item, return false. + if (empty($item)) { - // The category has been set. Check the category permissions. - return JFactory::getUser()->authorise('core.edit', $this->option . '.category.' . $categoryId); + return false; } - // Since there is no asset tracking, revert to the component permissions. - return parent::allowEdit($data, $key); + $user = JFactory::getUser(); + + // Check if can edit own core.edit.own. + $canEditOwn = $user->authorise('core.edit.own', $this->option . '.category.' . (int) $record->catid) && $item->created_by == $user->id; + + // Check the category core.edit permissions. + return $canEditOwn || $user->authorise('core.edit', $this->option . '.category.' . (int) $record->catid); } /** diff --git a/src/administrator/components/com_weblinks/models/weblinks.php b/src/administrator/components/com_weblinks/models/weblinks.php index 50c8eb2..2c9a0fc 100644 --- a/src/administrator/components/com_weblinks/models/weblinks.php +++ b/src/administrator/components/com_weblinks/models/weblinks.php @@ -132,7 +132,7 @@ class WeblinksModelWeblinks extends JModelList $query->select( $this->getState( 'list.select', - 'a.id, a.title, a.alias, a.checked_out, a.checked_out_time, a.catid,' . + 'a.id, a.title, a.alias, a.checked_out, a.checked_out_time, a.catid, a.created_by ' . 'a.hits, a.state, a.access, a.ordering, a.language, a.publish_up, a.publish_down' ) ); diff --git a/src/administrator/components/com_weblinks/views/weblinks/tmpl/default.php b/src/administrator/components/com_weblinks/views/weblinks/tmpl/default.php index fb8978c..2775ae7 100644 --- a/src/administrator/components/com_weblinks/views/weblinks/tmpl/default.php +++ b/src/administrator/components/com_weblinks/views/weblinks/tmpl/default.php @@ -132,7 +132,8 @@ JFactory::getDocument()->addScriptDeclaration(' $item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_weblinks&task=edit&type=other&cid[]='. $item->catid); $canCreate = $user->authorise('core.create', 'com_weblinks.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_weblinks.category.' . $item->catid); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->id || $item->checked_out == 0; + $canEditOwn = $user->authorise('core.edit.own', 'com_weblinks.category.' . $item->catid) && $item->created_by == $user->id; $canChange = $user->authorise('core.edit.state', 'com_weblinks.category.' . $item->catid) && $canCheckin; ?> @@ -165,7 +166,7 @@ JFactory::getDocument()->addScriptDeclaration(' checked_out) : ?> editor, $item->checked_out_time, 'weblinks.', $canCheckin); ?> - + escape($item->title); ?> diff --git a/src/administrator/components/com_weblinks/views/weblinks/view.html.php b/src/administrator/components/com_weblinks/views/weblinks/view.html.php index aaa72f2..ba55e4f 100644 --- a/src/administrator/components/com_weblinks/views/weblinks/view.html.php +++ b/src/administrator/components/com_weblinks/views/weblinks/view.html.php @@ -70,7 +70,7 @@ class WeblinksViewWeblinks extends JViewLegacy JToolbarHelper::addNew('weblink.add'); } - if ($canDo->get('core.edit')) + if ($canDo->get('core.edit') || $canDo->get('core.edit.own')) { JToolbarHelper::editList('weblink.edit'); }