Giter Site home page Giter Site logo

mrcms's Introduction

Mr CMS

Mr CMS is an open-source content management framework built on ASP.NET Core

Mr CMS simplifies many of the time-consuming aspects of website creation, providing both a framework for developers to create bespoke websites and an easy-to-use CMS for content editors.

Apps

Mr CMS is modular, with functionality encapsulated in "Apps". For example, a Blog App might include definitions for a blog list and individual blog posts. Mr CMS includes three basic apps:

  • Core: Basic functionalities such as login and registration, alongside generic page types like 'TextPage'.
  • Articles: Dedicated functionalities for article management.
  • Galleries: Features for managing image galleries.

Developers are encouraged to modify or replace these apps as needed to suit specific requirements.

Creating your first Mr CMS App

  1. Create the App:

    • Create a new folder in the Apps directory (e.g., Blog).
    • Inside this folder, create a file named BlogApp.cs:
    public class BlogApp : StandardMrCMSApp
    {
        public override string AppName => "Blog";
        public override string Version => "0.1";
    
        public override void SetupMvcOptions(MvcOptions options)
        {
        }
    }
  2. Define a New Page Type:

    • Create a directory Apps\BlogApp\Pages and add a file named Blog.cs:
    public class Blog : Webpage
    {
        [DisplayName("Featured Image")]
        public virtual string FeatureImage { get; set; }
    
        [AllowHtml]
        [StringLength(160, ErrorMessage = "Abstract cannot be longer than 500 characters.")]
        public virtual string Abstract { get; set; }
    }
  3. Create the View:

    • Create a folder Views\Pages and add a Razor view to display the Blog:
    <article>
        <div class="row">
            <div class="col-md-12">
                <h1 class="margin-top-0">@Editable(Model, p => p.Name, false)</h1>
                <a href="/@Model.Parent.UrlSegment" class="btn btn-default">Back</a>
                @Model.CreatedOn.Day @Model.CreatedOn.ToString("MMMMM") @Model.CreatedOn.Year
                <br />
                @if (!String.IsNullOrEmpty(Model.FeatureImage))
                {
                    <a href="/@Model.LiveUrlSegment" class="margin-top-0">@RenderImage(Model.FeatureImage)</a>
                }
                @Editable(Model, page => page.BodyContent, true)
            </div>
        </div>
    </article>
  4. Admin View for Editing:

    • Add a view in Apps\BlogApp\Areas\Admin\Views\Webpage to edit the new fields:
    <div class="form-group">
        @Html.LabelFor(model => model.FeatureImage, "Article Image")
        <br />
        @Html.TextBoxFor(model => model.FeatureImage, new { data_type = "media-selector" })
    </div>
    <div class="form-group">
        @Html.LabelFor(model => model.Abstract)
        @Html.TextAreaFor(model => model.Abstract, new { @rows = "2", @class = "form-control" })
    </div>
    ```### Creating your first Mr CMS App
    

Feature list

  • Unlimited document types
  • Lucene based search architecture - easily create search indexes for super fast content filtering and searching of '000's of items.
  • Layouts & Layout areas give complete control over widgets on each page
  • Bulk media upload and management
  • Azure or file based media storage
  • Inline content editing
  • Error logging
  • Task management
  • SEO - Control over meta details
  • URL History table - keep track of URL changes. When a URL changes create 301 redirect to new location
  • URL History - add URLs at will to create redirects or if importing from another system add in the original URLs here
  • Form builder - create forms on the fly and collect their data
  • Enforce user login to page
  • SSL per page
  • User management & roles
  • Document version control
  • Complete control of page meta data - I.E when creating a page type (e.g BlogPage) control what type of pages can be added below it, say weather the page can maintain url hierarchy, say how many children should show in the page tree in item (if there are 000's of pages you might only show the top 5 pages) and lots more
  • Content managed into apps
  • Themes - override standard views
  • Multi-site capability - run multiple domains through one set of files & admin system
  • ACL
  • Webpage import and export
  • Site duplication button to duplicate a website quickly
  • Azure support

Release History

1.0 - TBC 2019

  • Feature: Upgrade to .NET Core
  • Feature: Bootstrap 4 integration in admin / Core app
  • Feature: Notifications (Web Push)
  • Feature: Admin LTE admin base for more responsive experience

0.6 - January 2019

  • Feature: Restore Cloudflare IP
  • Feature: Tracking Scripts (top of body). Ability to add scripts below (e.g Google AdTag manager iFrame)
  • Feature: Add test email functionality
  • Feature: Raygun implementation for centralised logging
  • Feature/SEO: Self referencing canonical or over-ride on SEO and properties tab
  • Feature: Move and Merge Webpages
  • Performance: Full page caching. Ability to output cache a full webpage.
  • Fix: Lucene write lock when cache cleared and index is being written to.
  • Security: Record logins
  • Security: Email Alerts for login
  • Security: Monitor the scripts per page (header/footer). Alert on change.
  • Security: Two factor authentication via email
  • Security: File types now configured in web.config
  • Note: Now targets .NET 4.7

0.5.1 - September 2016

  • Swapped out old Azure caching for Redis cache
  • Brought in the concept of a staging URL and staging Robots.txt - this allows us to use Azure Deployment Slots
  • Message queue now allows attachments
  • The Mr CMS admin logo can now be swapped out through System Settings - Site Settings
  • Removed Self Execute Tasks which uses HostingEnvironment.QueueBackgroundWorkItem due to unreliability of execution. Instead use external task system to poll the task executor URL.
  • Files are moved off disk for use with Azure websites scaling and deployment slots
  • Settings are migrated back to the database. Note: Remove unused .json files from App_Data/Settings. Settings will auto migrate but issues may occur if unused .json files are in the directory
  • Message templates moved back to database
  • Connection string now in ConnectionStrings.Config
  • Sitemaps now output to disk and are scheduled for rebuild via tasks
  • Favicons can be rendered at different sizes using @Html.RenderFavicon(size: new Size(16, 16))
  • Better media management and uploading notifications
  • Azure probe settings for using traffic manager
  • Added more ACL rules for core functionality
  • Performance: Nhibernate configured for non-eager loading of entities to improve database performance
  • Performance: Limited URL lengths to 450 to allow for indexes to be applied in SQL Server
  • Performance: Whitespace filter now compiled
  • Fixed: Daylight savings date/time issue
  • Fixed: Empty writes to the universal search index
  • Fixed: Issue with the close icon on the inline widget editing
  • Fixed: 404s were returning 404 status but with a blank response. Fixed to return 404 HTML see Views/Error/FileNotFound.cshtml
  • Breaking Change: Localised scripts now rendered separately to other scripts using @{ @Html.RenderLocalisedScripts();}
  • Breaking Change: Rewrite of the task execution system so that tasks are system wide rather than site specific. Tasks can now be enabled or disabled. This is a breaking change and tasks should be updated to disable site filters for any multisite websites.
  • Breaking Change: Mail settings are set at the system level rather than site level. Mail settings will need to be reconfigured
  • Breaking Change: System settings now stored in mrcms.config - the new location for hosting specific settings
  • Breaking Change: Remove Azure Directory for Lucene (We are slowly moving away from Lucene and looking at other solutions which work better with cloud based hosting and scaling)

mrcms's People

Contributors

andrewdking avatar dalir-bajelani avatar dependabot[bot] avatar ducthanhnguyen avatar foxip avatar gmstr avatar hosamre94 avatar johancruyff2019 avatar justinuliu avatar mdirashid avatar myozarni avatar will-bill avatar yandawl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mrcms's Issues

MrCMS.Web Navigation

I used to be able to cycle through the page.FrontEndRoles in the Navigation.cshtml to hide menu navbar items based on User roles. Now I can't because FrontEndRoles is no longer defined/available from the page object (NavigationList). Not sure what I was able to do before. Any suggestions?

Submenu is not appear on font page

I been installed mrcms and go to backend page to create the subpage, but it doesn't appear on main menu on front page, does anyone have any advice?

Registering new Area

Goodday,

I have tried creating and registering a new Area on Mr CMS but to no avail.

I always get this error: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

This is my code below

public class StudentAreaRegistration : AreaRegistration 
  {


  public override string AreaName 
    {
        get 
        {
            return "Student";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context) 
    {

        context.MapRoute(
            "Student_default",
            "Student/{controller}/{action}/{id}",
            new {controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

I have a HomeController and an Index.cshtml inside a Home folder in the views folder. I don't know what I am missing.

Ninject and AutoMapping of my Services to Interface

Goodday,

I have been going through the Mr CMS codes and I have not located where the Auto Interface binding with its implementation code is written. I am quite use to Autofac and structureMap. So am trying to understand ninject and how the Interface to class implementations were binded because I noticed that the interface implementations were not explicitly binded but something like ninject convention based binding was used.

How to add page templates ?

Hello,

When I want to add page template (ex. 2 or 3 columns) I found errors:

The "RenderBody" method has not been called for layout page "~/Apps/Core/Views/Shared/2col.cshtml".

Ok, I add RenderBody() on my 2col page:

@{
    Layout = "_BaseLayout.cshtml";
}
<div class="row">
    <div class="col-sm-8">@RenderBody()</div>
    <div class="col-sm-4">@{ RenderZone("Right Column"); }</div>
</div>`

So, I refresh and found this error:

The file "~/Apps/Core/Views/Shared/2col.cshtml" cannot be requested directly because it calls the "RenderBody" method.

Ho can I fix That?

Thanks per advances,

Yannick

LanguageSwitcher

Hi

I wonder how is it possible to have a language switcher in all pages? like switching between English, French,...

Thanks

Mr CMS ACL

Goodday,
I need a brief explanation of the ACL and its rules so as to know how to apply them correctly.

StackOverflowException was unhandled

Hi,

Error getting site replication processing..

ERROR DETAIL :
http://..../System.StackOverflowException was unhandled
Message: An unhandled exception of type 'System.StackOverflowException' occurred in TextPageProxyAssembly

Consuming data from external source

Hello there,

I'm trying to find the best way to consume external data, it could be with C#/Json or Jquery/Json. I would create an App for it, my question is: Does MrCMS has in his built any libary or something related to help me in this decision?

Add FAQ app

Hello
I would like to add FAQ app sample as described in documentation "Creating your first app"
i have add all files but the app is not added in the admin menu how can i do that ?

Thanks

Jquery Globalize is missing

Hi,

I'm download your MrCMS today.
All works, but (I switch locale to Slovak) and see Globalize is missing.
Where is?

Entities Items Deletion

Good day,
I want to show list of deleted entities items but noticed that NHibernate Queryover or Query automatically ignores any entry or item that has been marked as IsDeleted. I want to show list of both deleted and not deleted entries. I have checked the MrCmsController and MrCmsSession but couldn't located where to disabled the IsDeleted clause.
Where was the IsDeleted clause located in MrCms library.

Cheers

Need this function.

Can provide such a function?
make choose pages generate static pages.

Thanks.

Issue with download of uploaded file to forms

File download doesn't work due to bad path.

MrCMS.Web\Areas\Admin\Views\Form\Postings.cshtml

Line 39: remove '/' from before @posting.Get

MrCMS.Web\Areas\Admin\Views\Form\ViewPosting.cshtml

Line 26: remove '/' from before @value.Value

Navigation

Hello, I have a few questions,

  1. In reference to MobileFriendlyNavigation.
    How do i let it display more than 3 sets of sub categories. I cant seam to get more than 3 dropdowns.
  2. is there a reason you are using Niject MVC 3? I have upgraded to the MVC 5 and seams to work fine.

AD integration

I was experimenting with mrcms as an intranet site to execute soap webservices who should execute powershell in the backend. But as we have no azure AD and locale created accounts is not manageble is there any possibility to ad regular Active Directory groups for roles? Or is there any documentation on the current security stuff and howto ad this option?

How to user roles for menu item display

Hello,

I would like to only display a menu node if the user has role access to that page, and not show the menu item if user does not have permission to view that page, so basically if a user is logged in i would like to show only the menu items his role allows. I am using MobileFriendlyNavigation app. Any help would be appreciated.

Missing mrcms.config

Version 0.5.1 stores system settings in mrcms.config and connection string in ConnectionStrings.config but those files haven't been included in the project yet. That causes an exception and the web project can not be run at the first time after upgrading.

New Install

Not sure if I am missing something, but the default search is not working. I tried it on a brand new item and 'nothing'. no submit, nothing.

I also tried the 'slider widget' and the left and right nav on images are not working. It goes to the next image by itself, stops when I hover, but the nav does not work.

And one more thing, the image upload to the gallery has nested up and down scroll bars, nothing major, and I will dig into the code/design to see whats up, but thought I'd share a newbie install.

Menu navigation

thought
"We do have a better navigation app we have built which we may release which does multi layered navigation menus as well as mobile navigation. If you are interesting I can try and share this with you."

thought
Apr 20 at 2:38 PM
This week we will release Mr CMS 0.5. Will also make this available for you.
Apologies for the delays.

Is the multi layered navigation include in 0.5.? I don't see it.

Stable?

Is all the stuff here being placed in MrCMS stable, is it in the master, and has it been added ti ecommerce?

_BaseLayout not rendering "HeaderLeft"

Hi Guys,

_BaseLayout.cshtml does render the "Header Left" area and instead has an hard coded mrcms-hat.gif.
This caused no end of confusion trying to implement a simple theme customisation to sell this CMS to my boss for a new project.

Easy enough fixed by adding:

@{ RenderZone("Header Left", allowFrontEndEditing: false); }

But, am I missing something, should I be creating a custom Layout by default?

What is the future roadmap?

Hello,

Curious as to what the road-map is for the project, as maybe i can help you move forward. I was thinking of making bootstrap, and scripts global in the project with grunt and bower, This will make things easier for update of the project, and we can add a provision for grunt and bower in the apps, and have a standard to the content folder of each app, and each app can have its required files that would override any global if present. This would also open the door for future themeing. Just a suggestion. Please let me know if i can be of assistance.

Confused on multiple sites within mrcms

So if I add multiple sites within mrcms, would i then publish the same codebase for that other site?

Can you give a brief description of how themes work for multiple sites? I figured out how to override the theme by keeping the same file structure as the root apps folder. How would that work when adding a site? It seems like there can only be a single theme for all sites within mrcms.

Thanks

No pages when creating new site second site

Hi,

I just tried to create a new site but it doesn't have any default pages (like login for instance) so I can't login to the site. I deleted the site and created another new site, this time copying the pages from the existing site and I'm able to login and then delete the content on the site I don't want. This seems kind of weird.

Am I missing something or is creating 'default' pages like login just not something has been done yet?

Thanks,
Joe

Mr CMS Caching

While working and testing my app, I sometimes need fresh installation of Mr CMS, so I do delete the content of App_Data and sometimes the database but the installation setup is not activated immediately instead different errors do pop up depending on various factors. I noticed that the settings information is cached somewhere and I have to wait for the cache to expire before the fresh installation is activated. Where is the caching stored or how can I burst the cache manually

SubUsers

Hello, i was wondering if you could give me a direction to using multi-tenancy within MrCMS, I would like to have only one Site but have clients as companies with users that are part of the companies. and each company administers their users. Any information pointing me in the right direction would be great. and when i complete this project i would be happy to contribute it to the community.

Thanks

Ninject and WebAPI 2

I am having issues using ninject with WebAPI 2.

I created a webapi on my App but am having difficulty in using Ninject Dependency injection on the ApiController.

I have added Ninject.web.WebApi and Ninject.web.WebApi.WebHost, it didn't work out. I realised that the typical NinjectWebCommon.cs content was added using MrCMSKernel.cs. I tried creating another Ninjectdependencyresolver but it still didn't work out. Have anyone tried creating a webAPI2 on this CMS.

Implementing reCaptcha

Hello,

I've implemented recaptcha in MrCMS. For now, it's only working on the registration page but that's just because I haven't bothered with the forms feature.

So, my question is, if I were to implement this more fully and create settings for the recaptcha site and secret keys, where would you all like those settings? Should they be site settings or should they be somewhere else?

Thanks,
Joe

change the ORM

hello,
do you have plan for changing ORM in this solution.
for example use Entityframework instead of NHibernate
and what is best approach to change that manually.

Page Publish Date throws error on save with en-US culture

Hi,

We have run into an issue where the chosen Site Culture isn't used on the PublishOn textbox when editing a page. It is set in the \Areas\Admin\Views\Shared\EditorTemplates\DateTime.cshtml as "{0:dd/MM/yyyy HH:mm}". This causes the current PublishOn value to be, for example, "20/12/2015 17:00". This results in a validation error of "The value '20/12/2015 17:00' is not valid for Publish On" because our site is set to use the en-US culture so the validation thinks that there should be a month in the first set of digits and 20 is obviously not a month.

The fix for this is very simple. Change the format specified in the DateTime.cshtml to be "{0:g}", which is the General Date Short Time specifier. This will cause the format to be automatically chosen based on the culture. The culture is used when the PublishOn is validated so it needs to be used on the textbox itself.

Note, if you select a time using the jquery date picker, the correct format is used for the chosen culture.

Also, when the culture is set to en-US, the page tries to load "/Areas/Admin/Content/Scripts/lib/jquery/ui/i18n/jquery.ui.datepicker-en-US.js" but this file doesn't exist, probably because en-US is the default culture of the jquery.ui.datepicker library. I'm not sure where this file is being called so the only fix I have for this issue is to create the file. Ideally, whatever is calling the file shouldn't call a culture-specific file when en-US culture is used.

Thanks,
Joe

Create database not working properly for My SQL database

Hi Guys,

It seems like the "Create Database if does not exists" is not working properly, even if it is unchecked the application tries to create the database, I have made the fix as well, could you please help me to be a contributor ? so that I can keep on working

Page Templates

Is there a place that "Page Templates" is explained? We can't seem to get them to work... maybe we are not understanding how they are supposed to be used? But we created two and tried to assign them to some pages and after saving those pages we get a 500 error page returned.

Also, how do you delete "Page Templates"? There doesn't seem to be a DELETE button on the Page Templates page '/Admin/PageTemplate'

PathTooLongException due to thumbnail generation

Hey! I'm building my personal blog with MrCMS, however I ran into a problem which I believe is due to thumbnail generation and the path length exceeding the maximum length allowed by Windows.

Here is how to reproduce it:

  • Upload a image with a long name, and when it gets copied to the content folder or MrCMS, its path is exactly 260 characters.
  • The upload will succeed.
  • Wait for a second
  • The Media Category will throw a PathTooLong exception due to the generation of thumbnails, whose names contain the added _h{size}_w{size} suffix, which plus the original filename exceeds the maximum length.
  • This exception is uncaught and will keep crashing Media Category even after restart, and can be only resolved by manually deleting the uploaded jpg in the content folder.

This was observed when I deleted the old version of my image "aaaaaaaa...a.jpg" from the CMS, but it was not actually removed from the content folder. I then uploaded a new version of the image (with same filename, "aaaaaaaa....a.jpg), which MrCMS appended a '1' at the end of the filename to disambiguate, forming the filename "aaaaaaaaa...a1.jpg" and that added '1' caused its thumbnail
generation "aaaaaaaa...a1_h100_w100.jpg" to fail due to path too long.

It was a bit confusing to me as to what happened because the first upload succeeded but the second upload failed. And also in my opinion it would be better to have stronger checks against this, as the problem is severe enough to cause the entire MediaCategory to crash continuously. The CMS handles PathTooLong exception well when the uploaded image itself has too long path, but not when its thumbnail has too long path.

crash

Thanks for your patience :)

Theme integration (AdminLTE)

I have successfully integrated AdminLTE to MrCMS and its very beautiful, I was thinking of writing an article about it or submitting a update that will make AdminLTE default theme since it is open source as well.

At the moment, am using it as a theme but was hoping it can be the default theme from the project directly. I will like to contribute on that.

Cheers

MrCMS Status

Hey, What is the status of this repo? is this dead now?

about Comment APP

when I had added the commenting App,and login my web.
the page wasn't show 'CommentingUserAccount/username.cshtml' form;
I guess it need be added 'app/core/views/Pages/UserAccountPage.cshtml'
so, is it need to manual adding?

Using Database for Settings

Hello, I was wondering with the new version am i able to use the database to store settings. and Stats. I am more comfortable with Sql than json.

Sub-themes - is it possible?

We're in the process of developing a number of websites using MrCMS with Ecommerce where we are using themes to override the default behaviour of the site - everything so far can be done in the context of a theme without having to edit the core site files.
We want to use a single code base and deploy to each site using deployment tools (currently Visual Studio) and MrCMS works really well for this setup.

As the number of sites grows we will have the issue where most sites will have the exact same functionality but will only require a different CSS file and possibly one or two changes to a cshtml file.

As I understand it, each site will require its own theme folder. If we want to change something on all sites we'll need to edit all the files in all the theme folders. As we increase the number of sites these small changes will add up and we lose the easy to manage single code base (not to mention code duplication).

If we were able to create sub-themes we could create a base theme for all websites of a given type e.g. blogs, ecommerce etc and apply that theme to them all. For styling changes and minor changes to the individual sites we then apply a sub-theme which works just like a normal theme overriding everything from the base theme.

I haven't investigated how the theme inheritance works but if this sounds feasible and something you might consider accepting into the core project I would be happy to create a pull request to investigate.

Thanks

Chris

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.