/// <summary>
        /// This method updates an existing content item
        /// </summary>
        /// <param name="tabId"></param>
        /// <param name="moduleId"></param>
        /// <param name="contentItemId"></param>
        /// <param name="bookmark"></param>
        /// <remarks>This method will only be present in DNN 6.2.3 and newer</remarks>
        public int UpdateContentItem(int tabId, int moduleId, int contentItemId, HangoutInfo hangout)
        {
            // get a reference to the original content item
            var objContent = Util.GetContentController().GetContentItem(contentItemId);

            // if the content item doesn't exist, send back to the calling method
            // NOTE:  Probably should just throw an exception here
            if (objContent == null)
            {
                return(Null.NullInteger);
            }

            // update the relevant properties
            objContent.Content = JsonExtensionsWeb.ToJsonString(hangout);

            // these are just for data posterity and probably don't need to be done
            objContent.ModuleID = moduleId;
            objContent.TabID    = tabId;

            // data integrity check for legacy data (just in case stuff)
            if (!Regex.IsMatch(objContent.ContentKey, CONTENT_KEY_FORMAT_PATTERN, RegexOptions.IgnoreCase))
            {
                objContent.ContentKey = string.Format(CONTENT_KEY_FORMAT, objContent.ContentItemId);
            }

            // execute the update on the database
            Util.GetContentController().UpdateContentItem(objContent);

            return(contentItemId);
        }
        /// <summary>
        /// This method creates new DNN Hangout entries in the content item data store
        /// </summary>
        /// <param name="tabId"></param>
        /// <param name="moduleId"></param>
        /// <param name="bookmark"></param>
        /// <returns></returns>
        public int CreateContentItem(int tabId, int moduleId, HangoutInfo hangout)
        {
            // create a new content item
            var objContent = new ContentItem
            {
                Content       = JsonExtensionsWeb.ToJsonString(hangout),
                ContentTypeId = DNNHangoutContentTypeId,
                Indexed       = false,
                ModuleID      = moduleId,
                TabID         = tabId
            };

            // save the content item to the database
            objContent.ContentItemId = Util.GetContentController().AddContentItem(objContent);

            // update the objects with the new content item id retrieved in the line above
            hangout.ContentItemId = objContent.ContentItemId;

            // update the content item properties with proper content
            objContent.Content    = JsonExtensionsWeb.ToJsonString(hangout);
            objContent.ContentKey = string.Format(CONTENT_KEY_FORMAT, hangout.ContentItemId);

            // update the content item again since we now have a contentItemId for the properties
            Util.GetContentController().UpdateContentItem(objContent);

            // return the content item id
            return(objContent.ContentItemId);
        }
Beispiel #3
0
        private void SaveHangout()
        {
            var         ctlHangout = new DNNHangoutController();
            var         sec        = new PortalSecurity();
            HangoutInfo hangout    = null;

            // get an instance of the hangout (if necessary)
            if (Hangout == null)
            {
                hangout = new HangoutInfo();
            }
            else
            {
                hangout = Hangout;
            }

            // populate the hangout with the user field values
            hangout.Description    = sec.InputFilter(txtDescription.Text.Trim(), PortalSecurity.FilterFlag.NoScripting);
            hangout.Duration       = int.Parse(sec.InputFilter(txtDuration.Text.Trim(), PortalSecurity.FilterFlag.NoMarkup), NumberStyles.Integer);
            hangout.HangoutAddress = sec.InputFilter(txtHangoutAddress.Text.Trim(), PortalSecurity.FilterFlag.NoScripting);
            hangout.StartDate      = txtStartDate.SelectedDate != null ? txtStartDate.SelectedDate.Value : DateTime.Now;
            hangout.Title          = sec.InputFilter(txtTitle.Text.Trim(), PortalSecurity.FilterFlag.NoMarkup);

            // determine the units to use
            if (ddlDurationUnits.SelectedIndex == 0)
            {
                hangout.DurationUnits = DurationType.Minutes;
            }
            else
            {
                hangout.DurationUnits = DurationType.Hours;
            }

            var contentItemId = Null.NullInteger;

            // update or create the hangout
            if (HangoutId > Null.NullInteger)
            {
                // update hangout
                contentItemId = ctlHangout.UpdateContentItem(TabId, ModuleId, hangout.ContentItemId, hangout);
            }
            else
            {
                // new hangout
                contentItemId = ctlHangout.CreateContentItem(TabId, ModuleId, hangout);
            }

            if (contentItemId > Null.NullInteger)
            {
                // update the module settings to set the default Google Hangout to show on the first page load
                var ctlModule = new ModuleController();

                ctlModule.UpdateTabModuleSetting(TabModuleId, DNNHangoutController.SETTINGS_HANGOUT_ID, contentItemId.ToString());

                ModuleController.SynchronizeModule(ModuleId);
            }
        }
        /// <summary>
        /// Parse the content item content to populate a DNN Hangout object
        /// </summary>
        /// <param name="contentItem"></param>
        /// <returns></returns>
        private HangoutInfo ParseContentItemForHangout(ContentItem contentItem)
        {
            var hangout = new HangoutInfo();

            if (contentItem != null && !string.IsNullOrEmpty(contentItem.Content))
            {
                hangout = contentItem.Content.FromJson <HangoutInfo>();
            }

            return(hangout);
        }
        public string ReplaceTokens(string Template, HangoutInfo Hangout, PortalSettings Settings, int ModuleId, string LocalResourceFile)
        {
            var cachedTemplate = DataCache.GetCache(string.Format(TEMPLATE_CACHE_KEY_FORMAT, Hangout.ContentItemId));

            // check for a cached template first
            if (cachedTemplate != null)
            {
                return(cachedTemplate.ToString());
            }

            /*
             * workaround for the JSON deserializer bug in DNN's NewtonSoft
             */
            Hangout.StartDate = Hangout.StartDate.AddHours(-7);

            // begin replacing tokens
            Template = Regex.Replace(Template, TOKEN_TITLE, Hangout.Title);
            Template = Regex.Replace(Template, TOKEN_ADDRESS, Hangout.HangoutAddress);
            Template = Regex.Replace(Template, TOKEN_DESCRIPTION, HttpUtility.HtmlDecode(Hangout.Description));
            Template = Regex.Replace(Template, TOKEN_DURATION, Hangout.Duration.ToString());
            Template = Regex.Replace(Template, TOKEN_STARTDATE, Hangout.StartDate.ToString("MM/dd/yyyy hh:mm tt")); // todo: make this a setting

            if (Hangout.DurationUnits == DurationType.Minutes)
            {
                Template = Regex.Replace(Template, TOKEN_DURATIONUNITS, Localization.GetString("Minutes.Text", LocalResourceFile));
            }
            else
            {
                if (Hangout.Duration > 1)
                {
                    Template = Regex.Replace(Template, TOKEN_DURATIONUNITS, Localization.GetString("Hours.Text", LocalResourceFile));
                }
                else
                {
                    Template = Regex.Replace(Template, TOKEN_DURATIONUNITS, Localization.GetString("Hour.Text", LocalResourceFile));
                }
            }

            var tr = new TokenReplace();

            tr.AccessingUser  = UserController.GetCurrentUserInfo();
            tr.DebugMessages  = Settings.UserMode != PortalSettings.Mode.View;
            tr.ModuleId       = ModuleId;
            tr.PortalSettings = Settings;

            // replace DNN tokens
            var template = tr.ReplaceEnvironmentTokens(Template);

            // cache the template
            DataCache.SetCache(string.Format(TEMPLATE_CACHE_KEY_FORMAT, Hangout.ContentItemId), template, DateTime.Now.AddMinutes(10));

            return(template);
        }
        public string ReplaceTokens(string Template, HangoutInfo Hangout, PortalSettings Settings, int ModuleId, string LocalResourceFile)
        {
            var cachedTemplate = DataCache.GetCache(string.Format(TEMPLATE_CACHE_KEY_FORMAT, Hangout.ContentItemId));

            // check for a cached template first
            if (cachedTemplate != null)
            {
                return(cachedTemplate.ToString());
            }

            // begin replacing tokens
            Template = Regex.Replace(Template, TOKEN_TITLE, Hangout.Title);
            Template = Regex.Replace(Template, TOKEN_ADDRESS, Hangout.HangoutAddress);
            Template = Regex.Replace(Template, TOKEN_DESCRIPTION, HttpUtility.HtmlDecode(Hangout.Description));
            Template = Regex.Replace(Template, TOKEN_DURATION, Hangout.Duration.ToString());
            Template = Regex.Replace(Template, TOKEN_STARTDATE, Hangout.StartDate.ToLocalTime().ToString());

            if (Hangout.DurationUnits == DurationType.Minutes)
            {
                Template = Regex.Replace(Template, TOKEN_DURATIONUNITS, Localization.GetString("Minutes.Text", LocalResourceFile));
            }
            else
            {
                Template = Regex.Replace(Template, TOKEN_DURATIONUNITS, Hangout.Duration > 1 ? Localization.GetString("Hours.Text", LocalResourceFile) : Localization.GetString("Hour.Text", LocalResourceFile));
            }

            var tr = new TokenReplace
            {
                AccessingUser  = UserController.GetCurrentUserInfo(),
                DebugMessages  = Settings.UserMode != PortalSettings.Mode.View,
                ModuleId       = ModuleId,
                PortalSettings = Settings
            };

            // replace DNN tokens
            var template = tr.ReplaceEnvironmentTokens(Template);

            // cache the template
            DataCache.SetCache(string.Format(TEMPLATE_CACHE_KEY_FORMAT, Hangout.ContentItemId), template, DateTime.Now.AddMinutes(10));

            return(template);
        }