YodasMyDad / Dialogue

Forum package for Umbraco v7.1 onwards
54 stars 31 forks source link

Enhancement: Category Types #36

Open epernst opened 9 years ago

epernst commented 9 years ago

The current system is a basic discussion/forum system, and because the current programming structure is as good as it is, then I believe that it will not be that difficult to change it into something which is a lot more than a basic forum. Blogs, pages, groups and media are basically just the same. A post with replies. Just with different characteristics and additional features.

Category Type A way to define category "templates". This way the different characteristics of category is defined centrally (from Umbraco). Through these templates you can configure additional features and functions allowed for the category types, and by this change the way the category behaves toward the users. Some of the categories are not much different from the current discussions, but some (like media and jobs) will require a quite lot of additional programming.

Category types could be:

Discussion category The basic configurable category. A post with comments and several features to allow for likes/votes, questions(with answers).

Personal wall category Basically just a discussion category, which is automatically added to all member profiles. But the member may disable the wall entirely, or just disable other members to post on the wall. Whenever someone writes on a personal wall, then it should be possible to define a privacy setting to say who can see the post:

Blog category A category with blog posts for members, either personal/profile blogs, or expert blogs. Personal/profile blogs use own template with minimal configuration options. The expert blogs follow the site layout. Blog category may as default only have blog sub categories and blog mirror categories as their "children". Additional blog features/functions required in Dialogue to handle blogs:

Blog mirror category Is category typically under either a master blog category, user profile or page, with a mirrored RSS-feed for the users main blog. The blog posts will/may be shared to the users profile as an activity, as well as the page/main blog category, as well as the activity wall of the category members. Additional blog features/functions required in Dialogue to handle blogs mirrors: Define the mirrow:

Blog list category A simple list of URL links to be defined under a blog, displayed on the blog sidebar. A list is a very simple data structure with a title, a link and eventually a short description. The blog list can be edited by the blog owner/administrator. It is not possible to have sub-categories under a blog list category.

Media category Categories for having "media albums", which can be divided into photos, downloads, documentations etc. Posts in this category type are basically a normal post, with title, content and one or more "attachments" (configurable). The media file may either be uploaded, or just a link to an external URL. Specific for downloads/documents:

Group category A group could be special interests groups (NAV freelancers, Friday jokes, Danish Consultants, local user group chapter etc.). A group is basically a discussion page, with option of Updates and Questions (one or the other or both). A group may have media albums and wikis as subcategories.

Page category Typically a company or product "fan page", similar to how pages works on Facebook. A page again may have jobs, forum, blog, downloads, documentation, photos, videos etc. as sub categories.

Job offer category A category to allow members to add their job offers is an easy way to allow sites to make a little extra money on their site, by allow companies and recruiters etc. to post jobs, but can also just be a free service to their members. Job categories can be added as a main category, or as sub categories to pages. If in a page sub category, then jobs added here, may or may not show up in the site-wide job overview. Ability to add this option could be like an extra service "active services", the page owner can be charged for, or given for free or for points. Besides the normal content, then it should be possible to setup a typically job specifications:

The job poster may be changed or it can be free according to the site/category settings. If the page already has a paid for profile, then its free for them to add basic job posts. If the poster is a recruiter who as a "every post counts" subscription, then he is not charged for posting full jobs ads under pages for subscribing companies. This is to give a little incentive to recruiters to "sell" subscriptions/sponsorships for us.

Job Poster with special permissions (sponsors/advertisers) can add extended company information:

As a default post replies are only visible to the poster, and administrators in the category. No activity is reported, but notifications are sent. But there should be an option recommend/share job posts, just like any other posts (share to Facebook, LinkedIn, Twitter, email etc.). Additionally a member may apply for a job directly from the post. The application is basically a "private message" (with auto-email to the job poster) - and will contain text from the applicant, plus link to the applicants member profile, as well as optional attachments (CV, resume etc.).

Additional features for job categories, could be the option of importing jobs using "Job Posting Standards". I don't remember the names of these standards right now, but they are used and supported by many job boards systems.

Job request category This category allows a member to post "I looking for a job". A job request may be anonymous (only highlights are selected) and visible upon request, visible to recruiters only, visible to connections, visible to followers/subscribers or it may be visible to public. The member may add link to LinkedIn, attach CV/resumes, as well as show their full professional profile (with job skills etc.). The foundation for the job requests are an extended professional profile, where the user specify their skills and past experience etc. I'll describe this later in this document, as it is not directly related to the category.

Category type characteristics The individual characteristics/settings of the category types could be:

Master-types: The more special category types like Wiki (with a Wiki-syntax editor) or Events (with Dates/Times/Places) would have to be defined as subtypes, with individual "templates". Each additional master-type would have to be defined through programming, not setup. The way I'm imagine this done, is similar to the way "Member Types" are defined in Umbraco. The settings are defined in the Umbraco "Dialogue Category Types" section, and instead of "Member Can Edit" and "Show on profile" it would be:

Category settings Besides the current settings, then the category inherits some of the settings from the Category Type, as per above.

Additional settings: Category Owner

And I'm sorry for the very long "issue", it's based on some notes that I've been doing over some time. Looking forward to hear what you think? Is it too much or do you think we would get too far away from the "simple" discussion forum we have now? I'm sure that there are packages or projects out there to do some of the standard things for blogs and wiki's etc. And just having the framework in place for these category types, would make it possible to design additional types.

YodasMyDad commented 9 years ago

This should all be easily done just using the standard umbraco templates. Using route hijacking as we do, the actionresult in the controller matches the template name.

Just create a new template in Umbraco (Creates a view) for the Category and then add an ActionResult with the same name in the CategoryController. Then you can apply custom logic and pass custom models to your templates.

You can then apply filtering logic for 'Category types' by the template name. I'm guessing create an enum to mimic your templates created or something.

I like all these ideas but I think majority are specific to your site and probably not something I'll implement in the short term.

epernst commented 9 years ago

Yes I know that especially the Job "Category Types" might fall outside of what most communities want. But as I wrote, if we just have the "framework", then it was my expectation that these more specific types could be done as "PlugIns" for Dialogue... :) But the ability to use a category as a blog, that sounds to me like a lot of communities would like.

What you write above about using the standard Umbraco templates sounds good, even when I don't understand exactly how to do. Can you recommend some links to pages where I can read more about this. Because I didn't think that it was possible to use both templates and themes.

YodasMyDad commented 9 years ago

Heres a starting point

http://our.umbraco.org/documentation/Reference/Templating/managing-templates

But it doesn't state anything about route hijacking, but you can get the idea from the code. The Actions name just matches the template. And yes, we currently use templates and themes so it's easily possible.

epernst commented 9 years ago

Thanks a lot will give it a good study. I used to be quite strong in Umbraco, but it's 4-5 years since I've last used any of it. The only reason why I'm back with Umbraco is Dialogue. So I'm "a little" rusty!