Archived talk

Difference between revisions of "Developing a MVC Component/Adding configuration"

From Joomla! Documentation

(How to give an edit.own level user access to the back end edits?)
 
(18 intermediate revisions by 8 users not shown)
Line 1: Line 1:
Ok, so I have carefully followed the tutorial to here. What I need to know now is HOW do I allow a user who only has edit.own rights to the component to get to the admin edit for the component??
+
In the function
  
I tried for a while to create an edit page on the front end, but no luck and no help. It occurred to me that perhaps if I could not bring the mountain to Mohammed, I could get Mohammed access to the mountain. But how to do it without making every user an administrator? Even a manager has too much other access.
+
<source lang="php">
 +
/**
 +
* Overloaded load function
 +
*
 +
* @param      int $pk primary key
 +
* @param      boolean $reset reset data
 +
* @return      boolean
 +
* @see JTable:load
 +
*/
 +
public function load($pk = null, $reset = true)
 +
{
 +
if (parent::load($pk, $reset))
 +
{
 +
// Convert the params field to a registry.
 +
$params = new JRegistry;               
 +
                      // loadJSON is @deprecated    12.1  Use loadString passing JSON as the format instead.
 +
                      // $params->loadString($this->item->params, 'JSON');
 +
//------------------------------------------------------------
 +
                      $params->loadJSON($this->item->params);
 +
//------------------------------------------------------------
 +
 +
$this->params = $params;
 +
return true;
 +
}
 +
else
 +
{
 +
return false;
 +
}
 +
}
 +
</source>
 +
 
 +
The line bracketed above is actually, $params->loadJSON($this->params);
 +
I am not sure which is 100% correct.
 +
 
 +
Just done a quick test and the one WITHOUT the ''''item'''' is correct.
 +
 
 +
 
 +
 
 +
 
 +
After changing files from 0.12 to 0.13 and downloading part13.zip I can't reach FrontEnd of HelloWorld component. I receive erorr 500. :( [[User:CodeBY|CodeBY]] 04:48, 4 May 2012 (CDT)
 +
 
 +
== missing  </fieldset> in admin\views\helloworld\tmpl\edit.php ==
 +
 
 +
It is not a critical error.
 +
 
 +
Looking at line 27 in the file admin\views\helloworld\tmpl\edit.php should look like this, as shown in the tutorial.
 +
            '''</fieldset>'''
 +
The file in the zipfile is missing this line </fieldset> (line 27)
 +
 
 +
Another minor detail is that the page on the website shows blocks of <?php ... ?> whereas the file as the php open and close per line.
 +
 
 +
Does not influence the working. But is good to know when comparing your code. I use winmerge to compare my files with those in the zip file. Hoping to find that typo that prevents my version from running as it should ;-(
 +
 
 +
== Modifications that would make the tutorial clearer ==
 +
 
 +
I think the following 2 modifications would make this section of the tutorial clearer:
 +
 
 +
<ul>
 +
<li>Earlier in the tutorial, in the file site/models/helloworld.php $msg was used for the message, and here is is $item. I think it would be helpful to stay with the same variable name throughout the tutorial.</li>
 +
<li>In the file admin/tables/helloworld.php, the comment about deprecated code is confusing. It might be better if it read<br/>
 +
<blockquote>// loadJSON is @deprecated    12.1 (Joomla! 3)  Use loadString...</blockquote>
 +
so it is more obvious that the current code is correct for this version (2.5) but not the future version (3). Not everyone knows what the 12.1 is referring to and it looks like it is saying the code the tutorial is telling you to use is deprecated.</li>
 +
</ul>

Revision as of 14:46, 3 May 2013

In the function

	/**
	 * Overloaded load function
	 *
	 * @param       int $pk primary key
	 * @param       boolean $reset reset data
	 * @return      boolean
	 * @see JTable:load
	 */
	public function load($pk = null, $reset = true) 
	{
		if (parent::load($pk, $reset)) 
		{
			// Convert the params field to a registry.
			$params = new JRegistry;                 
                       // loadJSON is @deprecated    12.1  Use loadString passing JSON as the format instead.
                       // $params->loadString($this->item->params, 'JSON');
//------------------------------------------------------------
                       $params->loadJSON($this->item->params);
//------------------------------------------------------------
 
			$this->params = $params;
			return true;
		}
		else
		{
			return false;
		}
	}

The line bracketed above is actually, $params->loadJSON($this->params); I am not sure which is 100% correct.

Just done a quick test and the one WITHOUT the 'item' is correct.



After changing files from 0.12 to 0.13 and downloading part13.zip I can't reach FrontEnd of HelloWorld component. I receive erorr 500. :( CodeBY 04:48, 4 May 2012 (CDT)

missing </fieldset> in admin\views\helloworld\tmpl\edit.php[edit]

It is not a critical error.

Looking at line 27 in the file admin\views\helloworld\tmpl\edit.php should look like this, as shown in the tutorial.

            </fieldset>

The file in the zipfile is missing this line </fieldset> (line 27)

Another minor detail is that the page on the website shows blocks of <?php ... ?> whereas the file as the php open and close per line.

Does not influence the working. But is good to know when comparing your code. I use winmerge to compare my files with those in the zip file. Hoping to find that typo that prevents my version from running as it should ;-(

Modifications that would make the tutorial clearer[edit]

I think the following 2 modifications would make this section of the tutorial clearer:

  • Earlier in the tutorial, in the file site/models/helloworld.php $msg was used for the message, and here is is $item. I think it would be helpful to stay with the same variable name throughout the tutorial.
  • In the file admin/tables/helloworld.php, the comment about deprecated code is confusing. It might be better if it read

    // loadJSON is @deprecated 12.1 (Joomla! 3) Use loadString...

    so it is more obvious that the current code is correct for this version (2.5) but not the future version (3). Not everyone knows what the 12.1 is referring to and it looks like it is saying the code the tutorial is telling you to use is deprecated.