/*
Kooboo is a content management system based on ASP.NET MVC framework. Copyright 2009 Yardi Technology Limited.
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.kooboo.com/gpl3/.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using Everest.Library.Mvc;
using Everest.Library.Extjs;
using Everest.Library.Extjs.Tree;
using Everest.Library.Json;
using Everest.Library.ExtensionMethod;
using Everest.CmsServices.Models;
using Everest.CmsServices.Services;
namespace Everest.CmsServices.Controllers{
public class PagePluginController : ExtControllerBase
{
[PermissionFilter(Permission = FolderType.PagePlugin)]
public ActionResult GetFiles()
{
string applicationName = Request.Form["application"];
var folderUUID = new Guid(Request.Form["folderUUID"]);
List<FolderFile> folderFiles = AssemblyFileManager.GetAssemblyFiles(applicationName);
ExtJsonReaderObject jsonReader = new ExtJsonReaderObject(folderFiles, folderFiles.Count);
return Json(jsonReader);
}
[PermissionFilter(Permission = FolderType.PagePlugin)]
public ActionResult Upload()
{
JsonResultData resultData = new JsonResultData();
AssemblyFileManager.Upload(Request.Form["application"], Request.Files[0]);
return Json(resultData);
}
[PermissionFilter(Permission = FolderType.PagePlugin)]
public ActionResult Delete()
{
string path = Request.Form["FilePath"];
FileExtensions.DeleteFile(CmsGlobal.ToAbsolutePath(path));
return Json(new JsonResultData());
}
[PermissionFilter(Permission = FolderType.PagePlugin)]
public ActionResult GetPagePluginTypes()
{
string path = Request.Form["FilePath"];
var moduleTypes = AssemblyFileManager.GetPagePluginTypes(path);
ExtJsonReaderObject jsonReader = new ExtJsonReaderObject(moduleTypes, moduleTypes.Count());
return Json(jsonReader);
}
#region Combobox
public ActionResult GetPluginTypesToCombobox(string application)
{
var moduleTypes = AssemblyFileManager.GetPluginTypes(application);
var items = moduleTypes.ToComboboxItems(m => m.TypeName, m => m.TypeName);
return Json(new ExtJsonReaderObject(items, items.Count));
}
#endregion
#region Relations
public ActionResult UsedBy(string typeName)
{
IEverestCmsDataContext dataContext = EverestCmsEntities.GetDataContext();
IList<Dictionary<string, object>> treeNodes = new List<Dictionary<string, object>>();
#region Used in Pages
var pageNodes = new TreeNode();
treeNodes.Add(pageNodes.Attributes);
pageNodes.Text = Resources.TreeNode_Page;
pageNodes.IconCls = FolderType.Page.ToString();
pageNodes.Leaf = false;
pageNodes.Expanded = true;
var pages = dataContext.QueryPagesByPlugin(typeName)
.Select(p => new { p.UUID, p.aspnet_Applications.ApplicationName, p.PageName });
pageNodes.children = new List<IDictionary<string, object>>();
foreach (var page in pages)
{
var pageNode = new TreeNode();
pageNodes.children.Add(pageNode.Attributes);
pageNode.Text = new UniqueName(page.ApplicationName, page.PageName).ToString();
pageNode.Attributes.Add("uuid", page.UUID);
pageNode.IconCls = "PageNode";
pageNode.Attributes.Add("dataUrl", "Kooboo_Page/UsedBy");
}
#endregion
#region Used in ContentTemplate
var contentTemplateNodes = new TreeNode();
treeNodes.Add(contentTemplateNodes.Attributes);
contentTemplateNodes.Text = Resources.TreeNode_ContentTemplate;
contentTemplateNodes.IconCls = FolderType.ContentTemplate.ToString();
contentTemplateNodes.Leaf = false;
contentTemplateNodes.Expanded = true;
var contentTemplates = dataContext.QueryContentTemplateByPlugin(typeName)
.Select(p => new { p.UUID, p.aspnet_Applications.ApplicationName, p.Name });
contentTemplateNodes.children = new List<IDictionary<string, object>>();
foreach (var contentTemplate in contentTemplates)
{
var contentTemplateNode = new TreeNode();
contentTemplateNodes.children.Add(contentTemplateNode.Attributes);
contentTemplateNode.Text = new UniqueName(contentTemplate.ApplicationName, contentTemplate.Name).ToString();
contentTemplateNode.Attributes.Add("uuid", contentTemplate.UUID);
contentTemplateNode.IconCls = FolderType.ContentTemplate.ToString();
contentTemplateNode.Attributes.Add("dataUrl", "contentTemplate/UsedBy");
}
#endregion
return Json(treeNodes);
}
#endregion
}
}
|