Create a new view in plugin

More
3 years 4 weeks ago #106827 by elvey
elvey created the topic: Create a new view in plugin
I'm developing a plugin that requires me to create an additional view. Unfortunately documentation on the plugin environment is a little slim and I can't find for the life of me how to create a new view/controller in my plugin.
Would someone be able to point me towards the appropriate resources for this task? Thanks you

Please Log in to join the conversation.

More
3 years 3 weeks ago #106876 by DenisChenu
DenisChenu replied the topic: Create a new view in plugin
Hi,

There are no existing included solution actually, have some hack to do it actually

Starting by
$aData['clang'] = $clang = Yii::app()->lang;
            $aData['sImageURL'] = Yii::app()->getConfig('adminimageurl');
            $aData['surveyid']=$aData['iSurveyID']=$aData['iSurveyId'] = $this->iSurveyId;
            $sViewPath = '/admin/survey';
            $oAdminController=new AdminController('admin');
            $oCommonAction = new Survey_Common_Action($oAdminController,'survey');

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).
An error happen ? Before make a new topic : remind the Debug mode .

Please Log in to join the conversation.

More
3 years 3 weeks ago #106914 by elvey
elvey replied the topic: Create a new view in plugin
Thanks for your help. I will however ask for a little more guidance if possible.

I am guessing this is creating a new action which is then saved to the admin controller. However I am unsure where the action code is set. Is there a parameter I can use to set a callback method? Otherwise I see most existing actions have classes that extend Survey_Common_Action in application/controllers/admin so could I create another class such as this that can be loaded from within my plugin directory?

Finally I'm not sure what to do with $sViewPath. Should this be set in $aData?

Please Log in to join the conversation.

More
2 years 10 months ago #109957 by atlet
atlet replied the topic: Create a new view in plugin
Any luck with creation of new view? I'll looking to create a plugin and will need to create a nev view in admin area...

elvey wrote: Thanks for your help. I will however ask for a little more guidance if possible.

I am guessing this is creating a new action which is then saved to the admin controller. However I am unsure where the action code is set. Is there a parameter I can use to set a callback method? Otherwise I see most existing actions have classes that extend Survey_Common_Action in application/controllers/admin so could I create another class such as this that can be loaded from within my plugin directory?

Finally I'm not sure what to do with $sViewPath. Should this be set in $aData?

Please Log in to join the conversation.

More
2 years 10 months ago - 2 years 10 months ago #109961 by DenisChenu
DenisChenu replied the topic: Create a new view in plugin
In one of my old plugin (surely need better suystem and adpatation, i use this (adding a new page for survey)
private function displayContent($aData=false)
        {
            if(!$aData){$aData=array();}
            $aData['clang'] = $clang = Yii::app()->lang;
            $aData['sImageURL'] = Yii::app()->getConfig('adminimageurl');
            $aData['surveyid']=$aData['iSurveyID']=$aData['iSurveyId'] = $this->iSurveyId;
            $sViewPath = '/admin/survey';
            $oAdminController=new AdminController('admin');
            $oCommonAction = new Survey_Common_Action($oAdminController,'survey');
            ob_start();
            //header("Content-type: text/html; charset=UTF-8"); // needed for correct UTF-8 encoding
            $oAdminController->_getAdminHeader();
            $oAdminController->_showadminmenu($this->iSurveyId);
            if($this->iSurveyId)
                $oCommonAction->_surveybar($this->iSurveyId);
            if($this->fContent){
                self::render($this->fContent,$aData);// Surely better with ->render ....
            }
            $oAdminController->_loadEndScripts();
            $oAdminController->_getAdminFooter('http://manual.limesurvey.org', $clang->gT('LimeSurvey online manual'));
            $sOutput = ob_get_contents();
            ob_clean();
            App()->getClientScript()->render($sOutput);
            echo $sOutput;
            Yii::app()->end();
        }
        private function render($file,$aData=false){
            if($aData)
            {
                foreach($aData as $data=>$value){
                    $$data=$value;
                }
            }
            include_once(dirname(__FILE__)."/".$this->fContent);// Surely better with ->render ....
        }

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).
An error happen ? Before make a new topic : remind the Debug mode .
Last Edit: 2 years 10 months ago by DenisChenu.

Please Log in to join the conversation.

More
2 years 8 months ago #111804 by sparkbird
sparkbird replied the topic: Create a new view in plugin
The following user(s) said Thank You: david2013, jdd2405

Please Log in to join the conversation.

More
2 years 4 months ago - 2 years 4 months ago #115159 by david2013
david2013 replied the topic: Create a new view in plugin
Thank you for sharing. We need more document ion regarding plugin.

When I download it using latest version. I doesn't work. After I change the line below, it works for me
'href' => "plugins/direct/rewards?function=assignRewards",
to
'href' => $this->api->createUrl('plugins/direct', array('plugin' => 'Rewards', 'function' => 'assignRewards')),
Last Edit: 2 years 4 months ago by david2013.
The following user(s) said Thank You: jdd2405

Please Log in to join the conversation.

More
2 years 2 months ago #117420 by jdd2405
jdd2405 replied the topic: Create a new view in plugin
The Plugin from sparkbird is great to begin with a new admin menu item. Thanks david2013 for the fix. I wouldn't have been able to do that...

Anyway, the admin menu item only shows up when visiting the plugins page. On the admin start page and all the other admin pages there is no additional menu item visible. Why is that?

Please Log in to join the conversation.

More
2 years 2 months ago #117425 by DenisChenu
DenisChenu replied the topic: Create a new view in plugin

jdd2405 wrote: Anyway, the admin menu item only shows up when visiting the plugins page. On the admin start page and all the other admin pages there is no additional menu item visible. Why is that?

Because only plugin page use the new menu extension.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).
An error happen ? Before make a new topic : remind the Debug mode .
The following user(s) said Thank You: jdd2405

Please Log in to join the conversation.

More
2 months 2 weeks ago #148544 by Mazi
Mazi replied the topic: Create a new view in plugin
I am currently looking for simple snippets on how to add a new admin menu item and link a custom script to it using a plugin. BUT, that plugin should check if a certain user right (to view statistics) exists for the currently logged in user. If not, the option should not be shown at the menu.
I think I once saw an example but can't find it...


Best regards/Beste Grüße,
Dr. Marcel Minke
(Limesurvey Head of Support)
Need Help? We offer professional Limesurvey support
Contact: marcel.minke(at)survey-consulting.com'"

Please Log in to join the conversation.

More
2 months 1 week ago #148613 by DenisChenu
DenisChenu replied the topic: Create a new view in plugin
if(Permission::model()->hasSurveyPermission($surveyid,'yourpermission')){
   //Add the menu
}

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).
An error happen ? Before make a new topic : remind the Debug mode .

Please Log in to join the conversation.

More
2 months 1 week ago #148615 by Mazi
Mazi replied the topic: Create a new view in plugin

DenisChenu wrote:

if(Permission::model()->hasSurveyPermission($surveyid,'yourpermission')){
   //Add the menu
}

I'll just ping you for some plugin development soon :-)


Best regards/Beste Grüße,
Dr. Marcel Minke
(Limesurvey Head of Support)
Need Help? We offer professional Limesurvey support
Contact: marcel.minke(at)survey-consulting.com'"

Please Log in to join the conversation.

Start now!

Just create your account and start using Limesurvey today.

Register now