public ActionResult NewWorkspace(AdminSettingsWorkspaceModel m)
    {
      try
      {
        if (string.IsNullOrEmpty(m.Name)) throw new Exception("Name is required.");
        if (m.Name.ToLowerInvariant() != m.Name.CleanSlug().ToLowerInvariant()) throw new Exception("Name has invalid characters.");
        string workspace = m.Name.CleanSlug().ToLowerInvariant();
        AppWorkspace w = new AppWorkspace() { Name = workspace };
        if (string.IsNullOrEmpty(m.Title)) throw new Exception("Title is required.");
        w.Title = new AtomTitle() { Text = m.Title };
        w.Subtitle = string.IsNullOrEmpty(m.Subtitle) ? null : new AtomSubtitle() { Text = m.Subtitle };
        
        AppService.AddWorkspace(w);
        AtomPubService.UpdateService(AppService);
        TempData["new"] = "New Workspace";

        return RedirectToAction("Settings", new { workspace = workspace });
      }
      catch (Exception ex)
      {
        LogService.Error(ex);
        m.Errors.Add(ex.Message);
      }
      return View("AdminSettingsWorkspace", "Admin", m);
    }
 public ViewResult Settings(string workspace, string collection)
 {
   string view = "AdminSettings";
   AdminModel m = null;
   if (Scope.IsEntireSite)
   {
     var esm = TempData["model"] as AdminSettingsEntireSiteModel;
     if (esm == null)
     {
       esm = new AdminSettingsEntireSiteModel();
       esm.SiteAddress = AppService.Base;
       esm.DefaultSubdomain = AppService.DefaultSubdomain;
       esm.ServiceType = AppService.ServiceType.ToString();
       esm.Secure = AppService.Secure;
     }
     view = "AdminSettingsEntireSite";
     m = esm;
   }
   else if (Scope.IsWorkspace)
   {
     var wm = TempData["model"] as AdminSettingsWorkspaceModel;
     if (wm == null)
     {
       wm = new AdminSettingsWorkspaceModel();
       //wm.Workspace = workspace;
       wm.Title = Workspace.Title.Text;
       wm.Subtitle = Workspace.Subtitle != null ? Workspace.Subtitle.Text : null;
       wm.Name = Workspace.Name;
     }
     view = "AdminSettingsWorkspace";
     m = wm;
   }
   else
   {
     var cm = TempData["model"] as AdminSettingsCollectionModel;
     if (cm == null)
     {
       cm = new AdminSettingsCollectionModel();
       cm.CollectionId = Collection.Id;
       cm.Title = Collection.Title.Text;
       cm.Subtitle = Collection.Subtitle != null ? Collection.Subtitle.Text : null;
       cm.Owner = Collection.Id.Owner;
       cm.Name = Collection.Id.Collection;
       cm.Dated = Collection.Dated;
       cm.Visible = Collection.Visible;
       cm.AnnotationsOn = Collection.AnnotationsOn;
       cm.SyndicationOn = Collection.SyndicationOn;
     }
     view = "AdminSettingsCollection";
     m = cm;
   }
   if (m == null) m = new AdminModel();
   if (TempData["new"] != null) m.Notifications.Add((string)TempData["new"], "was created successfully! Changes may take some time before they appear.");
   else if (TempData["saved"] != null) m.Notifications.Add("Saved", "settings successfully! Changes may take some time before they appear.");
   return View(view, "Admin", m);
 }
 public ViewResult NewWorkspace()
 {
   var m = new AdminSettingsWorkspaceModel();
   return View("AdminSettingsWorkspace", "Admin", m);
 }
    public ActionResult UpdateWorkspace(string workspace, AdminSettingsWorkspaceModel m)
    {
      try
      {
        AppWorkspace w = AppService.GetWorkspace(workspace);
        if (string.IsNullOrEmpty(m.Title)) throw new Exception("Title is required.");
        w.Title = new AtomTitle() { Text = m.Title };
        w.Subtitle = string.IsNullOrEmpty(m.Subtitle) ? null : new AtomSubtitle() { Text = m.Subtitle };

        AtomPubService.UpdateService(AppService);
        TempData["saved"] = true;

        return RedirectToAction("Settings", new { workspace = workspace });
      }
      catch (Exception ex)
      {
        LogService.Error(ex);
        m.Errors.Add(ex.Message);
      }
      return View("AdminSettingsWorkspace", "Admin", m);
    }