本文整理汇总了PHP中XMLElement::setAttributeArray方法的典型用法代码示例。如果您正苦于以下问题:PHP XMLElement::setAttributeArray方法的具体用法?PHP XMLElement::setAttributeArray怎么用?PHP XMLElement::setAttributeArray使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLElement
的用法示例。
在下文中一共展示了XMLElement::setAttributeArray方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: appendFormattedElement
function appendFormattedElement(&$wrapper, $data)
{
if (!is_array($data) || empty($data)) {
return;
}
// If cache has expired refresh the data array from parsing the API XML
if (time() - $data['last_updated'] > $this->_fields['refresh'] * 60) {
$data = VimeoHelper::updateClipInfo($data['clip_id'], $this->_fields['id'], $wrapper->getAttribute('id'), $this->Database);
}
$video = new XMLElement($this->get('element_name'));
$video->setAttributeArray(array('clip-id' => $data['clip_id'], 'width' => $data['width'], 'height' => $data['height'], 'duration' => $data['duration'], 'plays' => $data['plays']));
$video->appendChild(new XMLElement('title', General::sanitize($data['title'])));
$video->appendChild(new XMLElement('caption', General::sanitize($data['caption'])));
$user = new XMLElement('user');
$user->appendChild(new XMLElement('name', $data['user_name']));
$user->appendChild(new XMLElement('url', $data['user_url']));
$thumbnail = new XMLElement('thumbnail');
$thumbnail->setAttributeArray(array('width' => $data['thumbnail_width'], 'height' => $data['thumbnail_height'], 'size' => 'large'));
$thumbnail->appendChild(new XMLElement('url', $data['thumbnail_url']));
$video->appendChild($thumbnail);
$thumbnail = new XMLElement('thumbnail');
$thumbnail->setAttributeArray(array('width' => $data['thumbnail_medium_width'], 'height' => $data['thumbnail_medium_height'], 'size' => 'medium'));
$thumbnail->appendChild(new XMLElement('url', $data['thumbnail_medium_url']));
$video->appendChild($thumbnail);
$thumbnail = new XMLElement('thumbnail');
$thumbnail->setAttributeArray(array('width' => $data['thumbnail_small_width'], 'height' => $data['thumbnail_small_height'], 'size' => 'small'));
$thumbnail->appendChild(new XMLElement('url', $data['thumbnail_small_url']));
$video->appendChild($thumbnail);
$video->appendChild($user);
$wrapper->appendChild($video);
}
示例2: __trigger
protected function __trigger()
{
## Cookies only show up on page refresh. This flag helps in making sure the correct XML is being set
$loggedin = false;
if (isset($_REQUEST['action']['login'])) {
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$loggedin = $this->_Parent->login($username, $password);
} else {
$loggedin = $this->_Parent->isLoggedIn();
}
if ($loggedin) {
$result = new XMLElement('login-info');
$result->setAttribute('logged-in', 'true');
$author = $this->_Parent->Author;
$result->setAttributeArray(array('id' => $author->get('id'), 'user-type' => $author->get('user_type'), 'primary-account' => $author->get('primary')));
$fields = array('name' => new XMLElement('name', $author->getFullName()), 'username' => new XMLElement('username', $author->get('username')), 'email' => new XMLElement('email', $author->get('email')));
if ($author->isTokenActive()) {
$fields['author-token'] = new XMLElement('author-token', $author->createAuthToken());
}
if ($section = $this->_Parent->Database->fetchRow(0, "SELECT `id`, `handle`, `name` FROM `tbl_sections` WHERE `id` = '" . $author->get('default_section') . "' LIMIT 1")) {
$default_section = new XMLElement('default-section', $section['name']);
$default_section->setAttributeArray(array('id' => $section['id'], 'handle' => $section['handle']));
$fields['default-section'] = $default_section;
}
foreach ($fields as $f) {
$result->appendChild($f);
}
} else {
$result = new XMLElement('user');
$result->setAttribute('logged-in', 'false');
}
return $result;
}
示例3: buildFilterElement
/**
* This method will construct XML that represents the result of
* an Event filter.
*
* @param string $name
* The name of the filter
* @param string $status
* The status of the filter, either passed or failed.
* @param XMLElement|string $message
* Optionally, an XMLElement or string to be appended to this
* `<filter>` element. XMLElement allows for more complex return
* types.
* @param array $attributes
* An associative array of additional attributes to add to this
* `<filter>` element
* @return XMLElement
*/
public static function buildFilterElement($name, $status, $message = null, array $attributes = null)
{
$filter = new XMLElement('filter', !$message || is_object($message) ? null : $message, array('name' => $name, 'status' => $status));
if ($message instanceof XMLElement) {
$filter->appendChild($message);
}
if (is_array($attributes)) {
$filter->setAttributeArray($attributes);
}
return $filter;
}
示例4: buildFilterElement
public function buildFilterElement($name, $status, $message = null, array $attr = null)
{
$ret = new XMLElement('filter', !$message || is_object($message) ? null : $message, array('name' => $name, 'status' => $status));
if (is_object($message)) {
$ret->appendChild($message);
}
if (is_array($attr)) {
$ret->setAttributeArray($attr);
}
return $ret;
}
示例5: grab
function grab(&$param_pool)
{
$tag_list_id = "38";
$result = new XMLElement("tag-cloud");
$tags = $this->_Parent->Database->fetch("SELECT DISTINCT(handle), COUNT(handle) AS count, value FROM sym_entries_data_{$tag_list_id} GROUP BY handle ORDER BY handle ASC");
foreach ($tags as $tag) {
$tag_node = new XMLElement("tag", $tag["value"]);
$tag_node->setAttributeArray(array("handle" => $tag["handle"], "count" => $tag["count"]));
$result->appendChild($tag_node);
}
return $result;
}
示例6: view
function view()
{
$this->setPageType('table');
$this->setTitle(__('%1$s – %2$s', array(__('Symphony'), __('Translation Manager'))));
$this->appendSubheading(__('Languages'), Widget::Anchor(__('Create New'), $this->_Parent->getCurrentPageURL() . 'edit/', __('Create new translation'), 'create button'));
$link = new XMLElement('link');
$link->setAttributeArray(array('rel' => 'stylesheet', 'type' => 'text/css', 'media' => 'screen', 'href' => URL . '/extensions/translationmanager/assets/admin.css'));
$this->addElementToHead($link, 500);
$this->addScriptToHead(URL . '/extensions/translationmanager/assets/admin.js', 501);
$default = $this->_tm->defaultDictionary();
$translations = $this->_tm->listAll();
$allextensions = $this->_Parent->ExtensionManager->listAll();
$current = $this->_Parent->Configuration->get('lang', 'symphony');
$warnings = array_shift($default);
$allnames = array('symphony' => __('Symphony'));
foreach ($allextensions as $extension => $about) {
$allnames[$extension] = $about['name'];
}
$aTableHead = array(array(__('Name'), 'col'), array(__('Code'), 'col'), array(__('Extensions*'), 'col', array('title' => __('Out of %s (including Symphony)', array(count($allextensions) + 1)))), array(__('Translated*'), 'col', array('title' => __('Out of %1$s (with %2$s parser warnings)', array(count($default), count($warnings) > 0 ? count($warnings) : __('no'))))), array(__('Obsolete'), 'col'), array(__('Current'), 'col'));
$aTableBody = array();
if (!is_array($translations) || empty($translations)) {
$aTableBody = array(Widget::TableRow(array(Widget::TableData(__('None Found.'), 'inactive', NULL, count($aTableHead)))));
} else {
foreach ($translations as $lang => $extensions) {
$language = $this->_tm->get($lang);
$translated = array_intersect_key(array_filter($language['dictionary'], 'trim'), $default);
$obsolete = array_diff_key($language['dictionary'], $default);
$names = array_intersect_key($allnames, array_fill_keys($extensions, true));
if (!$language['about']['name']) {
$language['about']['name'] = $lang;
}
$td1 = Widget::TableData(Widget::Anchor($language['about']['name'], $this->_Parent->getCurrentPageURL() . 'edit/' . $lang . '/', $lang));
$td2 = Widget::TableData($lang);
$td3 = Widget::TableData((string) count($extensions), NULL, NULL, NULL, array('title' => implode(', ', $names)));
$td4 = Widget::TableData(count($translated) . ' <small>(' . floor(count($translated) / count($default) * 100) . '%)</small>');
$td5 = Widget::TableData((string) count($obsolete));
$td6 = Widget::TableData($lang == $current ? __('Yes') : __('No'));
$td1->appendChild(Widget::Input('item', $lang, 'radio'));
## Add a row to the body array, assigning each cell to the row
$aTableBody[] = Widget::TableRow(array($td1, $td2, $td3, $td4, $td5, $td6), 'single' . ($lang == $this->_Parent->Configuration->get('lang', 'symphony') ? ' current' : ''));
}
}
$table = Widget::Table(Widget::TableHead($aTableHead), NULL, Widget::TableBody($aTableBody), 'languages');
$this->Form->appendChild($table);
$div = new XMLElement('div');
$div->setAttribute('class', 'actions');
$options = array(array(NULL, false, __('With Selected...')), array('delete', false, __('Delete')), array('switch', false, __('Make it current')), array('export', false, __('Export ZIP')));
$div->appendChild(Widget::Select('with-selected', $options));
$div->appendChild(Widget::Input('action[apply]', __('Apply'), 'submit'));
$this->Form->appendChild($div);
}
示例7: XMLElement
function __viewEdit()
{
$link = new XMLElement('link');
$link->setAttributeArray(array('rel' => 'stylesheet', 'type' => 'text/css', 'media' => 'screen', 'href' => URL . '/extensions/configuration/assets/configuration.css'));
$this->addElementToHead($link, 500);
$this->setTitle('Symphony – Configuration Settings');
$this->setPageType('table');
$this->appendSubheading('Configuration Settings');
## Table Headings
$aTableHead = array(array('Group', 'col'), array('Setting', 'col'), array('Value', 'col'));
## Get Configuration Settings and display as a table list
$config_settings = $this->_Parent->Configuration->get();
$tableData = array();
$count = 0;
foreach ($config_settings as $key => $groups) {
foreach ($groups as $name => $value) {
$setting_group = $key;
$setting_name = $name;
$setting_value = $value;
$setting_group_data = '<input name="settings[' . $count . '][group]" type="hidden" value="' . $setting_group . '" />' . $setting_group;
$setting_name_data = '<input name="settings[' . $count . '][name]" type="hidden" value="' . $setting_name . '" />' . $setting_name;
$tableData[] = Widget::TableData($setting_group_data);
$tableData[] = Widget::TableData($setting_name_data);
$tableData[] = Widget::TableData(Widget::Input('settings[' . $count . '][value]', $setting_value, 'text'));
$count++;
$aTableBody[] = Widget::TableRow($tableData, $bEven ? 'even' : NULL);
$bEven = !$bEven;
unset($tableData);
}
}
$table = Widget::Table(Widget::TableHead($aTableHead), NULL, Widget::TableBody($aTableBody));
$this->Form->appendChild($table);
## Save Button
$div = new XMLElement('div');
$div->setAttribute('class', 'actions');
$div->appendChild(Widget::Input('action[save]', 'Save Settings', 'submit', array('accesskey' => 's')));
$this->Form->appendChild($div);
## Notice Messages
if (isset($this->_flag)) {
switch ($this->_flag) {
case 'saved':
$this->pageAlert('Configuration Settings updated successfully.', AdministrationPage::PAGE_ALERT_NOTICE);
break;
case 'error':
$this->pageAlert('An error occurred.', AdministrationPage::PAGE_ALERT_NOTICE);
break;
}
}
}
示例8: __trigger
protected function __trigger()
{
// Cookies only show up on page refresh.
// This flag helps in making sure the correct XML is being set
$loggedin = false;
if (isset($_REQUEST['action']['login'])) {
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$loggedin = Frontend::instance()->login($username, $password);
} else {
$loggedin = Frontend::instance()->isLoggedIn();
}
if ($loggedin) {
$result = new XMLElement('login-info');
$result->setAttribute('logged-in', 'true');
$author = null;
if (is_callable(array('Symphony', 'Author'))) {
$author = Symphony::Author();
} else {
$author = Frontend::instance()->Author;
}
$result->setAttributeArray(array('id' => $author->get('id'), 'user-type' => $author->get('user_type'), 'primary-account' => $author->get('primary')));
$fields = array('name' => new XMLElement('name', $author->getFullName()), 'username' => new XMLElement('username', $author->get('username')), 'email' => new XMLElement('email', $author->get('email')));
if ($author->isTokenActive()) {
$fields['author-token'] = new XMLElement('author-token', $author->createAuthToken());
}
// Section
if ($section = Symphony::Database()->fetchRow(0, "SELECT `id`, `handle`, `name` FROM `tbl_sections` WHERE `id` = '" . $author->get('default_area') . "' LIMIT 1")) {
$default_area = new XMLElement('default-area', $section['name']);
$default_area->setAttributeArray(array('id' => $section['id'], 'handle' => $section['handle'], 'type' => 'section'));
$fields['default-area'] = $default_area;
} else {
$default_area = new XMLElement('default-area', $author->get('default_area'));
$default_area->setAttribute('type', 'page');
$fields['default-area'] = $default_area;
}
foreach ($fields as $f) {
$result->appendChild($f);
}
} else {
$result = new XMLElement('user');
$result->setAttribute('logged-in', 'false');
}
// param output
Frontend::Page()->_param['login'] = $loggedin ? 'yes' : 'no';
Frontend::Page()->_param['login-filter'] = $loggedin ? 'yes,no' : 'yes';
return $result;
}
示例9: grab
public function grab(&$param_pool)
{
$s = $_SESSION[__SYM_COOKIE_PREFIX_ . 'cart'];
$xml = new XMLElement('shopping-cart');
if (!is_array($s) || empty($s)) {
$xml->appendChild(new XMLElement('empty'));
return $xml;
}
$param_pool['ds-shopping-cart'] = implode(',', array_keys($s));
$total = null;
foreach ($s as $key => $value) {
$item = new XMLElement('item', null, array('id' => $key, 'num' => $value['num'], 'sum' => $value['sum']));
$xml->appendChild($item);
$total = $total + $value['sum'];
}
$xml->setAttributeArray(array('items' => count($s), 'total' => $total));
return $xml;
}
示例10: appendFormattedElement
public function appendFormattedElement(&$wrapper, $data, $encode = false)
{
if (!is_array($data) || empty($data)) {
return;
}
if (!is_array($data['file'])) {
if (!$data['file']) {
return;
}
$data = array('file' => array($data['file']));
}
$item = new XMLElement($this->get('element_name'));
$path = DOCROOT;
$item->setAttributeArray(array('path' => str_replace(WORKSPACE, '', $path)));
foreach ($data['file'] as $index => $file) {
$item->appendChild(new XMLElement('item', General::sanitize($file), array('size' => General::formatFilesize(filesize($path . $file)))));
}
$wrapper->appendChild($item);
}
示例11: execute
public function execute(array &$param_pool = null)
{
$result = new XMLElement($this->dsParamROOTELEMENT);
// When DS is called out of the Frontend context, this will enable
// {$root} and {$workspace} parameters to be evaluated
if (empty($this->_env)) {
$this->_env['env']['pool'] = array('root' => URL, 'workspace' => WORKSPACE);
}
try {
require_once TOOLKIT . '/class.gateway.php';
require_once TOOLKIT . '/class.xsltprocess.php';
require_once CORE . '/class.cacheable.php';
$this->dsParamURL = $this->parseParamURL($this->dsParamURL);
if (isset($this->dsParamXPATH)) {
$this->dsParamXPATH = $this->__processParametersInString(stripslashes($this->dsParamXPATH), $this->_env);
}
// Builds a Default Stylesheet to transform the resulting XML with
$stylesheet = new XMLElement('xsl:stylesheet');
$stylesheet->setAttributeArray(array('version' => '1.0', 'xmlns:xsl' => 'http://www.w3.org/1999/XSL/Transform'));
$output = new XMLElement('xsl:output');
$output->setAttributeArray(array('method' => 'xml', 'version' => '1.0', 'encoding' => 'utf-8', 'indent' => 'yes', 'omit-xml-declaration' => 'yes'));
$stylesheet->appendChild($output);
$template = new XMLElement('xsl:template');
$template->setAttribute('match', '/');
$instruction = new XMLElement('xsl:copy-of');
// Namespaces
if (isset($this->dsParamNAMESPACES) && is_array($this->dsParamNAMESPACES)) {
foreach ($this->dsParamNAMESPACES as $name => $uri) {
$instruction->setAttribute('xmlns' . ($name ? ":{$name}" : null), $uri);
}
}
// XPath
$instruction->setAttribute('select', $this->dsParamXPATH);
$template->appendChild($instruction);
$stylesheet->appendChild($template);
$stylesheet->setIncludeHeader(true);
$xsl = $stylesheet->generate(true);
// Check for an existing Cache for this Datasource
$cache_id = self::buildCacheID($this);
$cache = Symphony::ExtensionManager()->getCacheProvider('remotedatasource');
$cachedData = $cache->check($cache_id);
$writeToCache = null;
$isCacheValid = true;
$creation = DateTimeObj::get('c');
// Execute if the cache doesn't exist, or if it is old.
if (!is_array($cachedData) || empty($cachedData) || time() - $cachedData['creation'] > $this->dsParamCACHE * 60) {
if (Mutex::acquire($cache_id, $this->dsParamTIMEOUT, TMP)) {
$ch = new Gateway();
$ch->init($this->dsParamURL);
$ch->setopt('TIMEOUT', $this->dsParamTIMEOUT);
// Set the approtiate Accept: headers depending on the format of the URL.
if ($this->dsParamFORMAT == 'xml') {
$ch->setopt('HTTPHEADER', array('Accept: text/xml, */*'));
} elseif ($this->dsParamFORMAT == 'json') {
$ch->setopt('HTTPHEADER', array('Accept: application/json, */*'));
} elseif ($this->dsParamFORMAT == 'csv') {
$ch->setopt('HTTPHEADER', array('Accept: text/csv, */*'));
}
self::prepareGateway($ch);
$data = $ch->exec();
$info = $ch->getInfoLast();
Mutex::release($cache_id, TMP);
$data = trim($data);
$writeToCache = true;
// Handle any response that is not a 200, or the content type does not include XML, JSON, plain or text
if ((int) $info['http_code'] != 200 || !preg_match('/(xml|json|csv|plain|text)/i', $info['content_type'])) {
$writeToCache = false;
$result->setAttribute('valid', 'false');
// 28 is CURLE_OPERATION_TIMEOUTED
if ($info['curl_error'] == 28) {
$result->appendChild(new XMLElement('error', sprintf('Request timed out. %d second limit reached.', $timeout)));
} else {
$result->appendChild(new XMLElement('error', sprintf('Status code %d was returned. Content-type: %s', $info['http_code'], $info['content_type'])));
}
return $result;
} else {
if (strlen($data) > 0) {
// Handle where there is `$data`
// If it's JSON, convert it to XML
if ($this->dsParamFORMAT == 'json') {
try {
require_once TOOLKIT . '/class.json.php';
$data = JSON::convertToXML($data);
} catch (Exception $ex) {
$writeToCache = false;
$errors = array(array('message' => $ex->getMessage()));
}
} elseif ($this->dsParamFORMAT == 'csv') {
try {
require_once EXTENSIONS . '/remote_datasource/lib/class.csv.php';
$data = CSV::convertToXML($data);
} catch (Exception $ex) {
$writeToCache = false;
$errors = array(array('message' => $ex->getMessage()));
}
} elseif ($this->dsParamFORMAT == 'txt') {
$txtElement = new XMLElement('entry');
$txtElement->setValue(General::wrapInCDATA($data));
$data = $txtElement->generate();
$txtElement = null;
//.........这里部分代码省略.........
示例12: XMLElement
<?php
require_once TOOLKIT . '/class.gateway.php';
require_once TOOLKIT . '/class.xsltprocess.php';
require_once CORE . '/class.cacheable.php';
if (isset($this->dsParamURL)) {
$this->dsParamURL = $this->__processParametersInString($this->dsParamURL, $this->_env, true, true);
}
if (isset($this->dsParamXPATH)) {
$this->dsParamXPATH = $this->__processParametersInString($this->dsParamXPATH, $this->_env);
}
$stylesheet = new XMLElement('xsl:stylesheet');
$stylesheet->setAttributeArray(array('version' => '1.0', 'xmlns:xsl' => 'http://www.w3.org/1999/XSL/Transform'));
$output = new XMLElement('xsl:output');
$output->setAttributeArray(array('method' => 'xml', 'version' => '1.0', 'encoding' => 'utf-8', 'indent' => 'yes', 'omit-xml-declaration' => 'yes'));
$stylesheet->appendChild($output);
$template = new XMLElement('xsl:template');
$template->setAttribute('match', '/');
$instruction = new XMLElement('xsl:copy-of');
## Namespaces
foreach ($this->dsParamFILTERS as $name => $uri) {
$instruction->setAttribute('xmlns' . ($name ? ":{$name}" : NULL), $uri);
}
## XPath
$instruction->setAttribute('select', $this->dsParamXPATH);
$template->appendChild($instruction);
$stylesheet->appendChild($template);
$stylesheet->setIncludeHeader(true);
$xsl = $stylesheet->generate(true);
$proc =& new XsltProcess();
$cache_id = md5($this->dsParamURL . serialize($this->dsParamFILTERS) . $this->dsParamXPATH);
示例13: wrapFormElementWithError
function wrapFormElementWithError($element, $message)
{
$div = new XMLElement('div');
$div->setAttributeArray(array('id' => 'error', 'class' => 'invalid'));
$div->appendChild($element);
$div->appendChild(new XMLElement('p', $message));
return $div;
}
示例14: __form
//.........这里部分代码省略.........
* Allows adding of new filter rules to the Event filter rule select box
*
* @delegate AppendEventFilter
* @param string $context
* '/blueprints/events/(edit|new|info)/'
* @param array $selected
* An array of all the selected filters for this Event
* @param array $options
* An array of all the filters that are available, passed by reference
*/
Symphony::ExtensionManager()->notifyMembers('AppendEventFilter', '/blueprints/events/' . $this->_context[0] . '/', array('selected' => $filters, 'options' => &$options));
$fieldset->appendChild(Widget::Select('fields[filters][]', $options, array('multiple' => 'multiple', 'id' => 'event-filters')));
$this->Form->appendChild($fieldset);
// Connections
$fieldset = new XMLElement('fieldset');
$fieldset->setAttribute('class', 'settings');
$fieldset->appendChild(new XMLElement('legend', __('Attach to Pages')));
$p = new XMLElement('p', __('The event will only be available on the selected pages.'));
$p->setAttribute('class', 'help');
$fieldset->appendChild($p);
$div = new XMLElement('div');
$label = Widget::Label(__('Pages'));
$pages = PageManager::fetch();
$event_handle = str_replace('-', '_', Lang::createHandle($fields['name']));
$connections = ResourceManager::getAttachedPages(RESOURCE_TYPE_EVENT, $event_handle);
$selected = array();
foreach ($connections as $connection) {
$selected[] = $connection['id'];
}
$options = array();
foreach ($pages as $page) {
$options[] = array($page['id'], in_array($page['id'], $selected), PageManager::resolvePageTitle($page['id']));
}
$label->appendChild(Widget::Select('fields[connections][]', $options, array('multiple' => 'multiple')));
$div->appendChild($label);
$fieldset->appendChild($div);
$this->Form->appendChild($fieldset);
// Providers
if (!empty($providers)) {
foreach ($providers as $providerClass => $provider) {
if ($isEditing && $fields['source'] !== call_user_func(array($providerClass, 'getSource'))) {
continue;
}
call_user_func_array(array($providerClass, 'buildEditor'), array($this->Form, &$this->_errors, $fields, $handle));
}
}
} else {
// Author
if (isset($about['author']['website'])) {
$link = Widget::Anchor($about['author']['name'], General::validateURL($about['author']['website']));
} elseif (isset($about['author']['email'])) {
$link = Widget::Anchor($about['author']['name'], 'mailto:' . $about['author']['email']);
} else {
$link = $about['author']['name'];
}
if ($link) {
$fieldset = new XMLElement('fieldset');
$fieldset->setAttribute('class', 'settings');
$fieldset->appendChild(new XMLElement('legend', __('Author')));
$fieldset->appendChild(new XMLElement('p', $link->generate(false)));
$this->Form->appendChild($fieldset);
}
// Version
$fieldset = new XMLElement('fieldset');
$fieldset->setAttribute('class', 'settings');
$fieldset->appendChild(new XMLElement('legend', __('Version')));
$version = array_key_exists('version', $about) ? $about['version'] : null;
$release_date = array_key_exists('release-date', $about) ? $about['release-date'] : filemtime(EventManager::__getDriverPath($handle));
if (preg_match('/^\\d+(\\.\\d+)*$/', $version)) {
$fieldset->appendChild(new XMLElement('p', __('%1$s released on %2$s', array($version, DateTimeObj::format($release_date, __SYM_DATE_FORMAT__)))));
} elseif (!is_null($version)) {
$fieldset->appendChild(new XMLElement('p', __('Created by %1$s at %2$s', array($version, DateTimeObj::format($release_date, __SYM_DATE_FORMAT__)))));
} else {
$fieldset->appendChild(new XMLElement('p', __('Last modified on %s', array(DateTimeObj::format($release_date, __SYM_DATE_FORMAT__)))));
}
$this->Form->appendChild($fieldset);
}
// If we are editing an event, it assumed that the event has documentation
$fieldset = new XMLElement('fieldset');
$fieldset->setAttribute('id', 'event-documentation');
$fieldset->setAttribute('class', 'settings');
if ($isEditing && method_exists($existing, 'documentation')) {
$doc = $existing->documentation();
if ($doc) {
$fieldset->setValue('<legend>' . __('Documentation') . '</legend>' . PHP_EOL . General::tabsToSpaces(is_object($doc) ? $doc->generate(true, 4) : $doc));
}
}
$this->Form->appendChild($fieldset);
$div = new XMLElement('div');
$div->setAttribute('class', 'actions');
$div->appendChild(Widget::Input('action[save]', $isEditing ? __('Save Changes') : __('Create Event'), 'submit', array('accesskey' => 's')));
if ($isEditing) {
$button = new XMLElement('button', __('Delete'));
$button->setAttributeArray(array('name' => 'action[delete]', 'class' => 'button confirm delete', 'title' => __('Delete this event'), 'type' => 'submit', 'accesskey' => 'd', 'data-message' => __('Are you sure you want to delete this event?')));
$div->appendChild($button);
}
if (!$readonly) {
$this->Form->appendChild($div);
}
}
示例15: view
function view()
{
$this->_existing_file = isset($this->_context[1]) ? $this->_context[1] . '.xsl' : NULL;
## Handle unknown context
if (!in_array($this->_context[0], array('new', 'edit'))) {
$this->_Parent->errorPageNotFound();
}
## Edit Utility context
if ($this->_context[0] == 'edit') {
$file_abs = UTILITIES . '/' . $this->_existing_file;
$filename = $this->_existing_file;
if (!@is_file($file_abs)) {
redirect(URL . '/symphony/blueprints/utilities/new/');
}
$fields['name'] = $filename;
$fields['body'] = @file_get_contents($file_abs);
$this->Form->setAttribute('action', URL . '/symphony/blueprints/utilities/edit/' . $this->_context[1] . '/');
} else {
$fields['body'] = '<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="">
</xsl:template>
</xsl:stylesheet>';
}
$formHasErrors = is_array($this->_errors) && !empty($this->_errors);
if ($formHasErrors) {
$this->pageAlert(__('An error occurred while processing this form. <a href="#error">See below for details.</a>'), Alert::ERROR);
}
if (isset($this->_context[2])) {
switch ($this->_context[2]) {
case 'saved':
$this->pageAlert(__('Utility updated at %1$s. <a href="%2$s">Create another?</a> <a href="%3$s">View all Utilities</a>', array(DateTimeObj::get(__SYM_TIME_FORMAT__), URL . '/symphony/blueprints/utilities/new/', URL . '/symphony/blueprints/components/')), Alert::SUCCESS);
break;
case 'created':
$this->pageAlert(__('Utility created at %1$s. <a href="%2$s">Create another?</a> <a href="%3$s">View all Utilities</a>', array(DateTimeObj::get(__SYM_TIME_FORMAT__), URL . '/symphony/blueprints/utilities/new/', URL . '/symphony/blueprints/components/')), Alert::SUCCESS);
break;
}
}
$this->setTitle(__($this->_context[0] == 'new' ? '%1$s – %2$s' : '%1$s – %2$s – %3$s', array(__('Symphony'), __('Utilities'), $filename)));
$this->appendSubheading($this->_context[0] == 'new' ? __('Untitled') : $filename);
if (!empty($_POST)) {
$fields = $_POST['fields'];
}
$fields['body'] = General::sanitize($fields['body']);
$fieldset = new XMLElement('fieldset');
$fieldset->setAttribute('class', 'primary');
$label = Widget::Label(__('Name'));
$label->appendChild(Widget::Input('fields[name]', $fields['name']));
$fieldset->appendChild(isset($this->_errors['name']) ? $this->wrapFormElementWithError($label, $this->_errors['name']) : $label);
$label = Widget::Label(__('Body'));
$label->appendChild(Widget::Textarea('fields[body]', 30, 80, $fields['body'], array('class' => 'code')));
$fieldset->appendChild(isset($this->_errors['body']) ? $this->wrapFormElementWithError($label, $this->_errors['body']) : $label);
$this->Form->appendChild($fieldset);
$utilities = General::listStructure(UTILITIES, array('xsl'), false, 'asc', UTILITIES);
$utilities = $utilities['filelist'];
if (is_array($utilities) && !empty($utilities)) {
$div = new XMLElement('div');
$div->setAttribute('class', 'secondary');
$h3 = new XMLElement('h3', __('Utilities'));
$h3->setAttribute('class', 'label');
$div->appendChild($h3);
$ul = new XMLElement('ul');
$ul->setAttribute('id', 'utilities');
$i = 0;
foreach ($utilities as $util) {
$li = new XMLElement('li');
if ($i++ % 2 != 1) {
$li->setAttribute('class', 'odd');
}
$li->appendChild(Widget::Anchor($util, URL . '/symphony/blueprints/utilities/edit/' . str_replace('.xsl', '', $util) . '/', NULL));
$ul->appendChild($li);
}
$div->appendChild($ul);
$this->Form->appendChild($div);
}
$div = new XMLElement('div');
$div->setAttribute('class', 'actions');
$div->appendChild(Widget::Input('action[save]', $this->_context[0] == 'edit' ? __('Save Changes') : __('Create Utility'), 'submit', array('accesskey' => 's')));
if ($this->_context[0] == 'edit') {
$button = new XMLElement('button', __('Delete'));
$button->setAttributeArray(array('name' => 'action[delete]', 'class' => 'confirm delete', 'title' => __('Delete this utility')));
$div->appendChild($button);
}
$this->Form->appendChild($div);
}