/** * Provides a size chooser, with a text box for a number and a * select box to choose the units, in bytes, kilobytes, megabytes or gigabytes * * @param Pieform $form The form to render the element for * @param array $element The element to render * @return string The HTML for the element */ function pieform_element_bytes(Pieform $form, $element) { /*{{{*/ $formname = $form->get_name(); $result = ''; $name = Pieform::hsc($element['name']); if (!isset($element['defaultvalue'])) { $element['defaultvalue'] = null; } $global = $form->get_property('method') == 'get' ? $_GET : $_POST; // Get the value of the element for rendering. if (isset($element['value'])) { $bytes = $element['value']; $values = pieform_element_bytes_get_bytes_from_bytes($element['value']); } else { if ($form->is_submitted() && isset($global[$element['name']]) && isset($global[$element['name'] . '_units'])) { $values = array('number' => $global[$element['name']], 'units' => $global[$element['name'] . '_units']); $bytes = $values['number'] * pieform_element_bytes_in($values['units']); } else { if (isset($element['defaultvalue'])) { $bytes = $element['defaultvalue']; $values = pieform_element_bytes_get_bytes_from_bytes($bytes); } else { $values = array('number' => '0', 'units' => 'bytes'); $bytes = 0; } } } // @todo probably create with an actual input element, as tabindex doesn't work here for one thing // Same with the select. And do the events using mochikit signal instead of dom events $numberinput = '<div class="with-dropdown js-with-dropdown text">'; $numberinput .= '<label for="' . $formname . '_' . $name . '">' . Pieform::hsc($element['title']) . ': </label><input'; $numberinput .= ' type="text" size="6" name="' . $name . '"'; $numberinput .= ' id="' . $formname . '_' . $name . '" value="' . Pieform::hsc($values['number']) . '" tabindex="' . Pieform::hsc($element['tabindex']) . '"'; $numberinput .= 'class="with-dropdown js-with-dropdown form-control text' . (isset($element['error']) ? ' error"' : '') . '"'; if (isset($element['description'])) { $numberinput .= ' aria-describedby="' . $form->element_descriptors($element) . '"'; } $numberinput .= "></div>\n"; $uselect = '<div class="dropdown-connect js-dropdown-connect select">'; $uselect .= '<label for="' . $formname . '_' . $name . '_units" class="accessible-hidden sr-only">' . get_string('units') . '</label>'; $uselect .= '<span class="picker"><select class="form-control dropdown-connect js-dropdown-connect select" name="' . $name . '_units" id="' . $formname . '_' . $name . '_units"' . ' tabindex="' . Pieform::hsc($element['tabindex']) . '"'; if (isset($element['description'])) { $uselect .= ' aria-describedby="' . $form->element_descriptors($element) . '"'; } $uselect .= ">\n"; foreach (pieform_element_bytes_get_bytes_units() as $u) { $uselect .= "\t<option value=\"{$u}\"" . ($values['units'] == $u ? ' selected="selected"' : '') . '>' . $form->i18n('element', 'bytes', $u, $element) . "</option>\n"; } $uselect .= "</select></span></div>\n"; $fieldset = '<div id="' . $formname . '_' . $name . '_fieldset" class="dropdown-group js-dropdown-group form-group">' . '<fieldset class="pieform-fieldset dropdown-group js-dropdown-group">' . $numberinput . $uselect . '</fieldset></div>'; return $fieldset; }
/** * Provides a size chooser, with a text box for a number and a * select box to choose the units, in bytes, kilobytes, or megabytes * * @param Pieform $form The form to render the element for * @param array $element The element to render * @return string The HTML for the element */ function pieform_element_bytes(Pieform $form, $element) { /*{{{*/ $formname = $form->get_name(); $result = ''; $name = $element['name']; if (!isset($element['defaultvalue'])) { $element['defaultvalue'] = null; } $global = $form->get_property('method') == 'get' ? $_GET : $_POST; // Get the value of the element for rendering. if (isset($element['value'])) { $bytes = $element['value']; $values = pieform_element_bytes_get_bytes_from_bytes($element['value']); } else { if (isset($global[$element['name']]) && isset($global[$element['name'] . '_units'])) { $values = array('number' => $global[$element['name']], 'units' => $global[$element['name'] . '_units']); $bytes = $values['number'] * pieform_element_bytes_in($values['units']); } else { if (isset($element['defaultvalue'])) { $bytes = $element['defaultvalue']; $values = pieform_element_bytes_get_bytes_from_bytes($bytes); } else { $values = array('number' => '0', 'units' => 'bytes'); $bytes = 0; } } } // @todo probably create with an actual input element, as tabindex doesn't work here for one thing // Same with the select. And do the events using mochikit signal instead of dom events $numberinput = '<input'; $numberinput .= ' type="text" size="8" name="' . $name . '"'; $numberinput .= ' id="' . $formname . '_' . $name . '" value="' . $values['number'] . '" tabindex="' . $element['tabindex'] . '"'; $numberinput .= (isset($element['error']) ? ' class="error"' : '') . ">\n"; $uselect = '<select onchange="' . $name . '_change()" '; $uselect .= 'name="' . $name . '_units" id="' . $formname . '_' . $name . '_units"' . ' tabindex="' . $element['tabindex'] . "\">\n"; foreach (pieform_element_bytes_get_bytes_units() as $u) { $uselect .= "\t<option value=\"{$u}\"" . ($values['units'] == $u ? ' selected="selected"' : '') . '>' . $form->i18n('element', 'bytes', $u, $element) . "</option>\n"; } $uselect .= "</select>\n"; return $numberinput . $uselect; }
* * @package mahara * @subpackage core * @author Catalyst IT Ltd * @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later * @copyright For copyright information on Mahara, please see the README file distributed with this software. * */ define('INTERNAL', 1); define('JSON', 1); define('INSTITUTIONALADMIN', 1); require dirname(dirname(dirname(__FILE__))) . '/init.php'; require_once 'pieforms/pieform/elements/bytes.php'; $instid = param_integer('instid'); $disabled = param_boolean('disabled', false); $definst = get_field('auth_instance', 'id', 'institution', 'mahara'); $record = get_record_sql('SELECT i.name, i.defaultquota FROM {institution} i JOIN {auth_instance} ai ON (i.name = ai.institution) WHERE ai.id = ?', array($instid)); if (!$USER->get('admin') && !$USER->is_institutional_admin($record->name)) { json_reply(true, 'You are not an administrator for institution ' . $record->name); return; } if ($definst && $instid == $definst) { $quota = get_config_plugin('artefact', 'file', 'defaultquota'); } else { $quota = $record->defaultquota; if (!$quota) { $quota = get_config_plugin('artefact', 'file', 'defaultquota'); } } $data = array('data' => $disabled ? display_size($quota) : pieform_element_bytes_get_bytes_from_bytes($quota), 'error' => false, 'message' => null); json_reply(false, $data);