();
+ int i = 0;
+ while (title.IndexOf("http://t.co") > -1 && i < 100)
+ {
+ i++;
+ int pos = title.IndexOf("http://t.co");
+ string url = title.Substring(pos);
+ int posEnde = url.IndexOf(" ");
if (posEnde > -1)
- {
- tweet.Link = rest.Substring(0, posEnde - 1);
- rest = rest.Substring(posEnde);
- tweet.News = start + " " + tweet.Link + " " + rest;
- tweet.Title = start + " " + tweet.Link + rest;
- }
- else
- {
- tweet.Link = rest;
- tweet.News = start + " " + tweet.Link + " ";
- tweet.Title = start + " " + tweet.Link;
- }
+ url = url.Substring(0, posEnde).Trim();
+ urls.Add(url);
+ title = title.Replace(url, "");
}
- pos = tweet.Title.IndexOf("https://t.co");
- if (pos > -1)
- {
- string start = tweet.Title.Substring(0, pos - 1);
- string rest = tweet.Title.Substring(pos);
- int posEnde = rest.IndexOf(" ");
+ i = 0;
+ while (title.IndexOf("https://t.co") > -1 && i < 100)
+ {
+ i++;
+ int pos = title.IndexOf("https://t.co");
+ string url = title.Substring(pos);
+ int posEnde = url.IndexOf(" ");
if (posEnde > -1)
- {
- tweet.Link = rest.Substring(0, posEnde - 1);
- rest = rest.Substring(posEnde);
- tweet.News = start + " " + tweet.Link + " " + rest;
- tweet.Title = start + " " + tweet.Link + rest;
- }
- else
- {
- tweet.Link = rest;
- tweet.News = start + " " + tweet.Link + " ";
- tweet.Title = start + " " + tweet.Link;
- }
+ url = url.Substring(0, posEnde).Trim();
+ urls.Add(url);
+ title = title.Replace(url, "");
}
+ if (urls.Any())
+ tweet.Link = urls[0];
+
+ foreach (string url in urls)
+ {
+ if (!url.EndsWith("…"))
+ tweet.News = tweet.News.Replace(url, "" + url + "");
+ }
+
news.Add(tweet);
}
return (from l in news where l.News != String.Empty orderby l.Pubdate descending select l).ToList();
diff --git a/Installation/ReleaseNotes/Release.01.01.05.txt b/Installation/ReleaseNotes/Release.01.01.05.txt
new file mode 100644
index 0000000..8d5d1c1
--- /dev/null
+++ b/Installation/ReleaseNotes/Release.01.01.05.txt
@@ -0,0 +1,11 @@
+Release Notes bitboxx bbnews 01.01.05
+bbnews 01.01.05 will work for any DNN version 6.1.0 and up.
+
BUG FIXES
+
+ - Fixed a bug replacing only first url in twitter feed with a link in the news
+ - Fixed a bug attaching complete html code after rss code
+ - Fixed a bug when fedditem pubdate is empty or not present
+
+ENHANCEMENTS
+
\ No newline at end of file
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index a753892..165d5e4 100644
--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -40,6 +40,6 @@
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.1.4.0")]
-[assembly: AssemblyFileVersion("1.1.4.0")]
+[assembly: AssemblyVersion("1.1.5.0")]
+[assembly: AssemblyFileVersion("1.1.5.0")]
diff --git a/View.ascx.cs b/View.ascx.cs
index 826a771..af0fc96 100644
--- a/View.ascx.cs
+++ b/View.ascx.cs
@@ -27,6 +27,7 @@
using System.Linq;
using System.ServiceModel.Syndication;
using System.Text;
+using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
@@ -194,7 +195,7 @@ protected void Page_Init(object sender, System.EventArgs e)
if (user.IsInRole("Administrator") && IsEditable)
MultiView1.Visible = true;
- if (Settings["NewsInRow"] != null)
+ if (Settings["NewsInRow"] != null)
{
newsInRow = 1;
rowsPerPage = 5;
@@ -211,7 +212,7 @@ protected void Page_Init(object sender, System.EventArgs e)
else
{
string message = Localization.GetString("Configure.Message", this.LocalResourceFile);
- DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, message, ModuleMessage.ModuleMessageType.YellowWarning);
+ DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, message + " (NewsInRow)", ModuleMessage.ModuleMessageType.YellowWarning);
}
if (Settings["TemplateName"] == null && Settings["Template"] != null )
{
@@ -220,8 +221,15 @@ protected void Page_Init(object sender, System.EventArgs e)
ctrl.SaveTemplateFile("Module_" + ModuleId.ToString(), (string) Settings["Template"]);
string message = Localization.GetString("Configure.Message", this.LocalResourceFile);
- DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, message, ModuleMessage.ModuleMessageType.YellowWarning);
+ DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, message + " (Template)", ModuleMessage.ModuleMessageType.YellowWarning);
}
+
+ if (Settings["CategoryID"] == null)
+ {
+ string message = Localization.GetString("Configure.Message", this.LocalResourceFile);
+ DotNetNuke.UI.Skins.Skin.AddModuleMessage(this, message + " (Category)", ModuleMessage.ModuleMessageType.YellowWarning);
+ IsConfigured = false;
+ }
}
protected void Page_Load(object sender, System.EventArgs e)
@@ -230,34 +238,7 @@ protected void Page_Load(object sender, System.EventArgs e)
{
if (IsConfigured)
{
- if (Request["feed"] != null)
- {
- string format = Request["feed"].ToLower().Trim();
- SyndicationFeed feed = CreateFeed();
- Response.ContentType = "text/xml";
- Response.Charset = "utf-8";
- XmlWriterSettings settings = new XmlWriterSettings();
- settings.Indent = true;
- using (XmlWriter writer = XmlWriter.Create(Response.OutputStream, settings))
- {
- switch (format)
- {
- case "atom":
- Atom10FeedFormatter atom10Formatter = new Atom10FeedFormatter(feed);
- atom10Formatter.WriteTo(writer);
- break;
- case "rss":
- default:
- Rss20FeedFormatter rss20Formatter = new Rss20FeedFormatter(feed);
- rss20Formatter.WriteTo(writer);
- break;
-
- }
-
- }
- Response.End();
- }
- else
+ if (Request["feed"] != null)
{
switch (ViewIndex)
{
@@ -357,33 +338,66 @@ protected void Pager_PreRender(object sender, EventArgs e)
}
protected void Page_Prerender(object sender, EventArgs e)
{
- string titleLabelName = DotNetNukeContext.Current.Application.Version.Major < 6 ? "lblTitle" : "titleLabel";
- Control ctl = Globals.FindControlRecursiveDown(this.ContainerControl, titleLabelName);
+ if (Request["feed"] != null)
+ {
+ string format = Request["feed"].ToLower().Trim();
+ SyndicationFeed feed = CreateFeed();
+ Response.Clear();
+ Response.ContentType = "text/xml";
+ Response.Charset = "utf-8";
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+ using (XmlWriter writer = XmlWriter.Create(Response.OutputStream, settings))
+ {
+ switch (format)
+ {
+ case "atom":
+ Atom10FeedFormatter atom10Formatter = new Atom10FeedFormatter(feed);
+ atom10Formatter.WriteTo(writer);
+ break;
+ case "rss":
+ default:
+ Rss20FeedFormatter rss20Formatter = new Rss20FeedFormatter(feed);
+ rss20Formatter.WriteTo(writer);
+ break;
+
+ }
+ writer.Flush();
+ }
+ Response.Flush();
+ Response.End();
+ }
+ else
+ {
- if ((ctl != null))
- {
- if (Settings["ShowTitle"] != null && Convert.ToBoolean((string) Settings["ShowTitle"]) && TheNews != null)
- {
- // We can set the title of our module
- ((Label) ctl).Text = TheNews.Title;
- }
- if (Settings["ShowRss"]!= null)
- {
- int position = Convert.ToInt32(Settings["ShowRss"]);
- Control rssIconCtrl = ParseControl("");
- switch (position)
- {
- case 1:
- ctl.Parent.Controls.AddAt(0, rssIconCtrl);
- break;
- case 2:
- ctl.Parent.Controls.Add(rssIconCtrl);
- break;
- }
-
- }
- }
+ string titleLabelName = DotNetNukeContext.Current.Application.Version.Major < 6 ? "lblTitle" : "titleLabel";
+ Control ctl = Globals.FindControlRecursiveDown(this.ContainerControl, titleLabelName);
+
+ if ((ctl != null))
+ {
+ if (Settings["ShowTitle"] != null && Convert.ToBoolean((string) Settings["ShowTitle"]) && TheNews != null)
+ {
+ // We can set the title of our module
+ ((Label) ctl).Text = TheNews.Title;
+ }
+ if (Settings["ShowRss"] != null)
+ {
+ int position = Convert.ToInt32(Settings["ShowRss"]);
+ Control rssIconCtrl = ParseControl("");
+ switch (position)
+ {
+ case 1:
+ ctl.Parent.Controls.AddAt(0, rssIconCtrl);
+ break;
+ case 2:
+ ctl.Parent.Controls.Add(rssIconCtrl);
+ break;
+ }
+
+ }
+ }
+ }
}
protected void lstNews_ItemCreated(object sender, ListViewItemEventArgs e)