コード例 #1
0
        public Plugin InstallPlugin(PluginInstallInput pluginInstallInput, bool?overrideEnabled)
        {
            PluginContainer pluginContainer = null;

            if (!string.IsNullOrEmpty(pluginInstallInput.VirtualPath))
            {
                pluginContainer = pluginEngine.GetPlugins(p => (p.Tag == null || !(p.Tag is Plugin)) && p.CompilationAssembly != null && string.Compare(p.VirtualPath, pluginInstallInput.VirtualPath, true) == 0).FirstOrDefault();
            }

            if (pluginContainer == null)
            {
                throw new InvalidOperationException("Could not find plugin to install");
            }

            ValidationStateDictionary validationState = ValidatePlugin(pluginContainer);
            Plugin plugin = repository.Save(new Plugin(context.Site.ID, pluginInstallInput.VirtualPath, validationState.IsValid && overrideEnabled.HasValue ? overrideEnabled.Value : validationState.IsValid, pluginContainer.GetPropertiesUsingDefaultValues()));

            plugin.Container        = pluginContainer;
            pluginContainer.Tag     = plugin;
            pluginContainer.IsValid = validationState.IsValid;

            pluginTemplateRegistry.Reload(pluginEngine);
            context.Routes.Reload(modules, this, pluginEngine);
            pluginStyleRegistry.Reload(pluginEngine);
            pluginScriptRegistry.Reload(pluginEngine);

            return(plugin);
        }
コード例 #2
0
        public ActionResult Install(PluginInstallInput pluginInstallInput, DialogSelection dialogSelection)
        {
            if (dialogSelection != null && dialogSelection.Equals(DialogButton.Cancel))
            {
                return(new DialogSelectionResult(dialogSelection.ReturnUrl, true));
            }

            PluginContainer pluginContainer = pluginEngine.LoadPlugin(pluginInstallInput.VirtualPath);

            if (pluginContainer == null)
            {
                return(null);
            }

            ValidationStateDictionary validationState = pluginService.ValidatePlugin(pluginContainer);

            if (dialogSelection == null)
            {
                if (validationState.IsValid)
                {
                    return(this.Dialog("What would you like to do next?", DialogFormat.Question, new DialogButton("no", "Enable this plugin", true), new DialogButton("yes", "Edit plugin settings", true), new DialogButton("cancel", "Cancel install", false)));
                }

                return(this.Dialog("This plugin requires you to fill in some required settings before it can be enabled. Would you like to do that now?", DialogFormat.Question, DialogButton.Yes, new DialogButton("no", "No", true), DialogButton.Cancel));
            }

            bool?overrideEnabled = validationState.IsValid
                ? (bool?)(dialogSelection.Equals(DialogButton.No) /* to editing settings */
                    ? true
                    : false)
                : null;

            Plugin plugin = pluginService.InstallPlugin(pluginInstallInput, overrideEnabled);

            if (dialogSelection.Equals(DialogButton.Yes)) /* to editing settings */
            {
                return new DialogSelectionResult(Url.PluginEdit(plugin))
                       {
                           IsClientRedirect = true
                       }
            }
            ;

            return(Redirect(dialogSelection.ReturnUrl));
        }