Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Create a new view in plugin

More
9 years 11 months ago #106827 by elvey
Create a new view in plugin was created by elvey
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
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 11 months ago #106876 by DenisChenu
Replied by DenisChenu on topic Create a new view in plugin
Hi,

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

Starting by
Code:
$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 , plugin development .
I don't answer to private message.
The topic has been locked.
More
9 years 11 months ago #106914 by elvey
Replied by elvey on 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?
The topic has been locked.
More
9 years 9 months ago #109957 by atlet
Replied by atlet on 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?

The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 9 months ago - 9 years 9 months ago #109961 by DenisChenu
Replied by DenisChenu on 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)
Code:
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 , plugin development .
I don't answer to private message.
Last edit: 9 years 9 months ago by DenisChenu.
The topic has been locked.
More
9 years 6 months ago #111804 by sparkbird
Replied by sparkbird on topic Create a new view in plugin
The following user(s) said Thank You: david2013, jdd2405
The topic has been locked.
More
9 years 3 months ago - 9 years 3 months ago #115159 by david2013
Replied by david2013 on 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
Code:
'href' => "plugins/direct/rewards?function=assignRewards",
to
Code:
'href' => $this->api->createUrl('plugins/direct', array('plugin' => 'Rewards', 'function' => 'assignRewards')),
Last edit: 9 years 3 months ago by david2013.
The following user(s) said Thank You: jdd2405
The topic has been locked.
More
9 years 1 month ago #117420 by jdd2405
Replied by jdd2405 on 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?
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
9 years 4 weeks ago #117425 by DenisChenu
Replied by DenisChenu on 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 , plugin development .
I don't answer to private message.
The following user(s) said Thank You: jdd2405
The topic has been locked.
  • Mazi
  • Mazi's Avatar
  • Offline
  • Official LimeSurvey Partner
  • Official LimeSurvey Partner
More
7 years 1 month ago #148544 by Mazi
Replied by Mazi on 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
Need Help? We offer professional Limesurvey support: survey-consulting.com
Contact: marcel.minke(at)survey-consulting.com
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 1 month ago #148613 by DenisChenu
Replied by DenisChenu on topic Create a new view in plugin
Code:
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 , plugin development .
I don't answer to private message.
The topic has been locked.
  • Mazi
  • Mazi's Avatar
  • Offline
  • Official LimeSurvey Partner
  • Official LimeSurvey Partner
More
7 years 1 month ago #148615 by Mazi
Replied by Mazi on topic Create a new view in plugin

DenisChenu wrote:

Code:
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
Need Help? We offer professional Limesurvey support: survey-consulting.com
Contact: marcel.minke(at)survey-consulting.com
The topic has been locked.

Lime-years ahead

Online-surveys for every purse and purpose