Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Various invalid character fixes

  • Loading branch information...
commit 4ee23d2ab0bd3ebf7f40172f6f0d534b7309d655 1 parent 458d706
OrchardCMS authored
View
8 Documentation/Alternates.markdown
@@ -19,10 +19,10 @@ All templates for alternates must reside in the _Views_ folder. The _Views_ fold
Shape type | Template Folder
-------------- | ----------------
-Content item | _Views\Items_
-Parts | _Views\Parts_
-Fields | _Views\Fields_
-EditorTemplate | _Views\EditorTemplates\\[template type folder\]_ (For example, an **EditorTemplate** for a part is located at _Views\EditorTemplates\Parts_.)
+Content item | _Views\\Items_
+Parts | _Views\\Parts_
+Fields | _Views\\Fields_
+EditorTemplate | _Views\\EditorTemplates\\[template type folder\]_ (For example, an **EditorTemplate** for a part is located at _Views\EditorTemplates\Parts_.)
All other | _Views_
For example, to create an alternate template for the **Tags** part, you can add a template to the _MyTheme\Views\Parts_ folder. However, because the underscore can be converted to either a dot (.) or backslash (\), you can also create a template in the _Views_ folder and add _Parts._ to the beginning of the name. A template at either _Views\Parts\Tags.ShowTags-BlogPost.cshtml_ or _Views\Parts.Tags.ShowTags-BlogPost.cshtml_ will map to a shape named `Parts_Tags_ShowTags__BlogPost`.
View
10 Documentation/Automation-test-guidance.markdown
@@ -14,13 +14,13 @@ Though Selenium does a great job for us to generate C# test code, however, many
If you see common steps/verifications in more 2 test cases, you'd better to think moving the steps to a helper class (classes derived from class HelperBase).
# Create a simple test by using the test framework
-Let's say you are going to create a test which verifies a link named Admin is presented, for Administrators. Below is the tests based on the test framework:
+Let's say you are going to create a test which verifies a link named "Admin" is presented, for Administrators. Below is the tests based on the test framework:
[TestMethod]
public void CanNotAccessAdminPanelTestHelper()
{
- TestLibrary.UserHelper.LogOn(Administrator”, “0123456);
+ TestLibrary.UserHelper.LogOn("Administrator", "0123456");
Assert.IsFalse(selenium.IsElementPresent("link=Admin"));
}
@@ -73,11 +73,11 @@ If you need throw an exception from your test code, indicates test code error. P
if (owner != null)
throw new CaseErrorException("Set owner is not implemented yet!");
-
+ ...
}
-If a null reference is passed to parameter title, this is a bug in test code. In order to distinguish test bugs from product bugs, we'd better throw an instance of CaseErrorException, with the original exception as its inner exception. This is useful in controller test, because the test code calls controllers directly, we need a way to distinguish test bugs from product bugs, while investigate test failures.
+If a null reference is passed to parameter "title", this is a bug in test code. In order to distinguish test bugs from product bugs, we'd better throw an instance of CaseErrorException, with the original exception as its inner exception. This is useful in controller test, because the test code calls controllers directly, we need a way to distinguish test bugs from product bugs, while investigate test failures.
## Class TestLibrary.Consts
Please put all constants to this class, for e.g. the default administrator name/password in the test database.
@@ -92,7 +92,7 @@ Please check the following article to understand how data driven tests is done i
<http://www.julmar.com/blog/mark/PermaLink,guid,e47f09cc-e893-46a6-aa13-7202d4e50986.aspx>
## Running tests against different browsers
-In order to run all tests on different browsers, and reuse the same test logics. The test code saves browsers settings in the excel file. Test team developed a script, which adds browser settings, such as *opera”, “*iexplore and e.t.c to the excel files. So in test case automation phase, just put test data in the excel files is fine. The script is run before any tests, which adds browser settings to all excel files and copy the files to %TestOutputDir%.
+In order to run all tests on different browsers, and reuse the same test logics. The test code saves browsers settings in the excel file. Test team developed a script, which adds browser settings, such as "*opera", "*iexplore" and e.t.c to the excel files. So in test case automation phase, just put test data in the excel files is fine. The script is run before any tests, which adds browser settings to all excel files and copy the files to %TestOutputDir%.
There is another way to launch different browser, selenium remote control sever has a switch called -forcedBrowserMode, this switch overrides settings (hard code brower string) in ocde. This is also quite convenient while debugging test failures.
View
26 Documentation/Bug-bash-1-18-2010.markdown
@@ -1,8 +1,8 @@
* Archive data is not displayed in all themes (e.g. classic theme, green theme)
-* Need a Preview button for editing pages and posts
-* (loudej) Need to bring back the Delete this draft operation on the page/post editing page (perhaps as a small link to deemphasize it, ala WordPress)
+* Need a "Preview" button for editing pages and posts
+* (loudej) Need to bring back the "Delete this draft" operation on the page/post editing page (perhaps as a small link to deemphasize it, ala WordPress)
* Theme Preview button to be implemented
* (heskew) Implement Javascript Datetime Picker for post/page scheduling UI
* (suhacan-FIXED) Need ability to delete a user in Manage Users
@@ -28,9 +28,9 @@
* Bulk operations on Manage Blog page (e.g. delete post) (put same drop downs that we have for pages on top of blog list)
-* Bulk operations on Manage Blogs page, like CMS pages (put same drop downs that we have for pages on top of blog post list)
+* Bulk operations on Manage Blogs page, like CMS pages... (put same drop downs that we have for pages on top of blog post list)
* Ability to filter posts by published/draft/schedule on Manage Blogs , like CMS pages
-* How to Unpublish a post on the Manage Blog page? Like CMS pages
+* How to Unpublish a post on the Manage Blog page? Like CMS pages...
* Blog Details Page needs UI cleanup (placement, icons need text), also need ability to View blog from here:
* Media list is inconsistent: all other contents have separate edit links. For media, you click on the image name.
* All screens that have bulk actions have a header item in the drop down. Media has delete only (which also redirects to the root)
@@ -41,17 +41,17 @@
* Finalize this text: Possible text about setting up and managing a blog goes here.
-* New Post: helper text for Tags (comma-separated)
+* New Post: helper text for "Tags" (comma-separated)
* Finalize this text: "X" Allow new comments, Enable to show the comment form. Disabling still allows the existing comments to be shown but does not allow the conversation to continue.
-* Your Site in Admin header should render Site Name setting instead (should be separate from preview site link?)
-* Rename Manage Folders to Manage Media
+* "Your Site" in Admin header should render Site Name setting instead (should be separate from "preview site" link?)
+* Rename "Manage Folders" to "Manage Media"
**Do Later:**
* What UI do we want for change ownership? Do we want to display owner textbox on every content item?
-* If only one blog, Manage Blog goes to blog details page. Else goes to list of blogs (as it is today). May also need a way to get to a specific blog from the admin panel menu.
+* If only one blog, "Manage Blog" goes to blog details page. Else goes to list of blogs (as it is today). May also need a way to get to a specific blog from the admin panel menu.
Stylesheet applied to TinyMCE content should be style of applied theme.
* Revisit whether we should validate duplicate slugs at publish-time (log a bug for this)
* Uploading an image file should attempt to extract title or subject from embedded meta-data and make those the values for the image name and caption.
@@ -61,7 +61,7 @@ Stylesheet applied to TinyMCE content should be style of applied theme.
**Untriaged:**
* None
-* XMLRPC/LiveWriter support seems to be broken. I found Louis' previous instructions, which said to type http://localhost:<port>/xmlrpc. However, I tried that and it didn't work. Any ideas?
+* XMLRPC/LiveWriter support seems to be broken. I found Louis' previous instructions, which said to type "http://localhost:<port>/xmlrpc. However, I tried that and it didn't work. Any ideas?
**No repro:**
@@ -71,25 +71,25 @@ Stylesheet applied to TinyMCE content should be style of applied theme.
**DONE:**
-* (erikpo-FIXED)When in an archive page, the archive navigation with the collapsible years should be there too. Here's what I was doing: I clicked on the January 2010 archive link from my blog, then I clicked the 2010 link. That didn't give me a way to get back to January. Two ways this can be fixed is by showing subarchives links under where you are (2010 would have a link for January) or you have the full archive menu there at all times (that's probably simpler).
+* (erikpo-FIXED)When in an archive page, the archive navigation with the collapsible years should be there too. Here's what I was doing: I clicked on the January 2010 archive link from my blog, then I clicked the "2010" link. That didn't give me a way to get back to January. Two ways this can be fixed is by showing "subarchives" links under where you are (2010 would have a link for January) or you have the full archive menu there at all times (that's probably simpler).
* (rpaquay-FIXED) Attempting to access an incorrectly cased page results in a null ref exception: create a page with the slug "About" (uppercase A) then try to access "/about" (lowercase a).
* (erikpo-FIXED) Finish blog archive and remove fake archive data
* (rpaquay-FIXED) Bug: Exception: When creating a new post (no theme applied) - System.InvalidOperationException: The view 'NotFound' or its master was not found.
* (rpaquay-FIXED) Bug: Draft posts affect the number of posts listed for a blog (on front-end and back-end)
* (suhacan-FIXED) Bug: When saving a draft post, should redirect to/Edit admin URL for that post
-* (suhacan-FIXED) Bug: When publishing a post from the edit post page, should redirect to the list of posts
+* (suhacan-FIXED) Bug: When publishing a post from the "edit post" page, should redirect to the list of posts
* (suhacan-FIXED) Bug: Post Publishing Now button on Blog Details page throws 404 error
* (heskew-FIXED) Blog slug generation: "!!!Brad's Blog!!!" -Brad-s-Blog- (remove beginning/trailing slashes)
* (heskew-FIXED) Blog slug generation: "todo: (heskew) need path to here"
* (heskew-FIXED; still need to be selective on when to show the manage bits) When I'm on a post's front-end page, logged in as an admin/author/owner with the default blue theme, I don't have a direct link to edit the post.
* (rpaquay-FIXED) Page front-end has weird URLs: http://localhost:30320/Pages/Page/Item?slug=About (it used to work) (heskew: ISlugConstraint functionality hasn't been hooked up since cms pages migration)
-* (rpaquay-FIXED) Why do published posts still say Draft on the blog front-end page? (bug <- related to create as published problems?)
+* (rpaquay-FIXED) Why do published posts still say "Draft" on the blog front-end page? (bug <- related to create as published problems?)
* (rpaquay-FIXED) Implement "true" versioning for blog posts (we currently only keep the latest version of posts in the DB)
* (heskew-FIXED) We need to use IDs instead of slugs for admin URLs where slugs aren't guaranteed to be unique
-* (rpaquay-FIXED) Implement “?? comments” on: Manage Blog (for blog), Blog Details Page (for posts in a list) - both admin and front-end (for now we are going to append aspect UI in some deterministic order at some placeholder in a template, similar to what we do for aspects on a content item editor today). Will tackle the bigger problem of UI composition and placement within a template later (not sure if before Mix?). "xx Comments" in admin for blog post summary should be a link to comments page filtered on the blog post. FIX COMMENTS ON BLOG POST TO BE CONSISTENT! (Punt on blog for now)
+* (rpaquay-FIXED) Implement "?? comments" on: Manage Blog (for blog), Blog Details Page (for posts in a list) - both admin and front-end (for now we are going to append aspect UI in some deterministic order at some placeholder in a template, similar to what we do for aspects on a content item editor today). Will tackle the bigger problem of UI composition and placement within a template later (not sure if before Mix?). "xx Comments" in admin for blog post summary should be a link to comments page filtered on the blog post. FIX COMMENTS ON BLOG POST TO BE CONSISTENT! (Punt on blog for now)
View
5 Documentation/Creating-a-module-with-a-simple-text-editor.markdown
@@ -22,14 +22,15 @@ After you accept the license terms, Orchard is installed.
Open a command window and change the current directory to point to the root of the site. Then run `bin\orchard.exe`.
-![Figure 6. The Orchard command line](../Attachments/Creating-a-module-with-a-simple-text-editor/s_07_OrchardCLI.png)
+[![Figure 6. The Orchard command line](../Attachments/Creating-a-module-with-a-simple-text-editor/s_07_OrchardCLI.png)](../Attachments/Creating-a-module-with-a-simple-text-editor/07_OrchardCLI.png)
Type `help commands` to get the list of available commands. For now, only the `help` and `setup` commands are available. However, as Orchard is developed and modules are activated, new commands will become available. (The Orchard command-line executable actually discovers the commands from the modules inside of the application.)
To set up the site, enter the following command:
- setup /SiteName:Orchard /AdminUsername:admin /AdminPassword:123456 /DatabaseProvider:SqlCe
+ setup /SiteName:Orchard /AdminUsername:admin /AdminPassword:123456
+ /DatabaseProvider:SqlCe
This is equivalent to setting up the site from the web interface.
View
8 Documentation/Pages-editing.markdown
@@ -15,14 +15,14 @@ The slug rules are described here: [Slugs](slugs).
## Orphaned contents
When the user switches the page to a layout that has less zones than the previous ones, he is potentially creating orphaned contents. We don't throw that contents away or try to merge them. We also don't try to reassign if the zone names are different, even if the number of zones is the same.
-Instead, we display the following message in the top alert zone: You have switched to a template that does not have the same content zones as the previous one, resulting in some of your contents not showing up on your site. You can either delete that content or copy it into another zone.
+Instead, we display the following message in the top alert zone: "You have switched to a template that does not have the same content zones as the previous one, resulting in some of your contents not showing up on your site. You can either delete that content or copy it into another zone."
-In the admin screen for the page, we show the orphaned contents with an alert This content is assigned to a zone that does not exist in the current template. Please delete it or copy it to another zone.
+In the admin screen for the page, we show the orphaned contents with an alert "This content is assigned to a zone that does not exist in the current template. Please delete it or copy it to another zone."
-When the page is saved, we delete empty orphaned contents. By empty, we mean empty of contents, not necessarily empty string: &lt;p&gt;&lt;/p&gt; is empty contents. Warning, &lt;img src=foo.gif/&gt; is not.
+When the page is saved, we delete empty orphaned contents. By empty, we mean empty of contents, not necessarily empty string: &lt;p&gt;&lt;/p&gt; is empty contents. Warning, &lt;img src="foo.gif"/&gt; is not.
## Preview
-When the user clicks the Preview button, we need to create a draft. We've considered making that draft temporary and not a full draft. We also talked about the potential concurrency issues associated with this. Those concurrency issues actually also exist when saving a draft, the difference here is that the operation is implicit.
+When the user clicks the "Preview" button, we need to create a draft. We've considered making that draft "temporary" and not a full draft. We also talked about the potential concurrency issues associated with this. Those concurrency issues actually also exist when saving a draft, the difference here is that the operation is implicit.
For the moment, we'll ignore the concurrent editing scenarios and let the latest draft, implicit or explicit, win. There is still always only one draft at any given time.
Clicking preview is exactly equivalent to saving as a draft and then navigating to the url for the draft in a new window. The draft is not automatically deleted.
View
8 Documentation/Slugs.markdown
@@ -2,14 +2,14 @@
The slug admin UI shows the first part of the URL as read only and follows that immediately with a textbox that is wide enough to accommodate long slugs.
We should explain what a slug is and what it's used for right in the admin UI as many users will not be familiar with that notion:
-A ‘slug' is what Orchard uses to build a unique and readable address for your pages. You can usually trust the system to build one for you from the title or you can tweak it to make it shorter or more or less explicit, at your convenience. An example of slug is 'about-us'.
+"A ‘slug' is what Orchard uses to build a unique and readable address for your pages. You can usually trust the system to build one for you from the title or you can tweak it to make it shorter or more or less explicit, at your convenience. An example of slug is 'about-us'."
## Validation
* A slug can't be empty. The slug that we store in the database should never be empty, but the user is allowed to not enter a slug. In that case, we generate one for him (see below).
-* A slug can't be more than (some arbitrariness here) 1000 characters, which allows for some reasonable additions such as /json or the first parts of the url without a great risk of hitting IE's 2048 char limit for the URL. Message: Please keep the slug under a thousand characters.
+* A slug can't be more than (some arbitrariness here) 1000 characters, which allows for some reasonable additions such as /json or the first parts of the url without a great risk of hitting IE's 2048 char limit for the URL. Message: "Please keep the slug under a thousand characters."
* A slug can have international characters and should conform to the RFC for IRI (International Resource Identifier): [RFC 3987](http://tools.ietf.org/html/rfc3987), which is supported by all modern browsers. A slug can include slashes (/) but each token between slashes must conform to RFC 3987 and not include any of the following characters: ":", "/", "?", "\#", "\[", "\]", "@", "\!", "$", "&", "'", "\(", "\)", "\*", "\+", ",", ";", "=", " ".
-Please do not use any of the following characters in your slugs: ":", "?", "\#", "\[", "\]", "@", "\!", "$", "&", "'", "\(", "\)", "\*", "\+", ",", ";", "=". No spaces are allowed (please use dashes or underscores instead).
+"Please do not use any of the following characters in your slugs: ":", "?", "\#", "\[", "\]", "@", "\!", "$", "&", "'", "\(", "\)", "\*", "\+", ",", ";", "=". No spaces are allowed (please use dashes or underscores instead)."
## Slug generation
@@ -21,6 +21,6 @@ The slug can be changed even after the resource has been created. This is somewh
Note that we allow forward slashes into the slug, which allows the user to manually introduce some hierarchy even though we don't support parent pages.
-The slug prefix is built from the application path and the currently configured routes for the module. For example, if the application URL is http://mydomain/mysite and the URL for the resource with slug my-slug is ~/pages/my-slug, we prefix the slug input field with http://mydomain/mysite/pages/.
+The slug prefix is built from the application path and the currently configured routes for the module. For example, if the application URL is "http://mydomain/mysite" and the URL for the resource with slug "my-slug" is "~/pages/my-slug", we prefix the slug input field with "http://mydomain/mysite/pages/".
When the generated or manually entered slug is discovered by the server to not be unique, it should be made unique by adding a number after it.
View
16 Documentation/Templates.markdown
@@ -12,17 +12,17 @@ Currently, we have only content zones, so a template can look like this:
href="<%= ResolveUrl("~/Content/StyleSheet.css") %>" />
</head>
<body>
- <div class=header>
- <%= Html.Include(header) %>
+ <div class="header">
+ <%= Html.Include("header") %>
</div>
- <div class=centerContentZone>
- <%= Html.IncludeZone(Content) %>
+ <div class="centerContentZone">
+ <%= Html.IncludeZone("Content") %>
</div>
- <div class=rightSidebar>
- <%= Html.IncludeZone(Right sidebar") %>
+ <div class="rightSidebar">
+ <%= Html.IncludeZone("Right sidebar") %>
</div>
- <div class=footer>
- <%= Html.Include(footer) %>
+ <div class="footer">
+ <%= Html.Include("footer") %>
</div>
<%= Html.IncludeAdmin() %>
</body>
View
4 Documentation/Testplan.markdown
@@ -25,7 +25,7 @@ a) Save predefined data in an Excel file, and utilize data driven test features
b) Randomly generating test data by a data generating tool, and combine with the power of pair-wise generation. We are able to generate as many valid data as possible on the fly.
We'll use the approach a) to perform data generating operation, because we are not able to share tools to public community yet.
4. Controller test
-Actions in all controllers have unit tests. Parameters of action methods are generated based on approach described in Data driven tests.
+Actions in all controllers have unit tests. Parameters of action methods are generated based on approach described in "Data driven tests".
5. Manual test.
Manual tests are designed to perform usability testing, to see whether the operation work flow make sense to users. These manual tests documents are maintained in VSTT, in this way we are able to combine manual & automation test result in a single test pass.
@@ -33,7 +33,7 @@ Manual tests are designed to perform usability testing, to see whether the opera
6. Stress test & Performance test
# Communication Plan
-Bugs are tracked in Issue Tracker of http://orchard.codeplex.com. Everyday testers get latest code from codeplex by subversion, and perform the tests. Since bugs are tracked in codeplex, we are able to export bug status to Excel, view the bug trends, and make the sign-off decision.
+Bugs are tracked in "Issue Tracker" of http://orchard.codeplex.com. Everyday testers get latest code from codeplex by subversion, and perform the tests. Since bugs are tracked in codeplex, we are able to export bug status to Excel, view the bug trends, and make the sign-off decision.
In the beginning few iterations, testers are not familiar with product features. Testing are started 1 iteration behind development, that is, testers perform testing on features finished, while developers work on features in next iteration. Latest finished features are fed to testers in iteration post-mortems. In the later iterations, while testers get familiar with product features, testers should be able to work in the same iteration as developers. Ideally, testing works just 1 or 2 days behind development.
View
50 Documentation/Walkthrough-Writing-An-Orchard-Module.markdown
@@ -1,5 +1,5 @@
-Orchard is designed with modular extensibility in mind. The current application contains a number of built-in modules by default, and our intent with writing these modules has been to validate the underlying CMS core as it is being developed - exploring such concepts as routable content items, their associated “parts” (eventually to be bolted on using metadata), UI composability of views from separate modules, and so on. While there are many CMS core concepts that remain unimplemented for now, there are still many things you can do with the current system. The module concept is rooted in ASP.NET MVC Areas ([1](http://weblogs.asp.net/scottgu/archive/2009/07/31/asp-net-mvc-v2-preview-1-released.aspx),[2](http://haacked.com/archive/2009/07/31/single-project-areas.aspx)) with the idea that module developers can opt-in to Orchard-specific functionality as needed. You can develop modules in-situ with the application as “Areas”, using Visual Studio's MVC tools: Add Area, Add Controller, Add View, and so on (in VS2010). You can also develop modules as separate projects, to be packaged and shared with other users of Orchard CMS (the packaging story is still to be defined, along with marketplaces for sharing modules). This is how the Orchard source tree is currently organized. There is also a “release” build of Orchard that contains all the modules pre-built and ready to run (without source code), that you can extend using the VS tooling for MVC Areas - this can be downloaded from
+Orchard is designed with modular extensibility in mind. The current application contains a number of built-in modules by default, and our intent with writing these modules has been to validate the underlying CMS core as it is being developed - exploring such concepts as routable content items, their associated "parts" (eventually to be bolted on using metadata), UI composability of views from separate modules, and so on. While there are many CMS core concepts that remain unimplemented for now, there are still many things you can do with the current system. The module concept is rooted in ASP.NET MVC Areas ([1](http://weblogs.asp.net/scottgu/archive/2009/07/31/asp-net-mvc-v2-preview-1-released.aspx),[2](http://haacked.com/archive/2009/07/31/single-project-areas.aspx)) with the idea that module developers can opt-in to Orchard-specific functionality as needed. You can develop modules in-situ with the application as "Areas", using Visual Studio's MVC tools: Add Area, Add Controller, Add View, and so on (in VS2010). You can also develop modules as separate projects, to be packaged and shared with other users of Orchard CMS (the packaging story is still to be defined, along with marketplaces for sharing modules). This is how the Orchard source tree is currently organized. There is also a "release" build of Orchard that contains all the modules pre-built and ready to run (without source code), that you can extend using the VS tooling for MVC Areas - this can be downloaded from
[http://orchard.codeplex.com/releases](http://orchard.codeplex.com/releases).
![](../Upload/module-tutorial/architecture_sm.gif)
@@ -12,49 +12,46 @@ First, install these MVC and Orchard releases to your machine, along with Visual
1. Install VS2010 (Express or higher)
2. Download and Install ASP.NET MVC 3
-3. Download and extract the latest release build from http://orchard.codeplex.com
+3. Download and extract the latest "release" build from http://orchard.codeplex.com
4. Double-click the csproj file in the release package to open it in VS
-### 1. Getting Started: A Simple Hello World Module (Area in VS)
+### Getting Started: A Simple Hello World Module ("Area" in VS)
-Our objective in this section is to build a very simple module that displays Hello World on the front-end using the applied Orchard theme. We'll also wire up the navigation menu to our module's routes.
+Our objective in this section is to build a very simple module that displays "Hello World" on the front-end using the applied Orchard theme. We'll also wire up the navigation menu to our module's routes.
**Objectives:**
-1. A simple custom area that renders Hello World on the app's front-end
-2. Views in the custom area that take advantage of the currently applied Orchard theme
-3. A menu item on the front-end for navigating to the custom area's view
+* A simple custom area that renders "Hello World" on the app's front-end
+* Views in the custom area that take advantage of the currently applied Orchard theme
+* A menu item on the front-end for navigating to the custom area's view
**Follow These Steps:**
-1. Right-click the project node in VS Solution Explorer, and choose Add > Area…”
-2. Type Commerce for the area name and click **OK**.
-3. Right-click the newly created Commerce > Controllers folder, and choose Add > Controller…”
-4. Name the Controller HomeController
-5. Right-click on the Index() method name and choose Add View…”
-6. Selected the Create a partial view option and click **Add**
-7. Add the following HTML to the View page: <p>Hello World</p>
+1. Right-click the project node in VS Solution Explorer, and choose "Add &gt; Area..."
+2. Type "Commerce" for the area name and click **OK**.
+3. Right-click the newly created "Commerce &gt; Controllers" folder, and choose "Add &gt; Controller..."
+4. Name the Controller "HomeController"
+5. Right-click on the "Index()" method name and choose "Add View..."
+6. Selected the "Create a partial view" option and click **Add**
+7. Add the following HTML to the View page: `<p>Hello World</p>`
8. Add the following namespace imports to the HelloController.cs file:
- using Orchard.Themes;
- using Orchard.UI.Navigation;
-1. Add a &#0091;Themed&#0093; attribute to the HelloController class:
+ using Orchard.Themes;
+ using Orchard.UI.Navigation;
- namespace Orchard.Web.Areas.Commerce.Controllers {
-
- [Themed]
- public class HomeController : Controller
+9. Add a `[Themed]` attribute to the HelloController class:
+ namespace Orchard.Web.Areas.Commerce.Controllers {
+ [Themed]
+ public class HomeController : Controller
-1. Add another class to create a new Menu item:
+10. Add another class to create a new Menu item:
- public class MainMenu : INavigationProvider
- {
+ public class MainMenu : INavigationProvider {
public String MenuName {
get { return "main"; }
}
-
public void GetNavigation(NavigationBuilder builder)
{
builder.Add(menu =>
@@ -63,7 +60,4 @@ Our objective in this section is to build a very simple module that displays
}
}
-
-
[This page is currently being written. For the time being, you may read the complete tutorial in MS Word format.](http://www.orchardproject.net/privatedrops/orchardmodulewalkthrough.doc)
-
Please sign in to comment.
Something went wrong with that request. Please try again.