This post is about how to create a Microblog with SharePoint Designer 2010 and the use of DVWPs, CSS and jQuery. A Microblog can be used for quick communication with team members in short sentences at the Intranet. This example works just like a SharePoint blog site, posts and comments are stored in separate lists that are linked by a lookup and team members can add posts and anyone can reply to posts. This Microblog is a basic no code solution and if you are looking for more advanced social features like hash tagging, direct messages, document uploading or integration of my site you should check out tools like NewsGator or Yammer among more. If you are looking for a basic comment function, maybe the OTB web part Note board could be an option. But let’s look into how you can use the DWVP for a Microblog.
Let’s try it out
- Open the browser and create two custom lists in the root site of your Site Collection
- Name it ListPosts
- Name it ListComments
- ListPosts
- Create a column:
- Name: Content – Multi lines of text with three lines for editing and plain text type.
- Go to list settings, click the Created By column and change the presentation for this field to Name (with picture).
- Add a new Item in the list with a title and a comment.
- ListComments
- Create two columns:
- Name: PostsID – type Lookup. Get information from ListPosts in the ID column. Do not allow multiple values.
- Name: Comments – Multi lines of text with three lines for editing and plain text type.
- Go to list settings, click the Created By column and change the presentation for this field to Name (with picture).
- If you don’t use English language, rename the the (Title) column to Title, another way is just to set this column as optional if you prefer.
- Add a new Item in the list with a title and a comment. Type a title, select PostID according to the ID from the ListPosts item you added and add a comment.
Create a Linked Data Source for the posts and comments lists
- Open the root site with SPD and click at site objects in the left navigation at click Data Sources. Click at Linked Data Source in the ribbon. Give it the name MicroBlog in the General tab and click at configure Linked Source in the Source tab.
- Select ListPosts and ListComments and add them to the right pane. If you can’t see the list you have to update SPD. Click at the next button and select Join and click at Finish and OK.
- Open the root site with SPD and create a new folder named SPD-WebParts
- Create a new ASPX page called MicroBlog and save it in the folder you created, open the page with SPD. IF you download my pages and will copy and paste you don’t need to do more now, but if you want to set this up by your self you can attach the page to your custom master page. Check it out, click at the Style tab in the ribbon, the button Attach and attach it as a custom master page. In the design view, click at the right arrow for the PlaceHolderMain place holder and click at create custom content.
- Create a new ASPX page called MicroBlogForm and save it in the same folder as Microblog.aspx. Repeat the steps as you just did for the MicroBlog.aspx.
Create two ASPX pages
In the next step it’s time to create two DVWPs for MicroBlog.aspx, the first is for inserting posts and the second is for displaying current posts and their comments. If you want to build this by yourself you can just add a Display Item Form DVWP and use the Linked Sources and then insert field from the Comments as a Joined sub view. You will also have to create a New Item Form DVWP for the second page meant for inserting comments.
If I would describe all the steps from now including styling and jQuery this blog would be too long and for this reason I have prepared this so it’s just to download the pages and do some copy and paste. If you export or upload the DVWPs as web parts the CSS and the jQuery will not follow the web part. so cut the CSS from the MicroBlogForm page and paste this into an external CSS file. The same goes for the jQuery stuff in both pages, cut the scripts and paste them into the head section of your custom master or into an external JS file.
Read more about Linked data sources at the Microsoft Office SPD pages.
Insert the Dataviews into the ASPX pages
MicroBlog.txt
- Open this page and copy the content into MicroBlog.aspx and save the page
MicroBlogForm.txt
- Open this page and copy the content into MicroBlogForm.aspx and save the page
CSS
Copy this CSS into your custom CSS file
/* --- MicroBlog --- */ .PostBodyWrapper {width:100%;} .PostWrapper {margin-left:5px} .PostSeparator {border-bottom:1px #f1f1f1 solid; border-top:1px #fff solid; margin:5px 5px 5px 5px} .PostImg {float:left; width:50px; height:50px; padding-right:10px} .PostContentWrapper {background-color: #fff; height:50px;} .PostEditor {font-weight:bold; color: #0072bc} .PostContent {} .PostLink {} .PostComment {} .PostCreatePost {padding:10px} .FormFieldMicroBlogWrapper {margin-left:5px; width:100%; } .FormFieldMicroBlog > span > textarea { background-color: transparent; width:95%; border:1px solid #ccc; overflow:hidden; overflow-y: hidden; overflow-x: hidden; font-size:14px; color:#999; font-family:Arial, Helvetica, sans-serif; padding:10px 20px 0px 10px; margin-right:20px } .PostBtn {padding-right:3px; float:left} .PostBtn Input { width: auto; padding: 5px 10px 5px 10px; background: #617798; border: 0; font-size:13px; color: #fff; cursor: pointer!important; float:right } .CommentWrapper {margin-left:60px; margin-right:5px; background-color: #f7f7f7; padding:10px; border-bottom:1px #fff solid} .CommentImg {width:50px; float:left;} .CommentContentWrapper {} .CommentEditor {font-weight:bold; float:left} .CommentEnd {margin-left:60px; margin-right:5px; border-top:1px #ccc solid; border-bottom:1px #fff solid; margin-bottom:20px} .CommentContent {} .CommentLink {} .CommentNoComment {border-bottom:1px #fff solid; border-top:1px #fff solid; margin:0px 0px 15px 0px} /* --- End MicroBlog --- */
Jquery
Copy this jQuery into your custom master or into a referenced JS file
$(document).ready(function() { $(function() { // Remove autofocus $("textarea[title='Content']").blur(); // Set defaulttext var defaultText = 'What are you working on?'; $("textarea[title='Content']") // Handle blur effect .val(defaultText) .focus(function() { if ( this.value == defaultText ) this.value = '' }) .blur(function() { if ( !$.trim( this.value ) ) this.value = defaultText });}); });
Image Paths
If you not have activated the user profiles and my site, you have to change the image path in the MicroBlog file. You can create an image library in the root site and store the user images there if you want. Just name the images same as the Users ID. The path can looks like:
<img src=”/RootImages/{@Author.id}.jpg” alt=”” width=”50″ height=”50″ />
Ready to test
Finally it’s time to try this out, open your browser and to to the MicroBlog page
Behind the scenes
Some notes if you needs to change something
- You have to reference the latest jQuery file in your custom master page
- Save the two web parts into the web part gallery, or export them as files and you can use them at any page in the site collection, not only at the root site.
- I have set a RowLimit variable to 5 In MicroBlog.aspx, change this as you prefer.
- I changed the variable that Joins the list to get rid of the unwanted characters
<xsl:variable name=”Rows” select=”../../../ListComments/Rows/Row[substring-before(@PostsID., ‘;#’) = normalize-space($dvt_ParentRow/@ID)]”/> - The link ‘Reply’ sends the current posts ID as a query string over to the next page (the dialogue). I have used a bit jQuery go get this ID from the URL in order to prepopulate a hidden drop down (the lookup column), and as you may know if there are 20 or more items in a list and you use lookup to this list, the select drop down will be converted to an input drop down and this needs to be solved as well.
- In the dialog I used a SharePoint:SaveButton as I think is an easy way to close a dialog when click the save button.
The jQuery used in the MicroBlogForm that sets the Post ID into the hidden dropdown.
$(document).ready(function() { var loc = window.location.href.substr(window.location.href.lastIndexOf("/")).replace('/MicroBlogForm.aspx?CID=', '').replace('&IsDlg=1', ''); var HiddenInput = $("input[title='PostsID']").attr("optHid");$("select[title='PostsID']").val(loc); $("input[title='PostsID']").val(loc); $("input[id='" + HiddenInput +"']").attr("value",(loc)) $('input[title="Title"]').val(loc); $(".FormFieldShow > span > textarea").focus(); });
More to do
If someone’s profile picture should be broken or missing, you can use jQuery to replace a broken image with an shadow image:
$(window).bind('load', function() { $('img.resizeme').each(function() { if((typeof this.naturalWidth != "undefined" && this.naturalWidth == 0 ) || this.readyState == 'uninitialized' ) { $(this).attr('src', '/_layouts/images/O14_person_placeHolder_32.png'); } }); })
Enjoy, and drop a comment if you have something to ask
/ Christian
Something to note. If you are not in the root site, make sure you update your WebURL parameter otherwise you will get datasource issues.
Can you give one example of that, please !
Another thing I noticed, the ListComments list will not allow items to be posted because the title column is required. I fixed this my making the title column optional. Perhaps on the insert command it could make a default title?
Hi Euan, thank you for your replies, if you’re creating this stuff in a subsite you’ll have to change the default value for the WebURL with a relative path to that site, for example /MySubSite/ instead of just a slash.
It’s a good advice to make the title columns optional for this lists, but if you have this column required it should work to update the hidden Title field (named Title in the form) by prepopulating the field with something, in my example I set the Posts ID into this field, the jQuery for this can be found in the MicroBlogForm.aspx
/ C
Hi Christian: Great post, thank you for sharing!
In reference to: “Save this web parts into the web part gallery and add them to a page in the site collection. This web parts are not bound to a specific site.”
I am having a little trouble with this part. I got the MicroBlog & MicroBlog pages working, then I exported the MicroBlog webpart to the gallery, then dropped the MicroBlog webpart onto the home page of a subsite, and I get te always informative “correlation error.”
I can however add the webpart to the home page on the root site, but it doesn’t style correctly (like it’s no longer referencing the CSS you provided).
Any steps you can think of to help me troubleshoot?
Hi PlanetParker, glad you like the post! There was an issue you found there, but I have now updated the files in the download files. I didn’t include the WebURL parameters in the previous version for the aggregateDataSource, but that’s fixed now. About the CSS, it should work whatever you looking at the page itself or a page within the webpart, maybe it could be just a reference issue to the CSS.
/ C
Hi Christian: I downloaded your new files and they do indeed work on multiple sites now–thanks!
However, I still have to add the css to either the master page or on the page itself in a CEWP.
Also, I noticed that the post box no longer displays “What are you working on?” I’m guess that is due to a missing reference to jquery library perhaps. I can add that reference to the page now, but if I then export to a web part, I don’t think that bit of code gets pulled in because it’s not part of the web part that I can export–it’s part of the page. Am I making sense? I’m wondering if that’s the same problem I’m having with my CSS, since that reference is also part of the page and not the webpart that gets exported.
Thanks for your help.
awesome. any way to integrate this into Outlook, or some kind of shortcut for employees to have readily available as they’re browsing the web and want to share something?
This is Great. I read all your blogs. Thanks for sharing this
Thanks all, just added a little piece of text in the blog about extracting the jQuery and Css to external files as an option when exporting this as web parts.
/ C
I am having some problems downloading from your skydrive and can only assume its my firewall here. Anyway you can email the file? Thanks in advance
Can you elaborate on the step that says.
“Open the root site with SPD and create a new folder named SPD-WebParts”
I am not sure where you want the folder to be created. Do you mean create the folder in “Site Pages”? Thanks
Hi Christian,Thank’s for Great post.
I am having a little problem. when copy and paste MicroBlog.txt in my MicroBlog.aspx I get the error: “The server returned a non-specific error when trying to get data from the data source…”
I am a beginner at this, please help me.
Hi Adam, make sure you have created the two lists at the root (home site) of the site collection, with same names as I describe in the steps and that you use the same names for the columns. Make sure you have created (imported) the .aspx files in the root site, e.g http://MyIntraNet/SPD-WebParts/TheAspxFiles.aspx
Dave: I have send you the files by mail.
/ C
All these steps are properly done.Do not change anything in the aspx code? For example,ListId in DataFormWebPart? Or like this….
Hi Adam, can’t say what this could be no more than it seems that the DVWPs cannot connect to the lists. Can you try to set up this in portions, create the lists, build an empty .aspx page and copy over just one DVWP at the time onto this page to minimise where it goes wrong. I have verified this steps before, but I will do it again soon as I can, if I found anything I’ll let you know.
/ C
Hi Chistian,
Excellent work!!!
Christian, After posting the comment if I refresh the page the data is getting saved again resulting in duplicate entries.
Hello Christian!
Great solution you have made for SharePoint. I have tried it in SharePoint on promise and on SharePoint 365. It worked fine both places.
I have a question for you, i seems like i my lists don’t speak with each other. I have these to lists. And it works fine when i register manually. But when i hit “Reply”, type in and save. The element does not contain the @ID from ListPosts.
Do you have a solution on that?
A nice solution, indeed!
Hi Christian, Thanks for sharing the great solution. It’s great post. I followed all the steps and managed to get it working except after click the reply the follow-up posts won’t show up. I can see them in the list though. If the “title” column is required it will not let me save the reply at all. Not sure where to start troubleshooting this. Could you please help or give me some pointers? Thanks again.
A nice solution. For now work perfect when i connect e.g http://MyIntraNet/SPD-WebParts/MicroBlog.aspx
For what are the two files (.webpart) ? And how i implement that in my site ?
Thanks !
I know how to do that.
Thank Ricardo.
I foun a trouble, when i click in the reply link, sharepoint show the next message.
“Error al procesar /SPD-WebParts/MicroBlogForm.aspx. The directive contains duplicate ‘title’ attributes.
Solucionar problemas de Microsoft SharePoint Foundation.
Identificador de correlación: 01bced90-3c79-440d-91b6-c84e0b087574 ”
What i donne wrong?
Thanks
It’s any posibility to implement this microblog in a sub site with his list? or all must to be in the root site?
Christian, I am a brand new SP admin and am trying to implement this as a “no code” solution. I have everything done, except I am not sure where the custom CSS file and custom master/referenced JS file might be located. I am doing this in a root collection and do have access to the admin ID on the server.
Help!
Hi Renato, you can use this in any site you want. In my example (the files you can download) I have make this to work only in the root site. What you need to do is to change the parameters and parameter bindingins, you have to get rid of the GUIDs. To explain exactly how to do this takes a bit of writing so I hope this can gives you a way to try this out.
/ C
Renato in which file i need to do the changes? in the .aspx files? .webpart? or both ?
Thank, i really appreciate your help.
Hi Jim C, if you copy the V4.master and paste this new master in the same folder (or a subfolder) you can add references to a custom CSS file and the latest jQuery file. I do often have my jQuery stuff in a separate JS file that I also reference in the master page, something like this:
As you see I have those files in subfolders to style library. Hopes this could get you going.
/ C
Thanks, Christian, I will be trying this shortly.
Jim
Hi Renato, you need to do this in the ASPX files. Take a look at an older blog post of mine, try this out and look for the section “Make the Web Part be ready to be reused in the site collection.” I describe how you can change this parameters https://chrisstahl.wordpress.com/2011/02/14/display-random-items-with-the-data-view-web-part/
/ C
What is the difference about what are you saying, and “change the default value for the WebURL with a th relative path to that site, for example /MySubSite/ instead of just a slash” ?
I do the last one and works ! but i wanna know the difference
Hi Renato, the /MySubSite/ means that this lists lives in for example http://intranet/MySubSite. If the lists lives in the root level you can use just a slash and you can use the web parts at a subsites even if the lists don’t lives there. Gool luck to you, and if you get stuck into this I’ll try to set up an example later on. Btw I have some more stuff ongoing related to this post like show hide more comment that for example if the filter stops at three comments, a like button, emotional icons and some more stuff.
/ C
Thanks Christian, you know how make the “url” /MySubSite/ a relative url?
Because I have a site with multiple subsite, and I want a microblog for each one of the site, so I need to keep the url relative.
I hope you can help me.
Thanks!!!
I am looking forward to see the next steps that you planned to do. It is exciting! Thanks for sharing.
Hey Christian –
this is really nice blog.
I have followed the steps you have mentioned to create the Micro-Blogs.However when i do reply to any Posts.Reply is not appearing on the page.I have checked the ListComment , and came to know that PostID value was Empty.
can you please help me?
Thanks
Dev
Great work, thanks
Santhosh
Hey awesome stuff. I think MS might end up borrowing this concept 😉 as they do…
If you are interested I added a little more jQuery to help hide lengthy comments to posts and add a little link to allow them to slide up and down if you want to see them. This helps to use the screen real estate a little more.
//collapse some of the comments if there are more than 3
$(‘div.PostBodyWrapper > div > div’).each(function(index)
{
var indexNode;
var numKids = $(this).children(‘.CommentWrapper’).size();
var hiddenKids;
if (numKids > 3) //only look at posts that have 3 or more comments
{
//$(this).css(“color”,”red”); used for debugging
$(this).children(‘.CommentWrapper’).each(function(index) {
hiddenKids = numKids-4;
if (index <= hiddenKids)
{
$(this).addClass('older');
//$(this).css("color","red");
}
});
//get handle on older comments
var oldComm = $(this).children('.CommentWrapper.older');
//hide the older comments by default
$(oldComm).hide();
//insert the show/hide link
indexNode = $(this).prepend('Show/Hide ‘ + hiddenKids + ‘ older comments >>‘);
//add the click function to the show hide node we just created
$(indexNode).click(function() {
if (oldComm.is(“:hidden”)) {
$(oldComm).slideDown();
} else {
$(oldComm).slideUp();
}
});
}
});
Also does anyone know of a way to make the WEBURL of the webparts and ASPX’s dynamic so you can package this up nicely and deploy anywhere? I tried ~site and a few others I found on the web, but as yet nothing has worked.
I managed to make it work on subsites but only by going in and changing all these parameters manually. There has to be a better way… surely…
Christian, this is an awesome SP project. I do have a few questions, though. This is my first time working with SPD, so bear with me. 🙂
1.) Regarding “Open the root site with SPD and create a new folder named SPD-WebParts”, I do not have an option to create new folders in SPD. What I ~did~ do is open the actual website path in Explorer and add the folder. This, of course, may be causing my subsequent issues as well. Because it’s relevant the following question, I’ve got \\webserver\SProot\MySite\SPD-WebParts\ created.
2.) I’ve chosen to download your files to explore how this works, but I’m having some trouble interpreting what I’m looking at. First, for copying the files over, are the .zip files meant to be unzipped into my SPD-WebParts directory, or as subdirectories WITHIN SPD-WebParts? e.g., when completed, will I have …\SPD-WebParts\MicroBlogDisplay.webpart etc or will I have …\SPD-WebParts\MicroBlog\MicroBlogDisplay.webpart etc.?
Thanks in advance!
dan
Very good information. Lucky me I ran across your site by chance (stumbleupon). I’ve saved it for later!
Cool tips on how to use the CSS on the sharepoint microblog. Will share to help some interested parties 🙂
Great Post Christian. 🙂
Implemented it and for the most part works like a charm except for the fact that the replies to a post do not show up. That is because the PostsID does not get saved in the ListComments List.
Could this be a cause of the problem ?
var loc = window.location.href.substr(window.location.href.lastIndexOf(“/”)).replace(‘/MicroBlogForm.aspx?CID=’, ”).replace(‘&IsDlg=1’, ”); // Get the Posts ID and create a variable
(this code is in the MicroBlogForm.aspx)
What i found was the value of PostsID is not getting populated in the hidden dropdown. Tried a couple of things but in vain.
Any Help will be great. 🙂
Cheers.
Found the solution.
The Jquery classes were not getting populated because the references were not present on the page.
Thanks anyways. 🙂
Hi Binit or Christian, I’m having the same problem.
Can you advise how to get the PostID to populate? everything else is working except the user’s “reply” is not showing underneath the comment- when I navigate to the list item for reply, the PostID is empty- when I manually change it to the most recent post, it then appears in web part. please advise on how you resolved this as I’m not sure how to tell if the Jquery classes are not getting populated….
Got it working. I needed to make sure the Jquery library and file were referenced correctly in MP. I had an error and once fixed, it worked correctly. Thanks Christian, I’m a big fan of your blog posts!
That’s great Binit, thanks for your comment.
Great work – very useful.
Christian, great instructions. I was able to setup your pages in SPD and they render without errors. But I seem to run into a problem when I try to reply to the posts in my Microblog. I click on reply and the MicroBlogForm.aspx opens , I type my reply in the box and click “Save”.
Then I get a message that “The data source control failed to execute the insert command.”
I installed all files on the root site. Could you please provide some assistance? Thanks.
Hi parsons, thanks!
I would first check the names of the columns you have created in the list and compare this to the dataview, could be the case that one (or more) fields in the form don’t match the name in the data source. Try to create the two lists again with exact the column names (watch out for copy and paste, you can get blankspaces after the text) as described in this blog. If you still having problem, let me know.
/ C
Hii Christian,
i was working with MicroBlogging as You Posted on Blog
im facing Problem , as i have Admin Rights
I can see all working Properly but when someone else Logs in with Contributor /Full control Rights it seems Javascript and css are not getting Being Referenced .I have already Referenced all those .js and .css file in V4.Master. I am using this in SharePoint Server Standard 2010 and i want to use it in Mysite.Please i need your Help.
Regards
-Ravi
Hey Christian, thanks a lot for your post! It helped me a lot. I´ve got a further question and would be happy for any help:
Do you have any experience concerning a mashup from your no-code microblog and the OOB newsfeed function from SharePoint 2010? I wonder if it is possible to build a small newsfeed solution without any third-party tools.
Thanks in advance!
Christian
Hi, thanks for feedback! Would love to see a mashup out of this, what’s your ideas more specific? Have you read my blog post about using this into a page layout for commenting news? In this scenarie you can create rollups like last commented news or most commented news etc. https://chrisstahl.wordpress.com/2012/06/30/comment-functionality-for-news-pages-part-i/
Can this be done at all with SharePoint 2007?
Hi Kevin, yeah you can do this in SP2007 as well, the basics / model are the same, this is built upon two lists with some xsl/js/css at the top. Good luck!
/ C
Another question – I see that pagination will work to allow users to get more comments, but that the poster image (if no image is in the profile) and the show/hide functionality contributed by Mack are lost when you go to the next page. Any ideas on how that could be made to function? I guess I could just put a link for “See all posts and replies” and use a separate page, but the pagination function in-context would be cool.
Again, thank you so very much, Christian – this is great stuff!
– Kevin
Hey Chris! This is fabulous post about micro blogging… can’t thank you enough for taking the time to do this (I know it was almost over a year ago)!
Quick question…this one line is giving me problems for some reason… it’s preventing me from seeing replies to posts, any idea what could be the cause?
Thank you again, really appreciate it!
Go figure, I finally got very close in 2007 – all but the pulling in of the form via modal. Was working on an inline method – and we upgraded to 2010. Only question now is whether or not there is a way to avoid duplicate posts when people refresh and inadvertently resend the form data?
This is an awesome project; thanks again so much!
Hello,
I have successfully implemented this for a site collection whose address is the root. “test.com/” but when attempting to implement it at a site collection whose address is not the root “test.com/sitecoll/” I am having some trouble.
I am editing the WebURL for the webparts and pages from “/” to “/sitecoll/” and this appears to be working. The problem is with replies. It will not save replies.
Also, I am considering wrapping this into a feature. Any reasons this could not be done?
Thanks
Hi Andy, I think you have an issue with the path when it comes to implement this in a subsitecollection. I just tested this and I changed the WebURLs from a single slash to /sites/sitecoll/ (in my case I created a subsitecollection with the URL http://intranet/sites/sitecoll) for the both aspx files. Don’t forget to inlude a reference to the latest jQuery file and include (or embed) a JS file the jQuery stuff I have uploaded at my skydrive as well as the CSS. I have now uploaded this two pages that works for a subsitecollection here: http://sdrv.ms/VV8uUM I hope you can have use of that.
It would be a great idea to wrapping this to a feature, this could be useful for many people, let me know if you planning to do that and if I can be in any help.
/ C
Hi, please how do I export the 2 webparts? Everything working well but can’t seem to export the webparts successfully. They both can’t be imported from a web page, in SPD I don’t see the posting box, only see the comments boxes so can’t export that for use.
Thanks.
Found the webparts in the download folder. Thanks for making everything available. You are a blessing and you will be blessed.
Thanks a lot Sakal, It’s a bit tricky to export DVWPs, but it can be done if you place the cursor into the design view and then the web part tab should be visible in the ribbon. I’m happy about that you found the web part!
thanks work
Hi There. For the life of me I cannot get the blog to work on my 2010 SP Foundation running on my Windows 7. I have looked at WebURL but no luck. Please help. Below is the error message I kept getting when adding a new post or comment. Thanks Mike Thach
Forgot to post the error Message:
Go back to site
Error
Error
The data source control failed to execute the insert command. d6661828-2f60-405f-af6c-38d3c500ce05
Web Parts Maintenance Page: If you have permission, you can use this page to temporarily close Web Parts or remove personal settings. For more information, contact your site administrator.
Troubleshoot issues with Microsoft SharePoint Foundation.
Correlation ID: d6661828-2f60-405f-af6c-38d3c500ce05
Date and Time: 3/29/2014 9:30:11 PM
Go back to site Go back to site
I don’t know whether it’s just me or if everybody else experiencing problems with your website.
It appears as if some of the text within your content are running off the
screen. Can someone else please comment and
let me know if this is happening to them too? This may be
a problem with my internet browser because I’ve had this happen before.
Kudos
Is it possible to have posts longer than 3 lines?