Esempio n. 1
0
    /**
     * Renders custom fields in the form, allowing the subscriber to enter the
     * dependent users
     *
     * @param  array  $cache
     *
     * @return  array  The custom fields definitions
     */
    public function onSubscriptionFormRenderPerSubFields($cache)
    {
        $fields = array();
        // Make sure we have a level
        if (!array_key_exists('subscriptionlevel', $cache)) {
            return $fields;
        }
        // Make sure this leve supports slave subscriptions
        $level = $cache['subscriptionlevel'];
        if (!array_key_exists($level, $this->maxSlaves)) {
            return $fields;
        }
        $maxSlaves = $this->maxSlaves[$level];
        if ($maxSlaves <= 0) {
            return $fields;
        }
        JLoader::import('joomla.user.helper');
        $javascript_fetch = '';
        $javascript_validate = '';
        if (!isset($cache['useredit']) || !$cache['useredit']) {
            $useredit = false;
        } else {
            $useredit = $cache['useredit'];
        }
        for ($i = 0; $i < $maxSlaves; $i++) {
            if (array_key_exists('slaveusers', $cache['subcustom'])) {
                $allSlaves = $cache['subcustom']['slaveusers'];
            } else {
                $allSlaves = array();
            }
            if (array_key_exists($i, $allSlaves)) {
                $current = $allSlaves[$i];
            } else {
                $current = '';
            }
            $html = '<input type="text" class="slaves" name="subcustom[slaveusers][' . $i . ']" id="slaveuser' . $i . '" value="' . htmlentities($current) . '" />';
            $userExists = false;
            if (!empty($current)) {
                $userExists = JUserHelper::getUserId($current) > 0;
            }
            // Setup the field
            $field = array('id' => 'slaveuser' . $i, 'label' => JText::sprintf('PLG_AKEEBASUBS_SLAVESUBS_ADDONUSER_LBL', $i + 1), 'elementHTML' => $html, 'invalidLabel' => JText::_('PLG_AKEEBASUBS_SLAVESUBS_INVALID_LBL'), 'isValid' => empty($current) || $userExists, 'validationClass' => 'slavesubsValidation');
            // Add the field to the return output
            $fields[] = $field;
            // Add Javascript
            $javascript_fetch .= <<<ENDJS
result.slaveusers[{$i}] = \$('#slaveuser{$i}').val();

ENDJS;
            $javascript_validate .= <<<JS

\$('#slaveuser{$i}').parents('div.control-group').removeClass('error has-error success has-success');
if(!response.subcustom_validation.slaveuser{$i}) {
\t\$('#slaveuser{$i}').parents('div.control-group').addClass('error has-error');
\t\$('#slaveuser{$i}_invalid').css('display','inline-block');
\tthisIsValid = false;
} else {
\t\$('#slaveuser{$i}').parents('div.control-group').removeClass('error has-error');
\t\$('#slaveuser{$i}_invalid').css('display','none');
\tthisIsValid = true;
}

JS;
        }
        if (!$useredit) {
            $javascript = <<<JS

;// This comment is intentionally put here to prevent badly written plugins from causing a Javascript error
// due to missing trailing semicolon and/or newline in their code.
(function(\$) {
\t\$(document).ready(function(){
\t\taddToSubValidationFetchQueue(plg_akeebasubs_slavesubs_fetch);
\t\taddToSubValidationQueue(plg_akeebasubs_slavesubs_validate);
\t});
})(akeeba.jQuery);

function plg_akeebasubs_slavesubs_fetch()
{
\tvar result = {
\t\tslaveusers: {}
\t};

\t(function(\$) {
{$javascript_fetch}
\t})(akeeba.jQuery);

\treturn result;
}

function plg_akeebasubs_slavesubs_validate(response)
{
\tvar thisIsValid = true;
\t(function(\$) {
{$javascript_validate}

\t})(akeeba.jQuery);

\treturn thisIsValid;
}

JS;
            $document = JFactory::getDocument();
            $document->addScriptDeclaration($javascript);
        } else {
            require_once JPATH_ROOT . '/components/com_akeebasubs/helpers/js.php';
            AkeebasubsHelperJs::addSelector('input.slaves');
        }
        return $fields;
    }
Esempio n. 2
0
				<?php 
                }
                ?>
			</div>
		</div>

	<?php 
            }
        }
    }
}
$subfieldsHTML = trim(@ob_get_clean());
if (!empty($subfieldsHTML)) {
    // Do I have to inject any plugin validators?
    require_once JPATH_ROOT . '/components/com_akeebasubs/helpers/js.php';
    AkeebasubsHelperJs::deployValidator();
    ?>
	<fieldset>
		<legend><?php 
    echo JText::_('COM_AKEEBASUBS_LEVEL_PERSUBFIELDS');
    ?>
</legend>
		<form class="form form-horizontal" method="post" action="<?php 
    echo JRoute::_('index.php?option=com_akeebasubs&view=subscriptions&task=save', false);
    ?>
">
		<?php 
    echo $subfieldsHTML;
    ?>
			<button type="submit" class="btn btn-primary pull-right">
				<?php