Open new page via plugin

OJS development discussion, enhancement requests, third-party patches and plug-ins.

Moderators: jmacgreg, btbell, michael, bdgregg, barbarah, asmecher

Forum rules
The Public Knowledge Project Support Forum is moving to http://forum.pkp.sfu.ca

This forum will be maintained permanently as an archived historical resource, but all new questions should be added to the new forum. Questions will no longer be monitored on this old forum after March 30, 2015.
Szdnez
Posts: 17
Joined: Tue Oct 20, 2009 12:48 pm

Open new page via plugin

Postby Szdnez » Sat Jan 02, 2010 2:05 pm

Hello,

I want to write my own OJS plugin. The plugin should put a new link in the list of the journal manager and when I click the link, I want to show a new page. The link is not the problem but I am not able to show a new page. Whatever I have tried, the page is always "empty". That is my code:

index.php

Code: Select all

require( 'VgWortZaehlmarkePlugin.inc.php' );
return new VgWortZaehlmarkePlugin();

VgWortZaehlmarkePlugin.inc.php

Code: Select all

import('classes.plugins.GenericPlugin');

class VgWortZaehlmarkePlugin
extends GenericPlugin
{
   function register( $category, $path )
   {
      if ( parent::register( $category, $path ) )
      {
         HookRegistry::register( 'Templates::Manager::Index::ManagementPages', array( &$this, 'callback' ) );
         $this->addLocaleData();
         
         return true;
      }
      
      return false;
   }
   ...
   function callback( $hookName, $args )
   {
      $params =& $args[0];
      $smarty =& $args[1];
      $output =& $args[2];
      $output .= '<li>&#187; <a href="' . Request::url( null, 'VgWortZaehlmarke' ) . '">' . Locale::translate( 'plugins.generic.vgwortzaehlmarke.linkname' ) . '</a></li>';
        
      return false;
   }
}

VgWortZaehlmarkeHandler.inc.php

Code: Select all

class VgWortZaehlmarkeHandler
extends Handler
{
   function index()
   {
      $templateManager =& TemplateManager::getManager();
      $templateManager->display($plugin->getTemplatePath() . 'VgWortZaehlmarke.tpl');
   }
}

VgWortZaehlmarke.tpl

Code: Select all

<p>Test</p>

Do I hve to register something more, or...? It is nearly the same code as e.g. the counter plugin of OJS. I have no more ideas and I can not debug my code because of OJS development under eclipse with pdt.

Thanks a lot!

Szdnez
Posts: 17
Joined: Tue Oct 20, 2009 12:48 pm

Re: Open new page via plugin

Postby Szdnez » Sat Jan 02, 2010 2:40 pm

At least I had the right "idea". I forgot to register the handler in the plugin. The extended code of VgWortZaehlmarkePlugin.inc.php

Code: Select all

function register( $category, $path )
   {
      if ( parent::register( $category, $path ) )
      {
         HookRegistry::register( 'Templates::Manager::Index::ManagementPages', array( &$this, 'callback' ) );
         HookRegistry::register( 'LoadHandler', array( &$this, 'handleRequest' ) );
         
         $this->addLocaleData();
         
         return true;
      }
      
      return false;
   }
   ...
   function handleRequest( $hookName, $args )
   {
      $page =& $args[0];
      $op =& $args[1];
      $sourceFile =& $args[2];

      if ( $page === 'VgWortZaehlmarke' )
      {
         $this->addLocaleData();
         $this->import( 'VgWortZaehlmarkeHandler' );
         Registry::set( 'VgWortZaehlmarkePlugIn', $this );
         define( 'HANDLER_CLASS', 'VgWortZaehlmarkeHandler' );
         
         return true;
      }

      return false;
   }

heidelberg
Posts: 40
Joined: Mon May 04, 2009 2:17 am

Re: Open new page via plugin

Postby heidelberg » Tue Mar 23, 2010 2:16 am

Hi,

Actually, I am also interesed in a VG Wort Zählmarke - Plugin.
Is there any way that you could make it available to the public?
Or could you let me know if you could get it working properly?

Best wishes,
Steff


Return to “OJS Development”

Who is online

Users browsing this forum: No registered users and 2 guests