- Хроники. - -
Разработка модулей для Orchard CMS с поддержкой SVN
Posted By Ikutsin On 20 апреля 2012 @ 14:47 In .NET C#,Управление и разработка | Comments Disabled
[1]Хочу поделится с вами своим подходом к разработке модулей, тем и других частей Orchard CMS. В качестве контроля вермий я использую SVN, но думаю эту-же идею можно использовать с любым другим контролем версий. Все файлы лежат в отдельной папке репозитория, а в CMS они попадают с помощью символьных ссылок. Вспомогательные скрипты позволяют пересоздать базу и переустановить сайт с помощью одной команды, но обо всем по порядку:
Я использую файловую систему NTFS, так как в Windows только она позволяет создавать символические линки на файлы и папки. Мой репозиторий имеет следующую структуру:
\branches \tags \trunk \Files dev.recipe.xml [name].recipe.xml help.txt \Modules \[ModuleName] \Themes \[ThemeName] config-[name].bat mklinks-files.bat mklinks-modules.bat mklinks-themes.bat setup.bat
Таким образом, все проекты и файлы рассортированы по своим местам. Возможно, имеет смысл вынести вспомогательные «.bat» файлы в отдельную папку, но это уже дело вкуса.
Файлы mklinks-*.bat и setup.bat имеют схожую структуру, и делают одно действие над содержимым или самим Orchard.
В моем случае создает только одну символическую ссылку на рецепт, который я успользую при установке.
@echo off if %web_root%=="" exit set svn_files=%svn_root%\Files echo Files SVN=%svn_files% set recipe_name=dev.recipe.xml mklink %web_root%\Modules\Orchard.Setup\Recipes\%recipe_name% %svn_files%\%recipe_name%
Устанавливает модули. Для добавления еще одного модуля, достаточно скопировать 2 строки и сменить название.
:: @echo off if %web_root%=="" exit set src_modules=%web_root%\Modules set svn_modules=%svn_root%\Modules echo Modules Source=%src_modules% echo Modules SVN=%svn_modules% set module_name=[module-name] mklink /d %src_modules%\%module_name% %svn_modules%\%module_name%
Похож на mklinks-modules, только ставит линки на шаблон.
:: @echo off if %web_root%=="" exit set src_themes=%web_root%\Themes set svn_themes=%svn_root%\Themes echo Templates Source=%src_themes% echo Templates SVN=%svn_themes% set theme_name=[theme-name] mklink /d %src_themes%\%theme_name% %svn_themes%\%theme_name%
Пересоздает базу данных и запускает orchard setup
:: if %web_root%=="" exit set asqlcmd="c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.exe" iisreset cd %web_root%\bin set app_data=%web_root%\App_Data del /q %app_data%\*.* rd /q /s %app_data%\Dependencies rd /q /s %app_data%\Logs rd /q /s %app_data%\RecipeQueue rd /q /s %app_data%\Sites %asqlcmd% -Q"drop database orchard" %asqlcmd% -Q"create database orchard" %asqlcmd% -Q"use orchard; CREATE USER [user] FOR LOGIN [user]" %asqlcmd% -Q"use orchard; EXEC sp_addrolemember N'db_owner', N'user'" ::orchard setup /SiteName:test /AdminUsername:admin /AdminPassword:adminPassword /DatabaseProvider:SQLServer /DatabaseConnectionString:"Data Source=localhost;Initial Catalog=orchard;Persist Security Info=True;User ID=user;Password=password" orchard setup /SiteName:test /AdminUsername:admin /AdminPassword:adminPassword /DatabaseProvider:SQLServer /DatabaseConnectionString:"Data Source=localhost;Initial Catalog=orchard;Persist Security Info=True;User ID=user;Password=password" /Recipe:Development pause
Ход действий такой:
Этот файл должен запускатся для установки.
:: set current_path=%~dp0 set web_root=C:\Orchard14\src\Orchard.Web set svn_root=C:\svn\orchard-modules\trunk cd %current_path% call mklinks-modules.bat cd %current_path% call mklinks-themes.bat cd %current_path% call mklinks-files.bat echo Proceed with setup? pause cd %current_path% call setup.bat
Ход действий такой:
Вот рецепт, который облегчает мою жизнь ускоряя процесс переустановки:
<Orchard> <Recipe> <Name>Development</Name> <Description>Base development.</Description> <Author>admin</Author> <WebSite>http://binaryanalysis.net</WebSite> <Tags>dev</Tags> <Version>1.0</Version> </Recipe> <Feature enable="Orchard.Blogs,Orchard.Comments,Orchard.Tags,Orchard.Alias,Orchard.Autoroute, TinyMce,Orchard.Media,Orchard.MediaPicker,Orchard.PublishLater, Orchard.jQuery,Orchard.Widgets,Orchard.Widgets.PageLayerHinting,Orchard.ContentTypes, Orchard.Scripting,Orchard.Scripting.Lightweight, PackagingServices,Orchard.Packaging,Orchard.Warmup,Orchard.Projections,Orchard.Fields,TheThemeMachine, Orchard.ImportExport,Orchard.Experimental,Orchard.CodeGeneration,Szmyd.CodeGeneration, Orchard.Experimental.WebCommandLine,Orchard.DesignerTools,Orchard.Migrations,DatabaseUpdate" /> <Metadata> <Types> <Page ContentTypeSettings.Draftable="True" TypeIndexing.Included="true"> <TagsPart /> <LocalizationPart /> <TitlePart/> <AutoroutePart /> </Page> </Types> <Parts> <BodyPart BodyPartSettings.FlavorDefault="html" /> </Parts> </Metadata> <Command> layer create Default /LayerRule:"true" /Description:"The widgets in this layer are displayed on all pages" layer create Authenticated /LayerRule:"authenticated" /Description:"The widgets in this layer are displayed when the user is authenticated" layer create Anonymous /LayerRule:"not authenticated" /Description:"The widgets in this layer are displayed when the user is anonymous" layer create Disabled /LayerRule:"false" /Description:"The widgets in this layer are never displayed" layer create TheHomepage /LayerRule:"url '~/'" /Description:"The widgets in this layer are displayed on the home page" widget create HtmlWidget /Title:"First Leader Aside" /Zone:"TripelFirst" /Position:"5" /Layer:"TheHomepage" /Identity:"SetupHtmlWidget1" /UseLoremIpsumText:true widget create HtmlWidget /Title:"Second Leader Aside" /Zone:"TripelSecond" /Position:"5" /Layer:"TheHomepage" /Identity:"SetupHtmlWidget2" /UseLoremIpsumText:true widget create HtmlWidget /Title:"Third Leader Aside" /Zone:"TripelThird" /Position:"5" /Layer:"TheHomepage" /Identity:"SetupHtmlWidget3" /UseLoremIpsumText:true site setting set baseurl page create /Slug:"welcome-to-orchard" /Title:"Welcome to Orchard!" /Path:"welcome-to-orchard" /Homepage:true /Publish:true /Text:"Welcome To Orchard!" menuitem create /MenuPosition:"1" /MenuText:"Home" /Url:"" /OnMainMenu:true theme activate "The Theme Machine" </Command> </Orchard>
Помимо стандартных модулей, я использую Szmyd.CodeGeneration [2], его нужно установить предварительно.
Для запуска комманды package create нет никаких препятствий, так что можно создать пакет, а после этого установить его на удаленном Orchard CMS.
В принципе, тот же подход с символическими ссылками можно использовать вместе с модулем Multi Tenant. Для предоставления доступа к пользовательскому шаблону, положив его в папку пользователя.
Article printed from Хроники.:
URL to article: /2356-razrabotka-modulej-dlya-orchard-cms-s-podderzhkoj-svn
URLs in this post:
[1] Image: /wp-content/uploads/2012/04/orchard-cms.png
[2] Szmyd.CodeGeneration: http://gallery.orchardproject.net/List/Modules/Orchard.Module.Szmyd.CodeGeneration
Click here to print.
Copyright © 2008 Все, что меня окружает. All rights reserved.