function module_category_transition($mod_reference, $module_params)
{
	global $smarty, $cat_type, $cat_objid, $modlib;

	if ($cat_type && $cat_objid) {
		$smarty->assign('objType', $cat_type);
		$smarty->assign('objId', $cat_objid);

		require_once 'lib/transitionlib.php';
		$transitionlib = new TransitionLib('category');

		if (isset($_POST['transition'])) {
			$transitionlib->triggerTransition($_POST['transition'], $cat_objid, $cat_type);
			header('Location: ' . $_SERVER['REQUEST_URI']);
			exit;
		}

		$transitions = $transitionlib->getAvailableTransitions($cat_objid, $cat_type);
		$smarty->assign('mod_transitions', $transitions);

	} else if ($modlib->is_admin_mode(true)) {	// add a dummy transition to display on the module admin page

		$smarty->assign(
						'mod_transitions',
						array(array(
								'enabled' => true,
								'transitionId' => 0,
								'name' => tra('Example Transition')
						))
		);
	}
}
function wikiplugin_categorytransition($data, $params)
{
    global $smarty;
    extract($params, EXTR_SKIP);
    if (empty($redirect)) {
        $redirect = $_SERVER['REQUEST_URI'];
    }
    if ($objType && $objId) {
        $smarty->assign('objType', $objType);
        $smarty->assign('objId', $objId);
        require_once 'lib/transitionlib.php';
        $transitionlib = new TransitionLib('category');
        if (isset($_POST['wp_transition']) && $_POST['wp_transition_obj'] == $objType . ':' . $objId) {
            $transitionlib->triggerTransition($_POST['wp_transition'], $objId, $objType);
            header('Location: ' . $redirect);
            exit;
        }
        $transitions = $transitionlib->getAvailableTransitions($objId, $objType);
        if (!$transitions) {
            return '';
        }
        $smarty->assign('wp_transitions', $transitions);
        $smarty->assign('wp_transition_obj', $objType . ':' . $objId);
        $out = $smarty->fetch('wiki-plugins/wikiplugin_categorytransition.tpl');
        return '~np~' . $out . '~/np~';
    }
    return '';
}