Example #1
0
 public static function IncludeJPlayer()
 {
     ComponentHandler::LoadScriptLibrary('jquery');
     \Core\view()->addScript('js/jquery.jplayer.min.js');
     \Core\view()->addStylesheet('css/skin/jplayer.blue.monday.css');
     //Can has include?
     return true;
 }
	/**
	 * Set the packager aka packager author.
	 *
	 * (packager is a bit too ambigious in this context).
	 *
	 * @param string $name
	 * @param string $email
	 */
	public function setPackageMaintainer($name, $email) {
		$this->getElement('/changelog[@version="' . $this->_version . '"]/packagemeta/date')->nodeValue = Time::GetCurrent(Time::TIMEZONE_GMT, 'r');
		$this->getElement('/changelog[@version="' . $this->_version . '"]/packagemeta/maintainer[@name="' . $name . '"][@email="' . $email . '"]');
		$this->getElement('/changelog[@version="' . $this->_version . '"]/packagemeta/packager')->nodeValue = 'CAE2 ' . ComponentHandler::GetComponent('core')->getVersion();
	}
Example #3
0
    public static function IncludeTinyMCE()
    {
        \ComponentHandler::LoadScriptLibrary('jquery');
        /** @var \View $view */
        $view = \Core\view();
        /** @var \UserModel $user */
        $user = \Core\user();
        // I need to include both versions of TinyMCE so that
        // 1) the tinymce object is visible in the global scope at the time of execution and
        // 2) so I can target all inputs by their class name instead of the ID.
        $view->addScript('js/tinymce/tinymce.min.js');
        $view->addScript('js/tinymce/jquery.tinymce.min.js');
        $view->addStylesheet('css/tinymce/overrides.css');
        // Yes, the string needs quotes inside of quotes!  It's to be read by javascript after all.
        $browsable = \Core::IsComponentAvailable('media-manager') && $user->checkAccess('p:/mediamanager/browse');
        $filebrowsercallback = $browsable ? "Core.TinyMCE.FileBrowserCallback" : 'null';
        $loc = \Core\resolve_asset('js/tinymce/tinymce.min.js');
        $content = \Core\resolve_asset('css/tinymce/content.css');
        $pages = \PageModel::GetPagesAsOptions();
        $links = [];
        foreach ($pages as $url => $title) {
            // Trim off the "(...)" at the end of the title.
            // Core adds that as a benefit for knowing
            $links[] = ['title' => html_entity_decode(preg_replace('/(.*) \\([^\\)]*\\)/', '$1', $title)), 'value' => \Core\resolve_link($url)];
        }
        // And json the data.
        $links = json_encode($links);
        // Create the list of plugins
        // Start with standard and tack on any custom ones.
        $plugins = ['advlist', 'anchor', 'autolink', 'charmap', 'code', 'colorpicker', 'contextmenu', 'fullscreen', 'hr', 'image', 'imagetools', 'insertdatetime', 'link', 'lists', 'media', 'pagebreak', 'paste', 'preview', 'searchreplace', 'table', 'textcolor', 'visualblocks', 'visualchars', 'wordcount'];
        $customIncludes = '';
        foreach (self::$CustomPlugins as $name => $src) {
            // The "-" is required to inform TinyMCE not to load the plugin again.
            // It'll be loaded manually via the .load() method as it has a custom URL.
            $plugins[] = '-' . $name;
            // Resolve this src to an absolute URL
            $src = \Core\resolve_asset($src);
            $customIncludes .= 'tinymce.PluginManager.load("' . $name . '", "' . $src . '");';
        }
        // And make them something that javascript can understand.
        $plugins = json_encode($plugins);
        $script = <<<EOD
<script type="text/javascript">

\tCore.TinyMCEDefaults = {
\t\t// Location of TinyMCE script
\t\tscript_url : '{$loc}',

\t\t// General options

\t\tplugins: {$plugins},
\t    toolbar: "undo redo | styleselect | forecolor backcolor bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",

\t\ttheme : "modern",

\t\t// Required to not mungle links.
\t\tconvert_urls: false,

\t\t// Requires to support <script/> tags.
\t\textended_valid_elements : "script[language|type|src]",

\t\t// Core Media Manager integration
\t\tfile_browser_callback: {$filebrowsercallback},

\t\t// Example content CSS (should be your site CSS)
\t\tcontent_css : "{$content}",

\t\t// Drop lists for link/image/media/template dialogs
\t\t//template_external_list_url : "lists/template_list.js",
\t\t//external_link_list_url : "lists/link_list.js",
\t\t//external_image_list_url : "lists/image_list.js",
\t\t//media_external_list_url : "lists/media_list.js",
\t\t link_list: {$links},

\t\t// Replace values for the template plugin
\t\t//template_replace_values : {
\t\t//\tusername : "******",
\t\t//\tstaffid : "991234"
\t\t//}

\t\t__dummy: null
\t};

\t\$(function(){
\t\t{$customIncludes}
\t\t\$('textarea.tinymce').tinymce(Core.TinyMCEDefaults);
\t});
</script>\t
EOD;
        // Add the necessary script
        $view->addScript('assets/js/tinymce/coreplus_functions.js', 'head');
        $view->addScript($script, 'foot');
        // IMPORTANT!  Tells the script that the include succeeded!
        return true;
    }
	private function _getFileConflictsComponent($arrayoffiles) {
		$man       = $this->getManifest();
		$basedir   = $this->getBaseDir();
		$component = ComponentHandler::GetComponent($man['Bundle-Name']);

		$changedfiles = $component->getChangedFiles();

		$ret = array();

		// I need to run through the array of files, because if the user changed
		// a file that's no longer under the package's control... I don't care.
		foreach ($arrayoffiles as $line) {
			// Now I can see if the file is in the array of changed files.
			if (in_array($line, $changedfiles)) $ret[] = $line;
		}

		return $ret;
	}
	/**
	 * Get all the loaded libraries and their versions.
	 *
	 * @return array
	 */
	public static function GetLoadedLibraries() {
		return ComponentHandler::Singleton()->_libraries;
	}