示例#1
0
 private static void UpdateLists(SPManager mgr)
 {
     CreateConfigApplications(mgr);
     CreateConfigItems(mgr);
     CreateLogTargets(mgr);
     CreateLogConfigs(mgr);
 }
示例#2
0
 private static void Update(SPWeb web, bool delete)
 {
     using (var mgr = new SPManager(web))
     {
         UpdateWeb(mgr, delete);
     }
 }
示例#3
0
        public void CreateWebAndCreateList()
        {
            //open the manager to spsite http://dev
            using (var mgr = new SPManager("http://dev"))
            {
                string subWebUrl = "awesomeweb";

                //make sure that the sub web does not exist
                if (mgr.Webs.Exists(subWebUrl))
                {
                    mgr.Webs.Delete(subWebUrl);
                }

                //create sub web http://dev/awesomeweb
                using (var awesome = mgr.Webs.Create("My Awesome Web", "", "awesomeweb", "STS#0"))
                {
                    //change the SPManager reference to the sub web
                    mgr.Change(awesome);

                    //create list in sub web
                    var list = mgr.Lists.Create("MyList", "", SPListTemplateType.GenericList);

                    //make changes to the list
                    list.OnQuickLaunch = true;
                    list.Update();
                }
            }
        }
示例#4
0
 public void CreateWeb()
 {
     using (var mgr = new SPManager("http://dev"))
     {
         mgr.Webs.Create("My Awesome Web", "", "awesomeweb", "STS#0");
     }
 }
示例#5
0
        private static SPList CreateList(SPManager mgr, string listName)
        {
            var list = mgr.Lists.Create(listName, "", SPListTemplateType.GenericList);

            list.OnQuickLaunch = true;
            list.Update();

            return(list);
        }
示例#6
0
        private static void CreateLogTargets(SPManager mgr)
        {
            var list = CreateList(mgr, Constants.SpongeListLogtargets);

            list.Fields.Add("Xml", SPFieldType.Note, true);
            SPView view = list.DefaultView;

            view.ViewFields.DeleteAll();
            view.ViewFields.Add("Title");
            view.ViewFields.Add("Xml");
            view.Update();
            list.Update();
        }
示例#7
0
        public void CreateListInWeb()
        {
            using (var mgr = new SPManager("http://dev"))
            {
                var listName = "MyList";

                //check if list exists, if it does, delete it
                if (mgr.Lists.Exists(listName))
                {
                    mgr.Lists.Delete(listName);
                }

                //recreate list and get the reference to the SPList object
                var list = mgr.Lists.Create(listName, "A Sample List", SPListTemplateType.GenericList);

                var exists = mgr.Lists.Exists(listName);
                Assert.AreEqual(true, exists);
            }
        }
示例#8
0
        private static void CreateWebParts(SPManager mgr)
        {
            var configItems = new XsltListViewWebPart {
                ListId = mgr.ParentWeb.Lists[Constants.SpongeListConfigitems].ID
            };
            var configApps = new XsltListViewWebPart {
                ListId = mgr.ParentWeb.Lists[Constants.SpongeListConfigapplications].ID
            };
            var logConfig = new XsltListViewWebPart {
                ListId = mgr.ParentWeb.Lists[Constants.SpongeListLogconfigs].ID
            };
            var logTargets = new XsltListViewWebPart {
                ListId = mgr.ParentWeb.Lists[Constants.SpongeListLogtargets].ID
            };

            AddWebPart(mgr.ParentWeb, "default.aspx", configApps, "left", 1);
            AddWebPart(mgr.ParentWeb, "default.aspx", configItems, "left", 2);
            AddWebPart(mgr.ParentWeb, "default.aspx", logConfig, "right", 1);
            AddWebPart(mgr.ParentWeb, "default.aspx", logTargets, "right", 2);
        }
示例#9
0
        private static void UpdateWeb(SPManager mgr, bool delete)
        {
            if (delete)
            {
                mgr.Webs.Delete(Constants.SpongeWebUrl);
            }
            else
            {
                if (!mgr.Webs.Exists(Constants.SpongeWebUrl))
                {
                    var sponge = mgr.Webs.Create(Constants.SpongeWebName, "",
                                                 Constants.SpongeWebUrl, Constants.SpongeWebTemplate);
                    sponge.SiteLogoUrl = Constants.SpongeWebImgurl;
                    sponge.Update();
                    mgr.ParentWeb = sponge;

                    UpdateLists(mgr);
                    CreateWebParts(mgr);
                    AddDefaultItems(mgr);
                }
            }
        }
示例#10
0
        private static void CreateConfigItems(SPManager mgr)
        {
            var list = CreateList(mgr, Constants.SpongeListConfigitems);

            var targetList = list.ParentWeb.Lists[Constants.SpongeListConfigapplications];

            list.Fields.Add("Value", SPFieldType.Note, true);

            list.Fields.AddLookup("Application", targetList.ID, false);
            var lkp = (SPFieldLookup)list.Fields["Application"];

            lkp.LookupField = targetList.Fields["Title"].InternalName;
            lkp.Required    = true;
            lkp.Update();

            if (list.ContentTypes.Count > 0)
            {
                var ct = list.ContentTypes[0];
                ct.FieldLinks.Reorder(new[] { "Application", "Key", "Value" });
            }

            var title = list.Fields["Title"];

            title.Title       = "Key";
            title.Description = "Do not use blanks or special characters here!";
            title.Update();

            var          view   = list.DefaultView;
            const string @group = @" <GroupBy Collapse=""TRUE"" GroupLimit=""100""> <FieldRef Name=""Application"" Ascending=""True""/> </GroupBy>";

            view.Query = group;

            view.ViewFields.DeleteAll();
            view.ViewFields.Add("Application");
            view.ViewFields.Add("Key");
            view.ViewFields.Add("Value");
            view.Update();
        }
示例#11
0
        public ActionResult Publish()
        {
            if (Request.QueryString["SPHostUrl"] != null && Session["SPUrl"] == null)
            {
                Session["SPUrl"] = Request.Url.ToString();
            }

            if (Request.QueryString["publish"] == "1")
            {
                SocialMediaManager.loginToFacebook();
            }
            if (Request.QueryString["publish"] == "2")
            {
                Session["PostLinkedin"] = 1;
                string url = Session["SPUrl"].ToString();
                Response.Redirect(url);
            }

            if (Session["AccessToken"] != null)
            {
                SPManager.CurrentHttpContext = HttpContext;
                SPManager.ToSocialMedia("Facebook");
                Session["Facebook"]    = "√";
                Session["AccessToken"] = null;
            }

            if (Session["PostLinkedin"] != null)
            {
                SPManager.CurrentHttpContext = HttpContext;
                SPManager.ToSocialMedia("Linkedin");
                Session["LinkedIn"] = "√";
            }
            ViewBag.Facebook = Session["Facebook"];
            ViewBag.LinkedIn = Session["LinkedIn"];

            return(View());
        }
示例#12
0
        private static void CreateLogConfigs(SPManager mgr)
        {
            var list = CreateList(mgr, Constants.SpongeListLogconfigs);

            var targetList = list.ParentWeb.Lists[Constants.SpongeListLogtargets];

            list.Fields.AddLookup("Target", targetList.ID, false);
            var lkp = (SPFieldLookup)list.Fields["Target"];

            lkp.LookupField = targetList.Fields["Title"].InternalName;
            lkp.Required    = true;
            lkp.Update();

            SPView view = list.DefaultView;

            //var group = @" <GroupBy Collapse=""TRUE"" GroupLimit=""100""> <FieldRef Name=""Target"" Ascending=""True""/> </GroupBy>";
            //view.Query = group;

            view.ViewFields.DeleteAll();
            view.ViewFields.Add("Title");
            view.ViewFields.Add("Target");
            view.Update();
            list.Update();
        }
示例#13
0
 private static void CreateConfigApplications(SPManager mgr)
 {
     CreateList(mgr, Constants.SpongeListConfigapplications);
 }
示例#14
0
        private static void AddDefaultItems(SPManager mgr)
        {
            var logTarget = mgr.ParentWeb.Lists[Constants.SpongeListLogtargets];

            #region file target
            var newLogApp = logTarget.AddItem();
            newLogApp["Title"] = "Sponge File Logging";
            newLogApp["Xml"]   = @"<?xml version='1.0' ?>
<nlog xmlns='http://www.nlog-project.org/schemas/NLog.xsd'
      xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
  <targets>
    <target name='file' xsi:type='File'
        layout='${longdate} ${logger} ${message}'
        fileName='${basedir}/logs/logfile.txt'
        keepFileOpen='false'
        encoding='iso-8859-2' />
  </targets>
  <rules>
    <logger name='*' minlevel='Debug' writeTo='file' />
  </rules>
</nlog>";
            newLogApp.SystemUpdate();

            #endregion

            #region uls target
            var uls = logTarget.AddItem();
            uls["Title"] = "Sponge ULS Logging";
            uls["Xml"]   = @"<nlog xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
  <extensions>
    <add assembly='Sponge.Logging'/>
  </extensions>
  <targets>
    <target name='UlsLogger' type='UlsTarget'/>
  </targets>
  <rules>
    <logger name='*' minlevel='Debug' writeTo='UlsLogger' />
  </rules>
</nlog>";

            uls.SystemUpdate();

            #endregion

            #region ws target

//            var ws = logTarget.AddItem();
//            ws["Title"] = "Sponge Logging Web Service";
//            ws["Xml"] = @"<?xml version='1.0'?>
//<nlog autoReload='true' xmlns='http://www.nlog-project.org/schemas/NLog.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
//    <targets>
//        <target name='ws' xsi:type='WebService' namespace='http://Sponge.WebService.LoggingService' protocol='Soap11' methodName='Log' url='http://demo/_layouts/Sponge/LoggingService.asmx'>
//            <parameter name='n3' type='System.String' layout='${level}' />
//            <parameter name='n2' type='System.String' layout='${message}' />
//        </target>
//    </targets>
//    <rules>
//        <logger name='*' writeTo='ws' />
//    </rules>
//</nlog>";
//            ws.SystemUpdate();

            #endregion

            #region db target

            var db = logTarget.AddItem();
            db["Title"] = "Sponge Database Logging";
            db["Xml"]   = @"<?xml version='1.0' encoding='utf-8' ?>
<nlog xmlns='http://www.nlog-project.org/schemas/NLog.xsd'
      xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' internalLogFile='c:\Nlog.log'>
  <targets>
    <target name='database' type='Database'>
      <connectionString>
        Data Source=demo;Initial Catalog=Sponge;User ID=spongeloguser;Password=pass@word1;
      </connectionString>
      <commandText>
        insert into Logs(log_date,log_level,log_logger, log_version, log_message,log_machine_name, log_user_name, log_call_site, log_thread, log_exception, log_stacktrace) values(@time_stamp, @level, @logger, @version, @message,@machinename, @user_name, @call_site, @threadid, @log_exception, @stacktrace);
      </commandText>
      <parameter name='@time_stamp' layout='${longdate}'/>
      <parameter name='@level' layout='${level}'/>
      <parameter name='@logger' layout='${logger}'/>
      <parameter name='@version' layout='${assembly-version}' />
      <parameter name='@message' layout='${message}'/>
      <parameter name='@machinename' layout='${machinename}'/>
      <parameter name='@user_name' layout='${windows-identity:domain=true}'/>
      <parameter name='@call_site' layout='${callsite:filename=true}'/>
      <parameter name='@threadid' layout='${threadid}'/>
      <parameter name='@log_exception' layout='${exception}'/>
      <parameter name='@stacktrace' layout='${stacktrace}'/>
    </target>
  </targets>
  <rules>
    <logger name='*' minlevel='Debug' appendTo='database'/>
  </rules>
</nlog>";
            db.SystemUpdate();
            #endregion

            var logItems = mgr.ParentWeb.Lists[Constants.SpongeListLogconfigs];

            var internalWs = logItems.AddItem();
            internalWs["Title"]  = Constants.SpongeLoggerWsname;
            internalWs["Target"] = uls.ID;
            internalWs.SystemUpdate();
        }