public WebModuleInfo CreateModule(WebpageInfo page)
        {
            WebModuleType moduleType = MasterDetailItem.ModuleType;

            return(WebModule.CreateModule(
                       MasterDetailItem.Chop(page.Title, 30, false),
                       moduleType.WebApplicationType.Name,
                       moduleType.Name,
                       page.Id,
                       "Body",
                       -1));
        }
        public void LoadContentItem(int moduleId)
        {
            this.ModuleId = moduleId;
            MasterDetailItem itemRes = GetCurrentMasterDetailItem();

            if (itemRes.IsNew)
            {
                calPostDate.Date = DateTime.Today;
                tbPostTime.Text  = DateTime.Now.ToShortTimeString();
            }
            else
            {
                Load_MasterDetail_ItemResource_AndAssociatedObjects(itemRes);
            }
        }
        public MasterDetailItem GetCurrentMasterDetailItem()
        {
            //get associated resource for the current culture.
            MasterDetailItem itemRes = MasterDetailItem.GetResource(this.ModuleId);

            if (null == itemRes)
            { //create new
                itemRes          = new MasterDetailItem();
                itemRes.ModuleId = this.ModuleId;
                itemRes.Culture  = WM.CultureCode.Current;
            }

            //if (null == itemRes)
            //    throw new ArgumentException(string.Format("Invalid MasterDetail item resource (it may have been deleted). editModuleId: {0}.", this.EditModuleId));

            //check permissions...
            //if(itemRes.UserId != (Guid)_user.ProviderUserKey) throw new System.Security.SecurityException("The current user is not authorized to view that item.");

            return(itemRes);
        }
        public void SaveMasterDetailItem()
        {
            MasterDetailItem itemRes = GetCurrentMasterDetailItem();

            itemRes.Culture          = WM.CultureCode.Current;
            itemRes.StatusId         = (int)MasterDetailStatus.Pending;
            itemRes.ShortDescription = tbShortDesc.Text.Trim();
            itemRes.LongDescription  = tbLongDesc.Text.Trim();

            if (string.IsNullOrEmpty(tbTags.Text.Trim()))
            {
                itemRes.Tags = "General";
            }
            else
            {
                // Get tags and strip out any extra spaces
                itemRes.Tags = tbTags.Text.Trim().Replace(" ,", ",").Replace(", ", ",");
            }

            itemRes.ImagePath  = ImagePathCtl.ImagePath;
            itemRes.IsFeatured = cbIsFeatured.Checked;
            itemRes.Save();
        }
        public void Load_MasterDetail_ItemResource_AndAssociatedObjects(MasterDetailItem itemRes)
        {
            WebModuleInfo module = WebModule.GetModule(itemRes.ModuleId);
            WebpageInfo   page   = Webpage.GetWebpage(module.Webpage.InstanceId);

            tbTitle.Text              = page.Title; //WebpageInfo respects current culture.
            tbMetaKeywords.Text       = page.MetaKeywords;
            tbMetaDescription.Text    = page.MetaDescription;
            tbPageNavigationText.Text = page.Text;

            tbShortDesc.Text = itemRes.ShortDescription;
            tbLongDesc.Text  = itemRes.LongDescription;
            tbTags.Text      = itemRes.Tags;

            ImagePathCtl.ImagePath = itemRes.ImagePath;
            cbIsVisible.Checked    = page.Visible;
            cbIsFeatured.Checked   = itemRes.IsFeatured;

            if (page.PostDate.HasValue)
            {
                calPostDate.Date = page.PostDate.Value.Date;

                if (page.PostDate.Value.TimeOfDay.TotalSeconds > 0.001)
                {
                    tbPostTime.Text = page.PostDate.Value.ToShortTimeString();
                }
                else
                {
                    tbPostTime.Text = string.Empty;
                }
            }
            if (page.RemoveDate.HasValue)
            {
                calRemoveDate.Date = page.RemoveDate.Value;
            }
        }
        protected override void PopulateRss(string channelName, string userName)
        {
            // Get the data
            string qModuleId = HttpContext.Current.Request["moduleId"];
            int    moduleId;

            if (!int.TryParse(qModuleId, out moduleId) || moduleId <= 0)
            {
                throw new ArgumentException("Invalid or missing module id: " + moduleId);
            }

            WebModuleInfo MasterDetailListModule = WebModule.GetModule(moduleId);

            if (MasterDetailListModule.WebModuleType != MasterDetailList.ModuleType)
            {
                throw new ArgumentException(string.Format("Invalid module type '{0}'. Module type must be '{1}'", MasterDetailListModule.ModuleTypeName, MasterDetailList.ModuleType.Name));
            }
            WebpageInfo MasterDetailListPage = MasterDetailListModule.Webpage;

            if (null == MasterDetailListModule)
            {
                throw new ArgumentException("Invalid module id: " + moduleId);
            }
            List <WebModuleInfo> MasterDetailItemModules = MasterDetailList.GetMasterDetailChildren(moduleId, true, true);


            // Build the feed
            Rss.Channel             = new MasterDetailChannel();
            Rss.Version             = "2.0";
            Rss.Channel.Title       = MasterDetailListPage.Title;
            Rss.Channel.Description = MasterDetailListPage.MetaDescription;
            Rss.Channel.Link        = MasterDetailListPage.Path;

            Rss.Channel.Items = new List <MasterDetailRssItem>();
            if (!string.IsNullOrEmpty(channelName))
            {
                Rss.Channel.Title += " '" + channelName + "'";
            }

            if (!string.IsNullOrEmpty(userName))
            {
                Rss.Channel.Title += " (generated for " + userName + ")";
            }

            int maxItemsPerPage = 25;
            int i = 0;

            foreach (WebModuleInfo m in MasterDetailItemModules)
            {
                WebpageInfo      p       = m.Webpage;
                MasterDetailItem itemRes = MasterDetailItem.GetSafeResource(m.Id);
                //string postDateString = "";
                //if (p.PostDate.HasValue)
                //{
                //this is a hack
                //	postDateString = p.PostDate.Value.GetDateTimeFormats(
                //		System.Globalization.CultureInfo.GetCultureInfo("en-US"))[103];
                //}

                MasterDetailRssItem item = new MasterDetailRssItem();
                item.Title       = p.Title;
                item.Description = itemRes.GetSummary(p);
                if (p.PostDate.HasValue)
                {
                    item.PubDate = RssXmlHelper.ToRfc822(p.PostDate.Value);
                }
                item.Link = VirtualPathUtility.ToAbsolute(p.Path);

                Rss.Channel.Items.Add(item);

                i++;
                if (i == maxItemsPerPage)
                {
                    break;
                }
            }
        }