html() public static method

Does "magic" formatting of links, mentions, link embeds, emoji, & linebreaks.
public static html ( mixed $Mixed ) : string
$Mixed mixed An object, array, or string to be formatted.
return string HTML
示例#1
0
/**
 *
 *
 * @param $Data
 */
function _checkTable($Data)
{
    echo "<table class='Data' width='100%' style='table-layout: fixed;'>\n";
    echo "<thead><tr><td width='20%'>Field</td><td width='45%'>Current</td><td width='35%'>File</td></tr></thead>";
    $First = true;
    foreach ($Data as $Key => $Value) {
        if (stringBeginsWith($Key, 'File_') || is_array($Value) || $Key == 'Name') {
            continue;
        }
        $Value = Gdn_Format::html($Value);
        $FileValue = Gdn_Format::html(val('File_' . $Key, $Data));
        if ($Key == 'MD5') {
            $Value = substr($Value, 0, 10);
            $FileValue = substr($FileValue, 0, 10);
        }
        if ($Key == 'FileSize') {
            $Value = Gdn_Upload::FormatFileSize($Value);
        }
        echo "<tr><td>{$Key}</td><td>{$Value}</td>";
        if ($Error = val('File_Error', $Data)) {
            if ($First) {
                echo '<td rowspan="4">', htmlspecialchars($Error), '</td>';
            }
        } else {
            echo "<td>{$FileValue}</td></tr>";
        }
        echo "\n";
        $First = false;
    }
    echo '</table>';
}
示例#2
0
 /**
  * Add prefix to the passed controller's discussion names when they are re: an addon.
  *
  * Ex: [AddonName] Discussion original name
  *
  * @param array $Discussion
  */
 public function addonDiscussionPrefix($Discussion)
 {
     $Addon = val('Addon', $Discussion);
     if ($Addon) {
         $Slug = AddonModel::slug($Addon, false);
         $Url = "/addon/{$Slug}";
         $AddonName = val('Name', $Addon);
         echo ' ' . wrap(anchor(Gdn_Format::html($AddonName), $Url), 'span', array('class' => 'Tag Tag-Addon')) . ' ';
     }
 }
示例#3
0
 /**
  * Format some text in a way suitable for passing into an rss/atom feed.
  * @since 2.1
  * @param string $Text The text to format.
  * @param string $Format The current format of the text.
  * @return string
  */
 public static function rssHtml($Text, $Format = 'Html')
 {
     if (!in_array($Text, array('Html', 'Raw'))) {
         $Text = Gdn_Format::to($Text, $Format);
     }
     if (function_exists('FormatRssHtmlCustom')) {
         return FormatRssHtmlCustom($Text);
     } else {
         return Gdn_Format::html($Text);
     }
 }
示例#4
0
/**
 * Converts addon info into a media item.
 *
 * @param $addonName
 * @param $addonInfo
 * @param $isEnabled
 * @param $addonType
 * @param $filter
 */
function writeAddonMedia($addonName, $addonInfo, $isEnabled, $addonType, $filter)
{
    $capitalCaseSheme = new \Vanilla\Utility\CapitalCaseScheme();
    $addonInfo = $capitalCaseSheme->convertArrayKeys($addonInfo, ['RegisterPermissions']);
    $screenName = Gdn_Format::display(val('Name', $addonInfo, $addonName));
    $description = Gdn_Format::html(t(val('Name', $addonInfo, $addonName) . ' Description', val('Description', $addonInfo, '')));
    $id = Gdn_Format::url($addonName) . '-addon';
    $media = new MediaItemModule($screenName, '', $description, 'li', ['id' => $id]);
    $media->setView('media-addon');
    // Icon
    $addon = Gdn::addonManager()->lookupAddon($addonName);
    $iconPath = '';
    if ($addon) {
        $iconPath = $addon->getIcon();
    }
    if (!$iconPath) {
        $iconPath = val('IconUrl', $addonInfo, 'applications/dashboard/design/images/addon-placeholder.png');
    }
    $media->setImage($iconPath);
    // Settings button
    $settingsUrl = $isEnabled ? val('SettingsUrl', $addonInfo, '') : '';
    $settingsPopupClass = val('UsePopupSettings', $addonInfo, true) ? ' js-modal' : '';
    if ($settingsUrl != '') {
        $attr['class'] = 'btn btn-icon-border' . $settingsPopupClass;
        $attr['aria-label'] = sprintf(t('Settings for %s'), $screenName);
        $attr['data-reload-page-on-save'] = false;
        $media->addButton(dashboardSymbol('settings'), $settingsUrl, $attr);
    }
    // Toggle
    if ($addonType === 'locales') {
        $action = $isEnabled ? 'disable' : 'enable';
    } else {
        $action = $filter;
    }
    if ($isEnabled) {
        $label = sprintf(t('Disable %s'), $screenName);
    } else {
        $label = sprintf(t('Enable %s'), $screenName);
    }
    $url = '/settings/' . $addonType . '/' . $action . '/' . $addonName;
    $media->setToggle(slugify($addonName), $isEnabled, $url, $label);
    // Meta
    $info = [];
    // Requirements
    $requiredApplications = val('RequiredApplications', $addonInfo, false);
    $requiredPlugins = val('RequiredPlugins', $addonInfo, false);
    $requirements = [];
    if (is_array($requiredApplications)) {
        foreach ($requiredApplications as $requiredApplication => $versionInfo) {
            $requirements[] = sprintf(t('%1$s Version %2$s'), $requiredApplication, $versionInfo);
        }
    }
    if (is_array($requiredPlugins)) {
        foreach ($requiredPlugins as $requiredPlugin => $versionInfo) {
            $requirements[] = sprintf(t('%1$s Version %2$s'), $requiredPlugin, $versionInfo);
        }
    }
    if (!empty($requirements)) {
        $requirementsMeta = sprintf(t('Requires: %s'), implode(', ', $requirements));
        $info[] = $requirementsMeta;
    }
    // Authors
    $author = val('Author', $addonInfo, '');
    $authors = [];
    // Check if singular author is set
    if ($author) {
        $authorUrl = val('AuthorUrl', $addonInfo, '');
        if ($authorUrl) {
            $authors[] = anchor($author, $authorUrl);
        } else {
            $authors[] = $author;
        }
    }
    // Check for multiple authors
    foreach (val('Authors', $addonInfo, []) as $author) {
        if (val('Homepage', $author)) {
            $authors[] = anchor(val('Name', $author), val('Homepage', $author));
        } else {
            $authors[] = val('Name', $author);
        }
    }
    if ($authors) {
        $authors = implode(', ', $authors);
        $info[] = sprintf(t('Created by %s'), $authors);
    }
    // Version Info
    $version = Gdn_Format::display(val('Version', $addonInfo, ''));
    $newVersion = val('NewVersion', $addonInfo, '');
    $upgrade = $newVersion != '' && version_compare($newVersion, $version, '>');
    if ($version != '') {
        $info[] = sprintf(t('Version %s'), $version);
    }
    $pluginUrl = val('PluginUrl', $addonInfo, '');
    if ($upgrade && $pluginUrl) {
        $info[] = anchor(printf(t('%1$s version %2$s is available.'), $screenName, $newVersion), combinePaths(array($pluginUrl, 'find', urlencode($screenName)), '/'));
    }
    if ($pluginUrl != '') {
        $info[] = anchor(t('Visit Site'), $pluginUrl);
    }
    // Extra meta in addon array
    if ($meta = val('Meta', $addonInfo)) {
        foreach ($meta as $key => $value) {
            if (is_numeric($key)) {
                $info[] = $value;
            } else {
                $info[] = t($key) . ': ' . $value;
            }
        }
    }
    $media->setMeta($info);
    echo $media;
}
示例#5
0
echo $Form->label('Page', 'Page');
echo '<div class="Info2">', t('Select the location of the pocket.', 'Select the location of the pocket.'), '</div>';
echo $Form->dropdown('Page', $this->data('Pages'));
?>
    </li>
    <li>
        <?php 
echo $Form->label('Location', 'Location');
echo '<div class="Info2">', t('Select the location of the pocket.', 'Select the location of the pocket.'), '</div>';
echo $Form->dropdown('Location', array_merge(array('' => '(' . sprintf(T('Select a %s'), t('Location')) . ')'), $this->data('LocationsArray')));
// Write the help for each location type.
foreach ($this->data('Locations') as $Location => $Options) {
    if (!array_key_exists('Description', $Options)) {
        continue;
    }
    echo '<div class="Info LocationInfo ' . $Location . 'Info">', Gdn_Format::html($Options['Description']), '</div>';
}
?>
    </li>
    <li class="js-repeat">
        <?php 
echo $Form->label('Repeat', 'RepeatType');
echo '<div>', $Form->radio('RepeatType', 'Before', array('Value' => Pocket::REPEAT_BEFORE, 'Default' => true)), '</div>';
echo '<div>', $Form->radio('RepeatType', 'After', array('Value' => Pocket::REPEAT_AFTER)), '</div>';
echo '<div>', $Form->radio('RepeatType', 'Repeat Every', array('Value' => Pocket::REPEAT_EVERY)), '</div>';
// Options for repeat every.
echo '<div class="RepeatOptions RepeatEveryOptions P">', '<div class="Info2">', t('Enter numbers starting at 1.'), '</div>', $Form->label('Frequency', 'EveryFrequency', array('Class' => 'SubLabel')), $Form->textBox('EveryFrequency', array('Class' => 'SmallInput')), ' <br /> ' . $Form->label('Begin At', 'EveryBegin', array('Class' => 'SubLabel')), $Form->textBox('EveryBegin', array('Class' => 'SmallInput')), '</div>';
echo '<div>', $Form->radio('RepeatType', 'Given Indexes', array('Value' => Pocket::REPEAT_INDEX)), '</div>';
// Options for repeat indexes.
echo '<div class="RepeatOptions RepeatIndexesOptions P">', '<div class="Info2">', t('Enter a comma-delimited list of indexes, starting at 1.'), '</div>', $Form->label('Indexes', 'Indexes', array('Class' => 'SubLabel')), $Form->textBox('Indexes'), '</div>';
?>
示例#6
0
 /**
  * Save the addon data.
  *
  * @param array $Stub
  * @param bool|array $Settings Not used; for signature compatibility.
  * @return bool|Gdn_DataSet|mixed|object|string
  */
 public function save($Stub, $Settings = false)
 {
     trace('AddonModel->Save()');
     $Session = Gdn::session();
     $this->defineSchema();
     // Most of the values come from the file itself.
     if (isset($Stub['Path'])) {
         $Path = $Stub['Path'];
     } elseif (val('Checked', $Stub)) {
         $Addon = $Stub;
     } elseif (isset($Stub['File'])) {
         $Path = combinePaths(array(PATH_UPLOADS, $Stub['File']));
     } else {
         if (!$Session->checkPermission('Addons.Addon.Manage') && isset($Stub['Filename'])) {
             // Only admins can modify plugin attributes without the file.
             $this->Validation->addValidationResult('Filename', 'ValidateRequired');
             return false;
         }
     }
     // Analyze and fix the file.
     if (!isset($Addon)) {
         if (isset($Path)) {
             try {
                 $Addon = UpdateModel::analyzeAddon($Path, false);
             } catch (Exception $Ex) {
                 $Addon = false;
                 $this->Validation->addValidationResult('File', '@' . $Ex->getMessage());
             }
             if (!is_array($Addon)) {
                 $this->Validation->addValidationResult('File', 'Could not analyze the addon file.');
                 return false;
             }
             $Addon = array_merge($Stub, $Addon);
         } else {
             $Addon = $Stub;
             if (isset($Path)) {
                 $Addon['MD5'] = md5_file($Path);
                 $Addon['FileSize'] = filesize($Path);
             }
         }
     }
     // Get an existing addon.
     if (isset($Addon['AddonID'])) {
         $CurrentAddon = $this->getID($Addon['AddonID'], false, ['GetVersions' => true]);
     } elseif (isset($Addon['AddonKey']) && isset($Addon['AddonTypeID'])) {
         $CurrentAddon = $this->getID(array($Addon['AddonKey'], $Addon['AddonTypeID']), false, ['GetVersions' => true]);
     } else {
         $CurrentAddon = false;
     }
     trace($CurrentAddon, 'CurrentAddon');
     $Insert = !$CurrentAddon;
     if ($Insert) {
         $this->addInsertFields($Addon);
     }
     $this->addUpdateFields($Addon);
     // always add update fields
     if (!$this->validate($Addon, $Insert)) {
         trace('Addon did not validate');
         return false;
     }
     // Search for the current version.
     $MaxVersion = false;
     $CurrentVersion = false;
     if ($CurrentAddon && isset($Addon['Version'])) {
         // Search for a current version.
         foreach ($CurrentAddon['Versions'] as $Index => $Version) {
             if (isset($Addon['AddonVersionID'])) {
                 if ($Addon['AddonVersionID'] == $Version['AddonVersionID']) {
                     $CurrentVersion = $Version;
                 }
             } elseif (version_compare($Addon['Version'], $Version['Version']) == 0) {
                 $CurrentVersion = $Version;
             }
             // Only check for a current version if the version has been checked.
             if (!$Version['Checked']) {
                 continue;
             }
             if (!$MaxVersion || version_compare($MaxVersion['Version'], $Version['Version'], '<')) {
                 $MaxVersion = $Version;
             }
         }
     }
     // Save the addon.
     $Fields = $this->filterSchema($Addon);
     if ($Insert) {
         $AddonID = $this->SQL->insert($this->Name, $Fields);
         // Add the activity.
         $ActivityModel = new ActivityModel();
         $Activity = array('ActivityType' => 'Addon', 'ActivityUserID' => $Fields['InsertUserID'], 'NotifyUserID' => ActivityModel::NOTIFY_PUBLIC, 'HeadlineFormat' => '{ActivityUserID,user} added the <a href="{Url,html}">{Data.Name}</a> addon.', 'Story' => Gdn_Format::html($Fields['Description']), 'Route' => '/addon/' . rawurlencode(self::slug($Fields, false)), 'Data' => array('Name' => $Fields['Name']));
         $ActivityModel->save($Activity);
     } else {
         $AddonID = val('AddonID', $CurrentAddon);
         // Only save the addon if it is the current version.
         if (!$MaxVersion || version_compare($Addon['Version'], $MaxVersion['Version'], '>=')) {
             trace('Uploaded version is the most recent version.');
             $this->SQL->put($this->Name, $Fields, array('AddonID' => $AddonID));
         } else {
             $this->SQL->reset();
         }
     }
     // Save the version.
     if ($AddonID && isset($Path) || isset($Addon['File'])) {
         trace('Saving addon version');
         $Addon['AddonID'] = $AddonID;
         if (isset($Path)) {
             if (!stringBeginsWith($Path, PATH_UPLOADS . '/addons/')) {
                 // The addon must be copied into the uploads folder.
                 $NewPath = PATH_UPLOADS . '/addons/' . basename($Path);
                 //rename($Path, $NewPath);
                 $Path = $NewPath;
                 $this->_AddonCache = array();
             }
             $File = substr($Path, strlen(PATH_UPLOADS . '/'));
             $Addon['File'] = $File;
         }
         if ($CurrentVersion) {
             $Addon['AddonVersionID'] = val('AddonVersionID', $CurrentVersion);
         }
         // Insert or update the version.
         $VersionModel = new Gdn_Model('AddonVersion');
         $AddonVersionID = $VersionModel->save($Addon);
         $this->Validation->addValidationResult($VersionModel->validationResults());
         if (!$AddonVersionID) {
             return false;
         }
         // Update the current version in the addon.
         if (!$MaxVersion || version_compare($CurrentAddon['Version'], $Addon['Version'], '<')) {
             $this->SQL->put($this->Name, array('CurrentAddonVersionID' => $AddonVersionID), array('AddonID' => $AddonID));
         }
     }
     $this->_AddonCache = array();
     return $AddonID;
 }
示例#7
0
文件: index.php 项目: vanilla/vanilla
$links .= '<li>' . anchor(t('Statistics Documentation'), 'http://docs.vanillaforums.com/addons/statistics/') . '</li>';
$links .= '</ul>';
helpAsset(sprintf(t('About %s'), t('Vanilla Statistics')), $desc);
helpAsset(t('Need More Help?'), $links);
?>

<?php 
if ($this->data('NotifyMessage') !== FALSE) {
    ?>
    <div class="padded alert alert-info">
        <strong><?php 
    echo t('Last time your forum communicated with the statistics server it received the following message:');
    ?>
</strong>
        <p><i><?php 
    echo Gdn_Format::html($this->data('NotifyMessage'));
    ?>
</i></p>
    </div>
<?php 
}
?>

<?php 
echo $this->Form->open();
echo $this->Form->errors();
?>

<div class="js-form">
    <?php 
echo $this->fetchView($this->data('FormView'), 'statistics', 'dashboard');
 private function message()
 {
     return Gdn::session()->isValid() ? '' : '<div class="DismissMessage CasualMessage signup-cta Hidden">' . wrap(Gdn_Format::html(c('registercta.message', $this->defaultMessage)), 'p') . anchor(t('Register'), 'entry/register', 'Button Primary') . ' <button class="Button later">' . t('Ask me later') . '</button>' . '</div>';
 }
示例#9
0
foreach ($this->data('Versions') as $Version) {
    $VersionSlug = urlencode($SlugBase . '-' . $Version['Version']);
    ?>
    <item>
        <title><?php 
    echo Gdn_Format::text($this->data('Name') . ' ' . $Version['Version']);
    ?>
</title>
        <link><?php 
    echo url('/addon/' . $VersionSlug, TRUE);
    ?>
</link>
        <pubDate><?php 
    echo date(DATE_RSS, Gdn_Format::toTimeStamp($Version['DateInserted']));
    ?>
</pubDate>
        <dc:creator><?php 
    echo Gdn_Format::text($this->data('InsertName'));
    ?>
</dc:creator>
        <guid isPermaLink="true"><?php 
    echo Url('/addons/addon/' . $VersionSlug, TRUE);
    ?>
</guid>
        <description><![CDATA[<?php 
    echo Gdn_Format::html($this->data('Description'));
    ?>
]]></description>
    </item>
    <?php 
}