Пример #1
0
        /// <summary>
        /// Creates a new model.
        /// </summary>
        /// <param name="loadRegionTypes">If the region types should be loaded</param>
        /// <param name="loadTemplates">If the templates should be loaded</param>
        internal PageEditModel(bool loadRegionTypes = true, bool loadTemplates = true)
        {
            Template = new PageTemplate()
            {
                Preview = new HtmlString(
                    "<table class=\"template\">" +
                    "<tr><td></td></tr>" +
                    "</table>"
                    )
            };
            Regions = new List<RegionTemplate>();
            RegionTypes = new List<dynamic>();

            if (loadRegionTypes)
            {
                ExtensionManager.Current.GetByExtensionType(ExtensionType.Region).OrderBy(e => e.Metadata.Name).Each((i, r) =>
                    RegionTypes.Add(new { Name = ExtensionManager.Current.GetNameByType(r.Value.GetType().FullName), Type = r.Value.GetType().FullName }));
                RegionTypes.Insert(0, new { Name = "", Type = "" });
            }

            if (loadTemplates)
            {
                Templates = PageTemplate.GetFields("pagetemplate_id, pagetemplate_name, pagetemplate_type", "pagetemplate_site_template = 0", new Data.Params() { OrderBy = "pagetemplate_name" });
            }
        }
Пример #2
0
        /// <summary>
        /// Creates a new site tree model for the given namespace.
        /// </summary>
        /// <param name="id">Namespace id</param>
        public SiteTreeEditModel(Guid namespaceId)
        {
            // Get the namespaces
            using (var db = new DataContext()) {
                var ns = db.Namespaces.OrderBy(n => n.Name).ToList() ;
                if (namespaceId != Guid.Empty)
                    Namespaces = new SelectList(ns, "Id", "Name", namespaceId) ;
                Namespaces = new SelectList(ns, "Id", "Name") ;
            }

            // Get the available region types
            RegionTypes = new List<dynamic>() ;
            ExtensionManager.Extensions.Where(e => e.ExtensionType == ExtensionType.Region).OrderBy(e => e.Name).Each((i, r) =>
                RegionTypes.Add(new { Name = r.Name, Type = r.Type.ToString() })) ;
            RegionTypes.Insert(0, new { Name = "", Type = "" }) ;

            // Initialize the new site
            Id = Guid.NewGuid() ;
            NamespaceId = namespaceId ;
            Template = new PageTemplate() {
                Id = Id,
                Name = Id.ToString(),
                IsSiteTemplate = true
            } ;
            Regions = Template.RegionTemplates ;
        }
        /// <summary>
        /// Gets the raw string (xml) from the broker db by URL
        /// </summary>
        /// <param name="Url">URL of the page</param>
        /// <returns>String with page xml or empty string if no page was found</returns>
        public string GetContentByUrl(string Url)
        {
            Page page = new Page();
            page.Title = Randomizer.AnyString(15);
            page.Id = Randomizer.AnyUri(64);
            page.Filename = Randomizer.AnySafeString(8) + ".html";

            PageTemplate pt = new PageTemplate();
            pt.Title = Randomizer.AnyString(20);
            Field ptfieldView = new Field();
            ptfieldView.Name = "view";
            ptfieldView.Values.Add("Standard");
            pt.MetadataFields = new FieldSet();
            pt.MetadataFields.Add(ptfieldView.Name, ptfieldView);

            page.PageTemplate = pt;

            page.ComponentPresentations = new List<ComponentPresentation>();

            string cpString = ComponentPresentationProvider.GetContent("");
            page.ComponentPresentations.Add(SerializerService.Deserialize<ComponentPresentation>(cpString));

            FieldSet metadataFields = new FieldSet();
            page.MetadataFields = metadataFields;

            return SerializerService.Serialize<Page>(page);
        }
        /// <summary>
        /// Gets the raw string (xml) from the broker db by URL
        /// </summary>
        /// <param name="Url">URL of the page</param>
        /// <returns>String with page xml or empty string if no page was found</returns>
        public string GetContentByUrl(string Url)
        {
            Page page = new Page();
            page.Title = Randomizer.AnyString(15);
            page.Id = Randomizer.AnyUri(64);
            page.Filename = Randomizer.AnySafeString(8) + ".html";

            PageTemplate pt = new PageTemplate();
            pt.Title = Randomizer.AnyString(20);
            Field ptfieldView = new Field();
            ptfieldView.Name = "view";
            ptfieldView.Values.Add("Standard");
            pt.MetadataFields = new FieldSet();
            pt.MetadataFields.Add(ptfieldView.Name, ptfieldView);

            page.PageTemplate = pt;

            Schema schema = new Schema();
            schema.Title = Randomizer.AnyString(10);

            Component component = new Component();
            component.Title = Randomizer.AnyString(30);
            component.Id = Randomizer.AnyUri(16);
            component.Schema = schema;

            Field field1 = Randomizer.AnyTextField(6, 120, true);
            Field field2 = Randomizer.AnyTextField(8, 40, false);

            FieldSet fieldSet = new FieldSet();
            fieldSet.Add(field1.Name, field1);
            fieldSet.Add(field2.Name, field2);
            component.Fields = fieldSet;

            ComponentTemplate ct = new ComponentTemplate();
            ct.Title = Randomizer.AnyString(20);
            Field fieldView = new Field();
            fieldView.Name = "view";
            fieldView.Values.Add("DefaultComponentView");
            ct.MetadataFields = new FieldSet();
            ct.MetadataFields.Add(fieldView.Name, fieldView);

            ComponentPresentation cp = new ComponentPresentation();
            cp.Component = component;
            cp.ComponentTemplate = ct;

            page.ComponentPresentations = new List<ComponentPresentation>();
            page.ComponentPresentations.Add(cp);

            FieldSet metadataFields = new FieldSet();
            page.MetadataFields = metadataFields;

            var serializer = new XmlSerializer(typeof(Page));
            StringBuilder builder = new StringBuilder();
            StringWriter writer = new StringWriter(builder);
            //XmlTextWriter writer = new XmlTextWriter(page.Filename, Encoding.UTF8);
            //serializer.Serialize(writer, page);
            serializer.Serialize(writer, page);
            string pageAsString = builder.ToString();
            return pageAsString;
        }
Пример #5
0
        /// <summary>
        /// Default constructor, creates a new model.
        /// </summary>
        public PageEditModel()
        {
            Template = new PageTemplate() ;
            Regions = new List<RegionTemplate>() ;
            RegionTypes = new List<dynamic>() ;

            ExtensionManager.Regions.OrderBy(r => r.Name).Each((i, r) =>
                RegionTypes.Add(new { Name = r.Name, Type = r.Type.ToString() })) ;
            RegionTypes.Insert(0, new { Name = "", Type = "" }) ;
        }
        public void WhenInstantiatingClassWithDefaultConstructor_Succeeds()
        {
            // Arrange
            PageTemplate model;

            // Act
            model = new PageTemplate();

            // Assert
            Assert.NotNull(model);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="TemplateImporter" /> class.
        /// </summary>
        /// <param name="ZipFileName">Name of the zip file.</param>
        /// <param name="applicationPath">The application path.</param>
        public TemplateImporter(string ZipFileName, string applicationPath)
        {
            string uniqueExtension = DateTime.Now.ToFileTime().ToString();

            this.applicationPath = applicationPath;
            this.zipFileName = ZipFileName;

            this.templateExtractionFolder = string.Concat(applicationPath, "App_Data\\temp_", uniqueExtension, "\\");
            this.sitefinityTemplatesInstallationFolder = string.Concat(applicationPath, "App_Data\\Sitefinity\\WebsiteTemplates\\");

            pageManager = PageManager.GetManager();
            pageTemplate = pageManager.CreateTemplate();
            pageTemplate.Category = new Guid();
        }
Пример #8
0
		/// <summary>
		/// Default constructor, creates a new model.
		/// </summary>
		public PageEditModel() {
			Template = new PageTemplate() {
				Preview = new HtmlString(
					"<table class=\"template\">" +
					"<tr><td></td></tr>" +
					"</table>"
					)
			};
			Regions = new List<RegionTemplate>() ;
			RegionTypes = new List<dynamic>() ;

			ExtensionManager.Current.GetByExtensionType(ExtensionType.Region).OrderBy(e => e.Metadata.Name).Each((i, r) =>
				RegionTypes.Add(new { Name = ExtensionManager.Current.GetNameByType(r.Value.GetType().FullName), Type = r.Value.GetType().FullName })) ;
			RegionTypes.Insert(0, new { Name = "", Type = "" }) ;
		}
Пример #9
0
		/// <summary>
		/// Creates a new model.
		/// </summary>
		/// <param name="loadRegionTypes">If the region types should be loaded</param>
		internal PageEditModel(bool loadRegionTypes = true) {
			Template = new PageTemplate() {
				Preview = new HtmlString(
					"<table class=\"template\">" +
					"<tr><td></td></tr>" +
					"</table>"
					)
			};
			Regions = new List<RegionTemplate>() ;
			RegionTypes = new List<dynamic>() ;

			if (loadRegionTypes) {
				App.Instance.ExtensionManager.GetByExtensionType(ExtensionType.Region).OrderBy(e => e.Metadata.Name).Each((i, r) =>
					RegionTypes.Add(new { Name = App.Instance.ExtensionManager.GetNameByType(r.Value.GetType().FullName), Type = r.Value.GetType().FullName })) ;
				RegionTypes.Insert(0, new { Name = "", Type = "" }) ;
			}	
		}
Пример #10
0
 public Guid CreatePageWithTemplate(PageTemplate template, string pageTitle, string pageUrlName)
 {
     Guid pageId = Guid.Empty;
     App.WorkWith()
        .Page()
        .CreateNewStandardPage()
        .Do(p =>
        {
            p.GetPageData().Template = template;
            p.Title = pageTitle;
            p.UrlName = pageUrlName;
            pageId = p.Id;
        })
        .CheckOut()
        .Publish(CultureInfo.InvariantCulture)
        .SaveChanges();
     return pageId;
 }
Пример #11
0
 public Guid CreatePageWithTemplate(PageTemplate template, string pageTitle, string pageUrlName)
 {
     Guid pageId = Guid.Empty;
     App.WorkWith()
        .Page()
        .CreateNewStandardPage()
        .Do(p =>
        {
            p.GetPageData().Template = template;
            p.Title = pageTitle;
            p.UrlName = pageUrlName;
            pageId = p.Id;
        })
        .CheckOut()
        .Publish(SystemManager.CurrentContext.AppSettings.DefaultFrontendLanguage)
        .SaveChanges();
     return pageId;
 }
        public ActionResult Create(PageTemplate pageTemplate)
        {
            //check if Page Template name or folder is already taken
            ValidatePageTemplateName(pageTemplate);

            if (ModelState.IsValid)
            {
                IGstoreDb db = GStoreDb;
                pageTemplate = db.PageTemplates.Create(pageTemplate);
                pageTemplate.UpdateAuditFields(CurrentUserProfileOrThrow);
                pageTemplate = GStoreDb.PageTemplates.Add(pageTemplate);
                GStoreDb.SaveChanges();
                AddUserMessage("Page Template Added", "Page Template '" + pageTemplate.Name.ToHtml() + "' [" + pageTemplate.PageTemplateId + "] created successfully!", UserMessageType.Success);
                return RedirectToAction("Index");
            }

            this.BreadCrumbsFunc = htmlHelper => this.PageTemplateBreadcrumb(htmlHelper, pageTemplate.ClientId, pageTemplate, false);
            return View(pageTemplate);
        }
Пример #13
0
        //-------------------------------------------------------------------------------------------
        public FilteredFieldsManager(MetaTable table, PageTemplate currentPage)
        {
            _table = table;
               _currentPage = currentPage;

               foreach (var column in _table.Columns)
               {
                    // carry on the loop at the next column
                    // if scaffold table is set to false or DenyRead
                    if (!column.Scaffold ||
                         column.IsLongString ||
                         column.ColumnIsInPage(_currentPage))
                         continue;

                    var f = new DynamicField();

                    f.DataField = column.Name;
                    _selectedColumns.Add(f);
               }
        }
Пример #14
0
        public static void Create()
        {
            PageManager pageMgr = PageManager.GetManager();

            pageMgr.Provider.SuppressSecurityChecks = true;

            PageNode shellPage = pageMgr.GetPageNodes().Where(page => page.RootNodeId == SiteInitializer.BackendRootNodeId && page.Title == "Shell" && !page.IsDeleted).FirstOrDefault();

            if (shellPage == null)
            {
                var      pageId = Guid.NewGuid();
                PageNode parent = pageMgr.GetPageNodes().Where(page => page.RootNodeId == SiteInitializer.BackendRootNodeId && page.Title == "$Resources: PageResources,ToolsNodeTitle").FirstOrDefault();
                if (parent == null)
                {
                    parent = pageMgr.GetPageNodes().Where(page => page.RootNodeId == SiteInitializer.BackendRootNodeId && page.Title == "Sitefinity").FirstOrDefault();
                }

                PageTemplate template = pageMgr.GetTemplates().Where(t => t.Title == "Default Backend Template").FirstOrDefault();

                PageNode pageNode = pageMgr.CreatePage(parent, pageId, NodeType.Standard);
                PageData pageData = pageNode.GetPageData();

                pageData.Template = template;
                pageData.Culture  = Thread.CurrentThread.CurrentCulture.ToString();
                String pageName = "Shell";
                pageData.HtmlTitle             = pageName;
                pageNode.Name                  = pageName;
                pageNode.Description           = pageName;
                pageNode.Title                 = pageName;
                pageNode.UrlName               = "Shell";
                pageNode.ShowInNavigation      = true;
                pageNode.DateCreated           = DateTime.UtcNow;
                pageNode.LastModified          = DateTime.UtcNow;
                pageNode.ApprovalWorkflowState = "Published";

                PageDraft draft = pageMgr.EditPage(pageData.Id);

                // Add layout
//				var contentPlaceholder = GetContentPlaceholderId(pageData);
//				var contentCaption = "LayoutControlInContentPlaceholder";
//				AddLayoutControlToPage(pageId, contentPlaceholder, contentCaption, "");

                //
                var ctrl_css = new CssEmbedControl();
                ctrl_css.CustomCssCode = @"
	div.console {
		word-wrap: break-word;
	}
	div.console {
		padding-left: 10px;
		font-size: 14px;
		margin-top: 1em;
	}

		div.console div.jquery-console-inner {
			width: 1200px;
			height: 800px;
			background: #efefef;
			padding: 0.5em;
			overflow: auto;
		}

		div.console div.jquery-console-prompt-box {
			color: #444;
			font-family: monospace;
		}

		div.console div.jquery-console-focus span.jquery-console-cursor {
			background: #333;
			color: #eee;
			font-weight: bold;
		}

		div.console div.jquery-console-message-error {
			color: #ef0505;
			font-family: sans-serif;
			font-weight: bold;
			padding: 0.1em;
		}

		div.console div.jquery-console-message-success {
			color: #187718;
			font-family: monospace;
			padding: 0.1em;
		}

		div.console span.jquery-console-prompt-label {
			font-weight: bold;
		}
					"                    ;
                var pageControl = pageMgr.CreateControl <PageDraftControl>(ctrl_css, "Content");
                pageControl.Caption = "Style";
                pageMgr.SetControlDefaultPermissions(pageControl);
                draft.Controls.Add(pageControl);

                var ctrl_js0 = new JavaScriptEmbedControl();
                ctrl_js0.Url        = "https://code.jquery.com/jquery-2.1.1.min.js";
                pageControl         = pageMgr.CreateControl <PageDraftControl>(ctrl_js0, "Content");
                pageControl.Caption = "JavaScript 0";
                pageMgr.SetControlDefaultPermissions(pageControl);
                draft.Controls.Add(pageControl);

                var ctrl_js2 = new JavaScriptEmbedControl();
                ctrl_js2.ScriptEmbedPosition  = Telerik.Sitefinity.Web.UI.PublicControls.Enums.ScriptEmbedPosition.InPlace;
                ctrl_js2.CustomJavaScriptCode = @"
	var list = '';
	var root = '';
	var resource = 'pages';
	var site = '';
	var provider = '';
	var controller;
	$(document).ready(function () {
		var console = $('.console');
		controller = console.console({
			promptLabel: 'Pages> ',
			autofocus: true,
			completeHandle: function (promptText) {
				promptText = promptText.trim();
				if (promptText == '') return;
				var words = promptText.split(' ');
				var keyword = words[words.length - 1];
				var len = keyword.length;
				return list.filter(function (elt) { return elt.toLowerCase().startsWith(keyword.toLowerCase()); })
						   .map(function (elt) { return elt.substring(len, 36); });
			},
			cols: 80,
			commandValidate: function (line) {
				if (line == '') return false;
				else return true;
			},
			commandHandle: function (line, report) {
				$.ajax({
					url: '/Sitefinity/Services/ShellModule/ShellService.svc/Command', data: { root: root, rsc: resource, cmd: line, site: site, provider:provider },
					success: function (data) {
						if (data.response == undefined && data.indexOf('Temporarily unavailable due to maintenance') >= 0) {
							report([{ msg: 'Site is being restarted', className: 'jquery-console-message-error' }]);
							return;
						}
						if (data.response != '') list = data.response.split('\n');
						if (data.path != '') controller.promptLabel = data.path;
						if (data.root != '') root = data.root;
						if (data.resource != '') resource = data.resource;
						if (data.site != '') site = data.site;
						provider = data.provider;
						if (data.error != '') report([{ msg: data.error, className: 'jquery-console-message-error' }]);
						if (data.response != '' || data.error == '') report([{ msg: data.response, className: 'jquery-console-message-success' }]);
					},
					error: function (xhr, ajaxOptions, thrownError) {
						report([{ msg: 'Error: ' + xhr.status + '\n' + thrownError, className: 'jquery-console-message-error' }]);
					}
				});
			},
			animateScroll: true,
			promptHistory: true,
		});
	});
				"                ;
                pageControl         = pageMgr.CreateControl <PageDraftControl>(ctrl_js2, "Content");
                pageControl.Caption = "JavaScript 2";
                pageMgr.SetControlDefaultPermissions(pageControl);
                draft.Controls.Add(pageControl);

                //
                var ctrl_js1 = new JavaScriptEmbedControl();
                ctrl_js1.CustomJavaScriptCode = @"!function(e){var n=!!~navigator.userAgent.indexOf("" AppleWebKit/"");e.fn.console=function(o){function t(){N=0,X="""",F=0,v(),O=e('<div class=""jquery-console-prompt-box""></div>');var n=e('<span class=""jquery-console-prompt-label""></span>'),o=U.continuedPrompt?B:U.promptLabel;O.append(n.text(o).show()),n.html(n.html().replace("" "",""&nbsp;"")),P=e('<span class=""jquery-console-prompt""></span>'),O.append(P),R.append(O),H()}function r(e){return(e.keyCode==L.tab||192==e.keyCode)&&e.altKey}function s(e){if(0!=E.length){(F+=e)<0?F=E.length:F>E.length&&(F=0);X=0==F?Y:E[F-1],o.historyPreserveColumn?X.length<N+1?N=X.length:0==N&&(N=X.length):N=X.length,H()}}function c(){s(-1)}function i(){s(1)}function a(e){E.push(e),Y=""""}function l(){return N<X.length&&(X=X.substring(0,N)+X.substring(N+1),Y=X,!0)}function u(){l()&&H()}function f(){R.children("".jquery-console-prompt-box, .jquery-console-message"").remove(),U.report("" ""),U.promptText(""""),U.focus()}function p(){var e=jQuery.fn.jquery.split("".""),n=parseInt(e[0]),o=parseInt(e[1]);1==n&&o>6||n>1?R.prop({scrollTop:R.prop(""scrollHeight"")}):R.attr({scrollTop:R.attr(""scrollHeight"")})}function d(){""function""==typeof o.cancelHandle&&o.cancelHandle()}function m(){if(""function""==typeof o.commandHandle){h(),a(X);var e=X;U.continuedPrompt?Z?Z+=""\n""+X:Z=X:Z=void 0,Z&&(e=Z);var n=o.commandHandle(e,function(e){g(e)});U.continuedPrompt&&!Z&&(Z=X),""boolean""==typeof n?n?g():g(""Command failed."",""jquery-console-message-error""):""string""==typeof n?g(n,""jquery-console-message-success""):""object""==typeof n&&n.length?g(n):U.continuedPrompt&&g()}}function h(){J=!1}function v(){J=!0}function g(n,o){if(N=-1,H(),""string""==typeof n)b(n,o);else if(e.isArray(n))for(var r in n){var s=n[r];b(s.msg,s.className)}else R.append(n);t()}function y(e,n){var o=X;O.remove(),g(e,n),U.promptText(o)}function b(n,o){var t=e('<div class=""jquery-console-message""></div>');o&&t.addClass(o),t.filledText(n).hide(),R.append(t),t.show()}function C(e){return N+e>=0&&N+e<=X.length&&(N+=e,!0)}function j(){return!!C(1)&&(H(),!0)}function x(){return!!C(-1)&&(H(),!0)}function q(){C(-N)&&H()}function T(){C(X.length-N)&&H()}function w(e){if(""string""==typeof e){var n=e.charCodeAt();return n>=""A"".charCodeAt()&&n<=""Z"".charCodeAt()||n>=""a"".charCodeAt()&&n<=""z"".charCodeAt()||n>=""0"".charCodeAt()&&n<=""9"".charCodeAt()}return!1}function A(){if(""function""==typeof o.completeHandle){var e=o.completeHandle(X),n=e.length;if(1===n)U.promptText(X+e[0]);else if(n>1&&o.cols){for(var t=X,r=0,s=0;s<n;s++)r=Math.max(r,e[s].length);r+=2;var c=Math.floor(o.cols/r),i="""",a=0;for(s=0;s<n;s++){var l=e[s];i+=e[s];for(var u=l.length;u<r;u++)i+="" "";++a>=c&&(i+=""\n"",a=0)}g(i,""jquery-console-message-value""),U.promptText(t)}}}function I(){""function""==typeof o.completeIssuer&&o.completeIssuer(X)}function k(e,n){var t=n.length;if(1===t)U.promptText(e+n[0]);else if(t>1&&o.cols){for(var r=e,s=0,c=0;c<t;c++)s=Math.max(s,n[c].length);s+=2;var i=Math.floor(o.cols/s),a="""",l=0;for(c=0;c<t;c++){var u=n[c];a+=n[c];for(var f=u.length;f<s;f++)a+="" "";++l>=i&&(a+=""\n"",l=0)}g(a,""jquery-console-message-value""),U.promptText(r)}}function H(){var e=X,n="""";if(N>0&&""""==e)n=z;else if(N==X.length)n=K(e)+z;else{var o=e.substring(0,N),t=e.substring(N,N+1);t&&(t='<span class=""jquery-console-cursor"">'+K(t)+""</span>"");var r=e.substring(N+1);n=K(o)+t+K(r)}P.html(n),p()}function K(e){return e.replace(/&/g,""&amp;"").replace(/</g,""&lt;"").replace(/</g,""&lt;"").replace(/ /g,""&nbsp;"").replace(/\n/g,""<br />"")}var L={37:x,39:j,38:c,40:i,8:function(){C(-1)&&(l(),H())},46:u,35:T,36:q,13:function(){var e=X;if(""function""==typeof o.commandValidate){var n=o.commandValidate(e);1==n||0==n?n&&m():g(n,""jquery-console-message-error"")}else m()},18:function(){},9:function(){""function""==typeof o.completeHandle?A():I()}},M={65:q,69:T,68:u,78:i,80:c,66:x,70:j,75:function(){for(;l();)H()},76:f,85:function(){U.promptText("""")}};o.ctrlCodes&&e.extend(M,o.ctrlCodes);var O,P,S={70:function(){for(;N<X.length&&!w(X[N])&&j(););for(;N<X.length&&w(X[N])&&j(););},66:function(){for(;N-1>=0&&!w(X[N-1])&&x(););for(;N-1>=0&&w(X[N-1])&&x(););},68:function(){for(;N<X.length&&!w(X[N]);)l(),H();for(;N<X.length&&w(X[N]);)l(),H()}},W={13:function(){var e=""\n""+X.split(""\n"").slice(-1)[0].match(/^(\s*)/g)[0];X+=e,C(e.length),H()}},z='<span class=""jquery-console-cursor"">&nbsp;</span>',Q=e(this),R=e('<div class=""jquery-console-inner""></div>'),V=e('<textarea autocomplete=""off"" autocorrect=""off"" autocapitalize=""off"" spellcheck=""false"" class=""jquery-console-typer""></textarea>'),B=o&&o.continuedPromptLabel?o.continuedPromptLabel:""> "",N=0,X="""",Y="""",Z="""",D=void 0===o.fadeOnReset||o.fadeOnReset,E=[],F=0,G=0,J=!0,U={};U.promptLabel=o&&o.promptLabel?o.promptLabel:""> "",Q.append(R),R.append(V),V.css({position:""absolute"",top:0,left:""-9999px""}),o.welcomeMessage&&b(o.welcomeMessage,""jquery-console-welcome""),t(),o.autofocus&&(R.addClass(""jquery-console-focus""),V.focus(),setTimeout(function(){R.addClass(""jquery-console-focus""),V.focus()},100)),U.inner=R,U.typer=V,U.scrollToBottom=p,U.report=y,U.showCompletion=k,U.clearScreen=f,U.reset=function(){var n=void 0!==o.welcomeMessage,r=function(){R.find(""div"").each(function(){n?n=!1:e(this).remove()})};D?R.parent().fadeOut(function(){r(),t(),R.parent().fadeIn($)}):(r(),t(),$())};var $=function(){R.addClass(""jquery-console-focus""),V.focus()};return U.focus=function(){$()},U.notice=function(n,o){var t=e('<div class=""notice""></div>').append(e(""<div></div>"").text(n)).css({visibility:""hidden""});Q.append(t);var r=!0;if(""fadeout""==o)setTimeout(function(){t.fadeOut(function(){t.remove()})},4e3);else if(""prompt""==o){var s=e('<br/><div class=""action""><a href=""javascript:"">OK</a><div class=""clear""></div></div>');t.append(s),r=!1,s.click(function(){t.fadeOut(function(){t.remove(),R.css({opacity:1})})})}var c=t.height();return t.css({height:""0px"",visibility:""visible""}).animate({height:c+""px""},function(){r||R.css({opacity:.5})}),t.css(""cursor"",""default""),t},Q.click(function(){return!window.getSelection().toString()&&(R.addClass(""jquery-console-focus""),R.removeClass(""jquery-console-nofocus""),n?V.focusWithoutScrolling():V.css(""position"",""fixed"").focus(),p(),!1)}),V.blur(function(){R.removeClass(""jquery-console-focus""),R.addClass(""jquery-console-nofocus"")}),V.bind(""paste"",function(e){V.val(""""),setTimeout(function(){V.consoleInsert(V.val()),V.val("""")},0)}),V.keydown(function(e){G=0;var n=e.keyCode;if(e.ctrlKey&&67==n)return G=n,d(),!1;if(J){if(e.shiftKey&&n in W)return G=n,W[n](),!1;if(e.altKey&&n in S)return G=n,S[n](),!1;if(e.ctrlKey&&n in M)return G=n,M[n](),!1;if(n in L)return G=n,L[n](),!1}}),V.keypress(function(e){var t=e.keyCode||e.which;if(r(e))return!1;if((e.ctrlKey||e.metaKey)&&""v""==String.fromCharCode(t).toLowerCase())return!0;if(J&&G!=t&&t>=32){if(G)return!1;(void 0===o.charInsertTrigger||""function""==typeof o.charInsertTrigger&&o.charInsertTrigger(t,X))&&V.consoleInsert(t)}return!n&&void 0}),V.consoleInsert=function(e){var n=""number""==typeof e?String.fromCharCode(e):e,o=X.substring(0,N),t=X.substring(N);X=o+n+t,C(n.length),Y=X,H()},U.promptText=function(e){return""string""==typeof e&&(N=(X=e).length,H()),X},U},e.fn.filledText=function(n){return e(this).text(n),e(this).html(e(this).html().replace(/\t/g,""&nbsp;&nbsp;"").replace(/\n/g,""<br/>"")),this},e.fn.focusWithoutScrolling=function(){var n=window.scrollX,o=window.scrollY;e(this).focus(),window.scrollTo(n,o)}}(jQuery);";
                ctrl_js1.ScriptEmbedPosition  = Telerik.Sitefinity.Web.UI.PublicControls.Enums.ScriptEmbedPosition.InPlace;
                pageControl         = pageMgr.CreateControl <PageDraftControl>(ctrl_js1, "Content");
                pageControl.Caption = "JavaScript 1";
                pageMgr.SetControlDefaultPermissions(pageControl);
                draft.Controls.Add(pageControl);

                // Add content block
                var cb = new ContentBlock();
                cb.Html             = "<div class=\"console\"></div><br><br>";
                pageControl         = pageMgr.CreateControl <PageDraftControl>(cb, "Content");
                pageControl.Caption = "Shell";
                pageMgr.SetControlDefaultPermissions(pageControl);
                draft.Controls.Add(pageControl);

                // Saves the page
                var master = pageMgr.PagesLifecycle.CheckIn(draft);
                pageMgr.PagesLifecycle.Publish(master);

                pageMgr.SaveChanges();
            }
        }
Пример #15
0
        public void Setup()
        {
            var starterKitService = HostContainer.GetInstance <IStarterKitService>();

            #region Page Templates

            // Insert master template
            var master = new PageTemplate
            {
                Name              = "Master",
                Content           = StarterKitHelper.GetEzCMSResource("Master.cshtml", GetTemplateFolder(), ResourceTypeEnums.PageTemplates),
                IsDefaultTemplate = true
            };
            starterKitService.InsertPageTemplate(master);

            #endregion

            #region Page Initialize

            // Insert home page
            var homePage = new Page
            {
                Title                    = "Home",
                Abstract                 = "Home page",
                Content                  = StarterKitHelper.GetEzCMSResource("HomePage.cshtml", GetTemplateFolder(), ResourceTypeEnums.Pages),
                FriendlyUrl              = "home",
                PageTemplateId           = master.Id,
                IsHomePage               = true,
                Status                   = PageEnums.PageStatus.Online,
                IncludeInSiteNavigation  = true,
                DisableNavigationCascade = false,
                RecordOrder              = 1
            };
            starterKitService.InsertPage(homePage);

            var aboutUs = new Page
            {
                Title                    = "About Us",
                Abstract                 = "About Us",
                Content                  = StarterKitHelper.GetEzCMSResource("AboutUs.cshtml", GetTemplateFolder(), ResourceTypeEnums.Pages),
                FriendlyUrl              = "about-us",
                PageTemplateId           = master.Id,
                IsHomePage               = false,
                Status                   = PageEnums.PageStatus.Online,
                IncludeInSiteNavigation  = true,
                DisableNavigationCascade = false,
                RecordOrder              = 2
            };
            starterKitService.InsertPage(aboutUs);

            var contactUs = new Page
            {
                Title                    = "Contact Us",
                Abstract                 = "Contact Us",
                Content                  = StarterKitHelper.GetEzCMSResource("ContactUs.cshtml", GetTemplateFolder(), ResourceTypeEnums.Pages),
                FriendlyUrl              = "contact-us",
                PageTemplateId           = master.Id,
                IsHomePage               = false,
                Status                   = PageEnums.PageStatus.Online,
                IncludeInSiteNavigation  = true,
                DisableNavigationCascade = false,
                RecordOrder              = 3
            };
            starterKitService.InsertPage(contactUs);

            #region Insert other pages

            //Page not found
            var pageNotFound = new Page
            {
                Title                    = "Page Not Found",
                Abstract                 = "Page Not Found",
                Content                  = StarterKitHelper.GetEzCMSResource("PageNotFound.cshtml", GetTemplateFolder(), ResourceTypeEnums.Pages),
                FriendlyUrl              = "Page-Not-Found",
                PageTemplateId           = master.Id,
                IsHomePage               = false,
                Status                   = PageEnums.PageStatus.Online,
                IncludeInSiteNavigation  = false,
                DisableNavigationCascade = true,
                RecordOrder              = 4
            };
            starterKitService.InsertPage(pageNotFound);

            //Page error
            var pageError = new Page
            {
                Title                    = "Page Error",
                Abstract                 = "Page Error",
                Content                  = StarterKitHelper.GetEzCMSResource("PageError.cshtml", GetTemplateFolder(), ResourceTypeEnums.Pages),
                FriendlyUrl              = "Page-Error",
                PageTemplateId           = master.Id,
                IsHomePage               = false,
                Status                   = PageEnums.PageStatus.Online,
                IncludeInSiteNavigation  = false,
                DisableNavigationCascade = true,
                RecordOrder              = 3
            };
            starterKitService.InsertPage(pageError);

            //Site map
            var siteMap = new Page
            {
                Title                    = "Site Map",
                Abstract                 = "Site Map",
                Content                  = StarterKitHelper.GetEzCMSResource("SiteMap.cshtml", GetTemplateFolder(), ResourceTypeEnums.Pages),
                FriendlyUrl              = "Site-Map",
                PageTemplateId           = master.Id,
                IsHomePage               = false,
                Status                   = PageEnums.PageStatus.Online,
                IncludeInSiteNavigation  = false,
                DisableNavigationCascade = true,
                RecordOrder              = 5
            };
            starterKitService.InsertPage(siteMap);

            //Search page
            var pageSearch = new Page
            {
                Title                    = "Search",
                Abstract                 = "Search",
                Content                  = StarterKitHelper.GetEzCMSResource("Search.cshtml", GetTemplateFolder(), ResourceTypeEnums.Pages),
                FriendlyUrl              = "Search",
                PageTemplateId           = master.Id,
                IsHomePage               = false,
                Status                   = PageEnums.PageStatus.Online,
                IncludeInSiteNavigation  = false,
                DisableNavigationCascade = true,
                RecordOrder              = 6
            };
            starterKitService.InsertPage(pageSearch);

            #endregion

            #endregion

            #region Styles

            //Add style
            var templateStyle = new Style
            {
                Name              = "template",
                Content           = StarterKitHelper.GetEzCMSResource("template.css", GetTemplateFolder(), ResourceTypeEnums.Styles),
                IncludeIntoEditor = true
            };
            starterKitService.InsertStyle(templateStyle);

            //Add protected document css
            var protectedDocumentStyle = new Style
            {
                Name    = "protected-document",
                Content = StarterKitHelper.GetEzCMSResource("protected-document.css", GetTemplateFolder(), ResourceTypeEnums.Styles)
            };
            starterKitService.InsertStyle(protectedDocumentStyle);

            //Add bootstrap css
            var bootstrapStyle = new Style
            {
                Name              = "bootstrap",
                Content           = string.Empty,
                CdnUrl            = "/Content/Plugins/Bootstrap/bootstrap.min.css",
                IncludeIntoEditor = true
            };
            starterKitService.InsertStyle(bootstrapStyle);

            #endregion

            #region Scripts

            var contactMe = new Script
            {
                Name    = "contact-me",
                Content = StarterKitHelper.GetEzCMSResource("contact_me.js", GetTemplateFolder(), ResourceTypeEnums.Scripts)
            };
            starterKitService.InsertScript(contactMe);

            var main = new Script
            {
                Name    = "main",
                Content = StarterKitHelper.GetEzCMSResource("main.js", GetTemplateFolder(), ResourceTypeEnums.Scripts)
            };
            starterKitService.InsertScript(main);


            var validation = new Script
            {
                Name    = "jqBootstrapValidation",
                Content = StarterKitHelper.GetEzCMSResource("jqBootstrapValidation.js", GetTemplateFolder(), ResourceTypeEnums.Scripts)
            };
            starterKitService.InsertScript(validation);

            #endregion

            #region Widget Templates

            string dataType          = typeof(List <ITree <NavigationNodeModel> >).AssemblyQualifiedName;
            string navigationContent = StarterKitHelper.GetEzCMSResource("Navigations.Navigations.cshtml", GetTemplateFolder(), ResourceTypeEnums.WidgetTemplates);
            string navigationScript  = StarterKitHelper.GetEzCMSResource("Navigations.Navigations.Script.cshtml",
                                                                         GetTemplateFolder(), ResourceTypeEnums.WidgetTemplates);
            var navigations = new WidgetTemplate
            {
                Name        = "Navigations",
                DataType    = dataType,
                Widget      = "Navigations",
                Content     = navigationContent,
                Script      = navigationScript,
                FullContent = WidgetHelper.GetFullTemplate(navigationContent, string.Empty, navigationScript, dataType, string.Empty)
            };
            starterKitService.InsertWidgetTemplate(navigations);

            #endregion
        }
Пример #16
0
        private void ManagePageTemplateFolders(PageTemplate template, FolderManagingType type)
        {
            var stageDirectory = template.Site.StageDirectory + Path.DirectorySeparatorChar + template.TemplateFolder;
            var liveDirectory  = template.Site.LiveDirectory + Path.DirectorySeparatorChar + template.TemplateFolder;

            switch (type)
            {
            case FolderManagingType.CreateFolder:
                if (!Directory.Exists(stageDirectory))
                {
                    Directory.CreateDirectory(stageDirectory);
                }

                if (!Directory.Exists(liveDirectory))
                {
                    Directory.CreateDirectory(liveDirectory);
                }

                break;

            case FolderManagingType.DeleteFolder:
                if (!string.IsNullOrWhiteSpace(template.TemplateFolder))
                {
                    if (Directory.Exists(stageDirectory))
                    {
                        Directory.Delete(stageDirectory, true);
                    }

                    if (Directory.Exists(liveDirectory))
                    {
                        Directory.Delete(liveDirectory, true);
                    }
                }

                break;

            case FolderManagingType.ChangeFolder:
                var oldTemplate = ReadPageTemplateProperties(template.Id, false);
                if (oldTemplate == null)
                {
                    throw new ApplicationException(string.Format(TemplateStrings.TemplateNotFound, template.Id));
                }

                var oldFolder = oldTemplate.TemplateFolder;
                if (!string.IsNullOrWhiteSpace(oldTemplate.TemplateFolder))
                {
                    if (string.IsNullOrWhiteSpace(template.TemplateFolder))
                    {
                        ManagePageTemplateFolders(oldTemplate, FolderManagingType.DeleteFolder);
                        return;
                    }

                    if (template.TemplateFolder == oldFolder)
                    {
                        return;
                    }

                    var oldStageDirectory = oldTemplate.Site.StageDirectory + Path.DirectorySeparatorChar + oldFolder;
                    var oldLiveDirectory  = oldTemplate.Site.LiveDirectory + Path.DirectorySeparatorChar + oldFolder;
                    if (Directory.Exists(oldStageDirectory))
                    {
                        Directory.Move(oldStageDirectory, stageDirectory);
                    }

                    if (Directory.Exists(oldLiveDirectory))
                    {
                        Directory.Move(oldLiveDirectory, liveDirectory);
                    }
                }
                else if (!string.IsNullOrWhiteSpace(template.TemplateFolder))
                {
                    ManagePageTemplateFolders(template, FolderManagingType.CreateFolder);
                }

                break;
            }
        }
Пример #17
0
 public PageTemplate NewPageTemplateProperties(int parentId) => PageTemplate.Create(parentId, SiteRepository.GetById(parentId));
        private void AddIncludePageRegions(IDictionary <string, RegionModelData> regionModels, PageTemplate pageTemplate)
        {
            IEnumerable <string> includes = pageTemplate.Metadata.GetTextFieldValues("includes"); // TODO: use external link field (?)

            if (includes == null)
            {
                Logger.Debug($"No include Pages found in {pageTemplate.FormatIdentifier()}");
                return;
            }

            foreach (string include in includes)
            {
                string includePageId;
                if (include.StartsWith(LegacyIncludePrefix))
                {
                    // Legacy include: publish path. Try to convert to WebDAV URL.
                    string      relativeUrl = include.Substring(LegacyIncludePrefix.Length).Replace('-', ' ');
                    Publication contextPub  = (Publication)pageTemplate.ContextRepository;
                    includePageId = $"/webdav/{contextPub.Title}/{contextPub.RootStructureGroup.Title}/_System/include/{relativeUrl}.tpg";
                    Logger.Debug($"Converted legacy Page include '{include}' to WebDAV URL '{includePageId}'.");
                }
                else
                {
                    includePageId = include;
                }

                Page includePage = (Page)Pipeline.Session.GetObject(includePageId);

                string moduleName;
                string regionViewName = StripModuleName(includePage.Title, out moduleName);
                string regionName     = regionViewName;

                RegionModelData includePageRegion;
                if (regionModels.TryGetValue(regionName, out includePageRegion))
                {
                    Logger.Debug($"Promoting Region '{regionName}' to Include Page Region.");
                }
                else
                {
                    includePageRegion = new RegionModelData
                    {
                        Name    = regionName,
                        MvcData = new MvcData
                        {
                            ViewName = regionViewName,
                            AreaName = moduleName
                        }
                    };
                    regionModels.Add(regionName, includePageRegion);
                }
                includePageRegion.IncludePageId = GetDxaIdentifier(includePage);

                if (Pipeline.Settings.GenerateXpmMetadata)
                {
                    includePageRegion.XpmMetadata = new Dictionary <string, object>
                    {
                        { "IncludedFromPageID", GetTcmIdentifier(includePage) },
                        { "IncludedFromPageTitle", includePage.Title },
                        { "IncludedFromPageFileName", includePage.FileName }
                    };
                }
            }
        }
Пример #19
0
 public HideColumnInAttribute(PageTemplate[] lookupTable)
 {
     PageTemplates = lookupTable;
 }
Пример #20
0
        /// <summary>
        /// Generates C# code for service client.
        /// </summary>
        /// <param name="cm"></param>
        /// <returns></returns>
        public override async Task Generate(CodeModel cm)
        {
            var codeModel = cm as CodeModelCsa;
            if (codeModel == null)
            {
                throw new InvalidCastException("CodeModel is not a Azure c# CodeModel");
            }

            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate { Model = codeModel };
            await Write(serviceClientTemplate, $"{codeModel.Name}{ImplementationFileExtension}");

            // Service client interface
            var serviceClientInterfaceTemplate = new ServiceClientInterfaceTemplate { Model = codeModel };
            await Write(serviceClientInterfaceTemplate, "I" + codeModel.Name + ImplementationFileExtension);

            // Operations
            foreach (MethodGroupCs group in codeModel.Operations)
            {
                if (!group.IsCodeModelMethodGroup)
                {
                    // Operation
                    var operationsTemplate = new AzureMethodGroupTemplate { Model = group };
                    await Write(operationsTemplate, operationsTemplate.Model.TypeName + ImplementationFileExtension);

                    // Operation interface
                    var operationsInterfaceTemplate = new MethodGroupInterfaceTemplate { Model = group };
                    await Write(operationsInterfaceTemplate,
                        $"I{operationsInterfaceTemplate.Model.TypeName}{ImplementationFileExtension}");
                }
                var operationExtensionsTemplate = new ExtensionsTemplate { Model = group };
                await Write(operationExtensionsTemplate,
                    $"{group.ExtensionTypeName}Extensions{ImplementationFileExtension}");
            }

            // Models
            foreach (CompositeTypeCs model in codeModel.ModelTypes.Concat(codeModel.HeaderTypes))
            {
                if (model.Extensions.ContainsKey(AzureExtensions.ExternalExtension) &&
                    (bool)model.Extensions[AzureExtensions.ExternalExtension])
                {
                    continue;
                }
                if (model.IsResource())
                {
                    continue;
                }
                var modelTemplate = new ModelTemplate { Model = model };
                await Write(modelTemplate, Path.Combine(Settings.Instance.ModelsName,
                    $"{model.Name}{ImplementationFileExtension}"));
            }

            // Enums
            foreach (EnumTypeCs enumType in codeModel.EnumTypes)
            {
                var enumTemplate = new EnumTemplate { Model = enumType };
                await Write(enumTemplate, Path.Combine(Settings.Instance.ModelsName,
                    $"{enumTemplate.Model.Name}{ImplementationFileExtension}"));
            }

            // Page class
            foreach (var pageClass in codeModel.pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new Page(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value)
                };
                await Write(pageTemplate, Path.Combine(Settings.Instance.ModelsName,
                    $"{pageTemplate.Model.TypeDefinitionName}{ImplementationFileExtension}"));
            }
            // Exceptions
            foreach (CompositeTypeCs exceptionType in codeModel.ErrorTypes)
            {
                if (exceptionType.Name == "CloudError")
                {
                    continue;
                }

                var exceptionTemplate = new ExceptionTemplate { Model = exceptionType };
                await Write(exceptionTemplate, Path.Combine(Settings.Instance.ModelsName,
                     $"{exceptionTemplate.Model.ExceptionTypeDefinitionName}{ImplementationFileExtension}"));
            }
        }
Пример #21
0
 internal static PageTemplate UpdatePageTemplateProperties(PageTemplate pageTemplate) => DefaultRepository.Update <PageTemplate, PageTemplateDAL>(pageTemplate);
Пример #22
0
 internal static PageTemplate SaveProperties(PageTemplate template) => DefaultRepository.Save <PageTemplate, PageTemplateDAL>(template);
Пример #23
0
        public ActionResult RoutePage(int pageTemplateId = 0, string pageFile = "", string recordId = "", string refKeyColumnName = "", string refKeyValue = "", string cancelMode = "", int parentPageTemplateId = 0, string layoutType = "")
        {
            try
            {
                // page variables
                ViewData["ParentPageTemplateId"] = parentPageTemplateId;
                ViewData["RecordId"]             = recordId;
                ViewData["LayoutType"]           = layoutType;
                ViewData["CancelMode"]           = cancelMode;
                ViewData["RefKeyColumnName"]     = refKeyColumnName;
                ViewData["RefKeyValue"]          = refKeyValue;

                // manual routing  !!!
                if (pageTemplateId == 645126) // Contracts page, hardcoded
                {
                    return(PartialView("~/Views/App/NetworkInformationContractsEdit.cshtml"));
                }

                // set PageTemplate
                PageTemplate pageTemplate  = new PageTemplate();
                PageTemplate pageTemplate2 = new PageTemplate {
                    PageTemplateId = 0, PrimaryKey = "dummy", PrimaryKey2 = 0
                };
                if (pageTemplateId > 0)
                {
                    pageTemplate = SessionService.PageTemplate(pageTemplateId);
                    if (pageTemplate.PageTemplateId2 > 0)
                    {
                        pageTemplate2 = SessionService.PageTemplate(pageTemplate.PageTemplateId2);
                    }
                }
                ViewData["PageTemplate"]  = pageTemplate;
                ViewData["PageTemplate2"] = pageTemplate2;

                // route to page
                if (pageFile.Length > 3)
                {
                    // reroute to custom edit form
                    if (pageFile == "_FormTemplate")
                    {
                        if (pageTemplate.CustomEditForm.Length > 3)
                        {
                            return(PartialView(pageTemplate.CustomEditForm));
                        }
                    }

                    return(PartialView(pageFile));
                }
                else if (pageTemplateId > 0)
                {
                    if (pageTemplate.PageType == "formonly")
                    {
                        ViewData["RecordId"] = SessionService.UserId;
                        return(PartialView("_FormTemplate"));
                    }
                    else if (pageTemplate.PageType == "inline")
                    {
                        return(PartialView("_InlineTemplate"));
                    }
                    else
                    {
                        return(PartialView("_GridTemplate"));
                    }
                }

                return(PartialView("_NotExist"));
            }
            catch (Exception ex)
            {
                Helper.LogError(ex.Message + "\r\n" + ex.StackTrace);
            }

            return(null);
        }
Пример #24
0
        public string GetOptionsByColumnDefId(int pageTemplateId, int columnDefId)
        {
            var columnDef = SessionService.ColumnDefs(pageTemplateId).Where(w => w.ColumnDefId == columnDefId).FirstOrDefault();

            string orderBy = "";

            if (columnDef.OrderField.Length > 3)
            {
                orderBy = " ORDER BY " + columnDef.OrderField;
            }

            string textField = "";

            if (columnDef.TextField.Contains(","))
            {
                var columns = columnDef.TextField.Split(new char[] { ',' });

                foreach (var columnName in columns)
                {
                    var dataType = SessionService.DataType(pageTemplateId, columnName);

                    if (dataType == "TEXT")
                    {
                        if (textField.Length == 0)
                        {
                            textField = columnName;
                        }
                        else
                        {
                            textField = textField + " + ' - ' + " + columnName;
                        }
                    }
                    else
                    {
                        if (textField.Length == 0)
                        {
                            textField = "CAST(" + columnName + " AS varchar)";
                        }
                        else
                        {
                            textField = textField + " + ' - ' + " + "CAST(" + columnName + " AS varchar)";
                        }
                    }
                }
            }
            else
            {
                textField = columnDef.TextField;
            }

            string       sql          = "SELECT CAST(" + columnDef.ValueField + " AS varchar) AS ValueField, (" + textField + ") AS TextField FROM " + columnDef.LookupTable + " " + orderBy;
            string       json         = "";
            PageTemplate pageTemplate = SessionService.PageTemplate(pageTemplateId);
            var          dbEntity     = SessionService.DbEntity(pageTemplate.DbEntityId);

            using (TargetEntities targetDb = new TargetEntities())
            {
                targetDb.Database.Connection.ConnectionString = dbEntity.ConnectionString;
                var recs = targetDb.Database.SqlQuery <ValueText>(sql);
                json = Newtonsoft.Json.JsonConvert.SerializeObject(recs);
                if (json.Length < 2)
                {
                    json = "[];";
                }
            }

            if (columnDef.AddBlankOption)
            {
                json = "[{ \"ValueField\":\"\", \"TextField\":\"\"}," + json.Substring(1, json.Length - 1);
            }
            return(json);
        }
        /// <summary>
        /// Generates C# code for service client.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(ServiceClient serviceClient)
        {
            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate
            {
                Model = new AzureServiceClientTemplateModel(serviceClient),
            };
            await Write(serviceClientTemplate, serviceClient.Name + ".cs");

            // Service client extensions
            var extensionsTemplate = new ExtensionsTemplate
            {
                Model = new AzureExtensionsTemplateModel(serviceClient, null),
            };
            await Write(extensionsTemplate, serviceClient.Name + "Extensions.cs");

            // Service client interface
            var serviceClientInterfaceTemplate = new ServiceClientInterfaceTemplate
            {
                Model = new AzureServiceClientTemplateModel(serviceClient),
            };
            await Write(serviceClientInterfaceTemplate, "I" + serviceClient.Name + ".cs");

            // Operations
            foreach (var group in serviceClient.MethodGroups)
            {
                // Operation
                var operationsTemplate = new AzureMethodGroupTemplate
                {
                    Model = new AzureMethodGroupTemplateModel(serviceClient, group),
                };
                await Write(operationsTemplate, operationsTemplate.Model.MethodGroupType + ".cs");

                // Service client extensions
                var operationExtensionsTemplate = new ExtensionsTemplate
                {
                    Model = new AzureExtensionsTemplateModel(serviceClient, group),
                };
                await Write(operationExtensionsTemplate, operationExtensionsTemplate.Model.ExtensionName + "Extensions.cs");

                // Operation interface
                var operationsInterfaceTemplate = new MethodGroupInterfaceTemplate
                {
                    Model = new AzureMethodGroupTemplateModel(serviceClient, group),
                };
                await Write(operationsInterfaceTemplate, "I" + operationsInterfaceTemplate.Model.MethodGroupType + ".cs");
            }

            // Models
            foreach (var model in serviceClient.ModelTypes)
            {
                if (model.Extensions.ContainsKey(ExternalExtension) && (bool) model.Extensions[ExternalExtension])
                {
                    continue;
                }

                var modelTemplate = new ModelTemplate
                {
                    Model = new AzureModelTemplateModel(model),
                };

                await Write(modelTemplate, Path.Combine("Models", model.Name + ".cs"));
            }

            // Enums
            foreach (var enumType in serviceClient.EnumTypes)
            {
                var enumTemplate = new EnumTemplate
                {
                    Model = new EnumTemplateModel(enumType),
                };
                await Write(enumTemplate, Path.Combine("Models", enumTemplate.Model.TypeDefinitionName + ".cs"));
            }

            // Page class
            foreach (var pageClass in pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new PageTemplateModel(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value),
                };
                await Write(pageTemplate, Path.Combine("Models", pageTemplate.Model.TypeDefinitionName + ".cs"));
            }
        }
Пример #26
0
        /// <summary>
        /// Generate Python client code for given ServiceClient.
        /// </summary>
        /// <param name="cm"></param>
        /// <returns></returns>
        public override async Task Generate(CodeModel cm)
        {
            var codeModel = cm as CodeModelPya;

            if (codeModel == null)
            {
                throw new Exception("CodeModel is not a Python Azure Code Model");
            }

            // Service client
            string[] namespaceParts = codeModel.Namespace.Split('.');
            for (int i = 1; i < namespaceParts.Length; ++i)
            {
                string initFolderName = Path.Combine(namespaceParts.Take(i).ToArray());
                await Write("__import__('pkg_resources').declare_namespace(__name__)",
                            Path.Combine(initFolderName, "__init__.py"), true);
            }

            var folderName    = Path.Combine(codeModel.Namespace.Split('.'));
            var setupTemplate = new SetupTemplate {
                Model = codeModel
            };

            await Write(setupTemplate, "setup.py");

            var serviceClientInitTemplate = new ServiceClientInitTemplate {
                Model = codeModel
            };

            await Write(serviceClientInitTemplate, Path.Combine(folderName, "__init__.py"));

            var serviceClientTemplate = new AzureServiceClientTemplate {
                Model = codeModel,
            };

            await Write(serviceClientTemplate, Path.Combine(folderName, codeModel.Name.ToPythonCase() + ".py"));

            var versionTemplate = new VersionTemplate {
                Model = codeModel,
            };

            await Write(versionTemplate, Path.Combine(folderName, "version.py"));

            var exceptionTemplate = new ExceptionTemplate {
                Model = codeModel,
            };

            await Write(exceptionTemplate, Path.Combine(folderName, "exceptions.py"));

            var credentialTemplate = new CredentialTemplate {
                Model = codeModel,
            };

            await Write(credentialTemplate, Path.Combine(folderName, "credentials.py"));

            //Models
            var models = codeModel.ModelTemplateModels.Where(each => !each.Extensions.ContainsKey(AzureExtensions.ExternalExtension));

            if (models.Any())
            {
                var modelInitTemplate = new AzureModelInitTemplate
                {
                    Model = codeModel
                };
                await Write(modelInitTemplate, Path.Combine(folderName, "models", "__init__.py"));

                foreach (var modelType in models)
                {
                    var modelTemplate = new ModelTemplate {
                        Model = modelType
                    };
                    await Write(modelTemplate, Path.Combine(folderName, "models", modelType.Name.ToPythonCase() + ".py"));
                }
            }

            //MethodGroups
            if (codeModel.MethodGroupModels.Any())
            {
                var methodGroupIndexTemplate = new MethodGroupInitTemplate
                {
                    Model = codeModel
                };
                await Write(methodGroupIndexTemplate, Path.Combine(folderName, "operations", "__init__.py"));

                foreach (var methodGroupModel in codeModel.MethodGroupModels)
                {
                    var methodGroupTemplate = new AzureMethodGroupTemplate
                    {
                        Model = methodGroupModel as MethodGroupPya
                    };
                    await Write(methodGroupTemplate, Path.Combine(folderName, "operations", ((string)methodGroupModel.TypeName).ToPythonCase() + ".py"));
                }
            }

            // Enums
            if (codeModel.EnumTypes.Any())
            {
                var enumTemplate = new EnumTemplate {
                    Model = codeModel.EnumTypes
                };
                await Write(enumTemplate, Path.Combine(folderName, "models", codeModel.Name.ToPythonCase() + "_enums.py"));
            }

            // Page class
            foreach (var pageModel in codeModel.PageModels)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = pageModel
                };
                await Write(pageTemplate, Path.Combine(folderName, "models", pageModel.TypeDefinitionName.ToPythonCase() + ".py"));
            }
        }
Пример #27
0
 /// <summary>
 /// Refreshes the model from the database.
 /// </summary>
 public virtual void Refresh()
 {
     if (Page != null) {
         if (!Page.IsNew) { // Page.Id != Guid.Empty) {
             Page = Page.GetSingle(Page.Id, true) ;
             GetRelated() ;
         } else {
             Template = PageTemplate.GetSingle("pagetemplate_id = @0", Page.TemplateId) ;
         }
     }
 }
Пример #28
0
 public App()
 {
     InitializeComponent();
     AppResources.Culture = CrossMultilingual.Current.DeviceCultureInfo;
     MainPage             = new PageTemplate();
 }
Пример #29
0
        /// <summary>
        /// Generate Python client code for given ServiceClient.
        /// </summary>
        /// <param name="cm"></param>
        /// <returns></returns>
        public override async Task Generate(CodeModel cm)
        {
            var codeModel = cm as CodeModelPya;

            if (codeModel == null)
            {
                throw new Exception("CodeModel is not a Python Azure Code Model");
            }


            writeNamespaceFolders(codeModel);

            if (codeModel.BasicSetupPy)
            {
                var setupTemplate = new SetupTemplate {
                    Model = codeModel
                };
                await Write(setupTemplate, "setup.py");
            }

            var folderName = codeModel.NoNamespaceFolders?"":Path.Combine(codeModel.Namespace.Split('.'));
            var serviceClientInitTemplate = new ServiceClientInitTemplate {
                Model = codeModel
            };

            await Write(serviceClientInitTemplate, Path.Combine(folderName, "__init__.py"));

            var serviceClientTemplate = new AzureServiceClientTemplate {
                Model = codeModel,
            };

            await Write(serviceClientTemplate, Path.Combine(folderName, codeModel.Name.ToPythonCase() + ".py"));

            var versionTemplate = new VersionTemplate {
                Model = codeModel,
            };

            await Write(versionTemplate, Path.Combine(folderName, "version.py"));

            //Models
            var models = codeModel.ModelTemplateModels.Where(each => !each.Extensions.ContainsKey(AzureExtensions.ExternalExtension));

            if (models.Any())
            {
                var modelInitTemplate = new AzureModelInitTemplate
                {
                    Model = codeModel
                };
                await Write(modelInitTemplate, Path.Combine(folderName, "models", "__init__.py"));

                foreach (var modelType in models)
                {
                    var modelTemplate = new ModelTemplate {
                        Model = modelType
                    };
                    await Write(modelTemplate, Path.Combine(folderName, "models", modelType.Name.ToPythonCase() + ".py"));

                    // Rebuild the same in Python 3 mode
                    modelTemplate.Python3Mode = true;
                    await Write(modelTemplate, Path.Combine(folderName, "models", modelType.Name.ToPythonCase() + "_py3.py"));
                }
            }

            //MethodGroups
            if (codeModel.MethodGroupModels.Any())
            {
                var methodGroupIndexTemplate = new MethodGroupInitTemplate
                {
                    Model = codeModel
                };
                await Write(methodGroupIndexTemplate, Path.Combine(folderName, "operations", "__init__.py"));

                foreach (var methodGroupModel in codeModel.MethodGroupModels)
                {
                    var methodGroupTemplate = new AzureMethodGroupTemplate
                    {
                        Model = methodGroupModel as MethodGroupPya
                    };
                    await Write(methodGroupTemplate, Path.Combine(folderName, "operations", ((string)methodGroupModel.TypeName).ToPythonCase() + ".py"));
                }
            }

            // Enums
            if (codeModel.EnumTypes.Any())
            {
                var enumTemplate = new EnumTemplate {
                    Model = codeModel.EnumTypes
                };
                await Write(enumTemplate, Path.Combine(folderName, "models", codeModel.Name.ToPythonCase() + "_enums.py"));
            }

            // Page class
            foreach (var pageModel in codeModel.PageModels)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = pageModel
                };
                await Write(pageTemplate, Path.Combine(folderName, "models", pageModel.TypeDefinitionName.ToPythonCase() + ".py"));
            }
        }
Пример #30
0
        public static void SetDefaultsForNew(this PageTemplateSection pageTemplateSection, PageTemplate pageTemplate)
        {
            pageTemplateSection.Name = "New Page Template Section";
            pageTemplateSection.Order = 100;
            if (pageTemplate != null)
            {
                pageTemplateSection.ClientId = pageTemplate.ClientId;
                pageTemplateSection.Client = pageTemplate.Client;
                pageTemplateSection.PageTemplateId = pageTemplate.PageTemplateId;
                pageTemplateSection.PageTemplate = pageTemplate;
                pageTemplateSection.Order = pageTemplate.Sections.Count == 0 ? 100 : pageTemplate.Sections.Max(vl => vl.Order) + 10;
                if (pageTemplate.Sections.Any(pts => pts.Name.ToLower() == pageTemplateSection.Name.ToLower()))
                {
                    bool nameIsDirty = true;
                    int index = 1;
                    do
                    {
                        index++;
                        pageTemplateSection.Name = "New Page Template Section " + index;
                        nameIsDirty = pageTemplate.Sections.Any(pts => pts.Name.ToLower() == pageTemplateSection.Name.ToLower());
                    } while (nameIsDirty);
                }
            }

            pageTemplateSection.Description = pageTemplateSection.Name;
            pageTemplateSection.IsPending = false;
            pageTemplateSection.StartDateTimeUtc = DateTime.UtcNow.AddMinutes(-1);
            pageTemplateSection.EndDateTimeUtc = DateTime.UtcNow.AddYears(100);
        }
Пример #31
0
        private void AddDummyScriptControllerToPage(string pageTitlePrefix, string urlNamePrefix, PageTemplate template, string placeHolder = "Body")
        {
            var controls  = new List <System.Web.UI.Control>();
            var mvcProxy1 = new MvcControllerProxy();

            mvcProxy1.ControllerName = typeof(DummyScriptController).FullName;
            var controller1 = new DummyScriptController();

            mvcProxy1.Settings = new ControllerSettings(controller1);
            controls.Add(mvcProxy1);

            var mvcProxy2 = new MvcControllerProxy();

            mvcProxy2.ControllerName = typeof(DummyScriptController).FullName;
            var controller2 = new DummyScriptController();

            mvcProxy2.Settings = new ControllerSettings(controller2);
            controls.Add(mvcProxy2);

            Guid pageId = FeatherServerOperations.Pages().CreatePageWithTemplate(
                template,
                pageTitlePrefix,
                urlNamePrefix);

            PageContentGenerator.AddControlsToPage(pageId, controls, placeHolder);
        }
Пример #32
0
        /// <summary>
        /// Generates C# code for service client.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(CodeModel cm)
        {
            // get Azure Java specific codeModel
            var codeModel = cm as CodeModelJvaf;

            if (codeModel == null)
            {
                throw new InvalidCastException("CodeModel is not a Azure Java Fluent CodeModel");
            }

            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate {
                Model = codeModel
            };

            await Write(serviceClientTemplate, $"{Path.Combine("implementation", codeModel.Name.ToPascalCase() + "Impl")}{ImplementationFileExtension}");

            // operations
            foreach (MethodGroupJvaf methodGroup in codeModel.AllOperations)
            {
                // Operation
                var operationsTemplate = new AzureMethodGroupTemplate {
                    Model = methodGroup
                };
                await Write(operationsTemplate, $"{Path.Combine("implementation", methodGroup.TypeName.ToPascalCase())}Inner{ImplementationFileExtension}");
            }

            //Models
            foreach (CompositeTypeJvaf modelType in cm.ModelTypes.Concat(codeModel.HeaderTypes))
            {
                if (modelType.Extensions.ContainsKey(AzureExtensions.ExternalExtension) &&
                    (bool)modelType.Extensions[AzureExtensions.ExternalExtension])
                {
                    continue;
                }
                if (modelType.IsResource)
                {
                    continue;
                }

                var modelTemplate = new ModelTemplate {
                    Model = modelType
                };
                await Write(modelTemplate, Path.Combine(modelType.ModelsPackage.Trim('.'), $"{modelType.Name.ToPascalCase()}{ImplementationFileExtension}"));
            }

            //Enums
            foreach (EnumTypeJvaf enumType in cm.EnumTypes)
            {
                var enumTemplate = new EnumTemplate {
                    Model = enumType
                };
                await Write(enumTemplate, Path.Combine(enumType.ModelsPackage.Trim('.'), $"{enumTemplate.Model.Name.ToPascalCase()}{ImplementationFileExtension}"));
            }

            // Page class
            foreach (var pageClass in codeModel.pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new PageJvaf(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value),
                };
                await Write(pageTemplate, Path.Combine("implementation", $"{pageTemplate.Model.TypeDefinitionName.ToPascalCase()}{ImplementationFileExtension}"));
            }

            // Exceptions
            foreach (CompositeTypeJv exceptionType in codeModel.ErrorTypes)
            {
                if (exceptionType.Name == "CloudError")
                {
                    continue;
                }

                var exceptionTemplate = new ExceptionTemplate {
                    Model = exceptionType
                };
                await Write(exceptionTemplate, Path.Combine(exceptionType.ModelsPackage.Trim('.'), $"{exceptionTemplate.Model.ExceptionTypeDefinitionName}{ImplementationFileExtension}"));
            }

            // package-info.java
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(cm)
            }, _packageInfoFileName);
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(cm, "implementation")
            }, Path.Combine("implementation", _packageInfoFileName));
        }
Пример #33
0
        /// <summary>
        /// Generate Python client code for given ServiceClient.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(ServiceClient serviceClient)
        {
            var serviceClientTemplateModel = new AzureServiceClientTemplateModel(serviceClient);

            if (!string.IsNullOrWhiteSpace(Version))
            {
                serviceClientTemplateModel.Version = Version;
            }

            // Service client
            var setupTemplate = new SetupTemplate
            {
                Model = serviceClientTemplateModel
            };

            await Write(setupTemplate, "setup.py");

            var serviceClientInitTemplate = new ServiceClientInitTemplate
            {
                Model = serviceClientTemplateModel
            };

            await Write(serviceClientInitTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "__init__.py"));

            var serviceClientTemplate = new AzureServiceClientTemplate
            {
                Model = serviceClientTemplateModel,
            };

            await Write(serviceClientTemplate, Path.Combine(serviceClientTemplateModel.PackageName, serviceClientTemplateModel.Name.ToPythonCase() + ".py"));

            var versionTemplate = new VersionTemplate
            {
                Model = serviceClientTemplateModel,
            };

            await Write(versionTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "version.py"));

            var exceptionTemplate = new ExceptionTemplate
            {
                Model = serviceClientTemplateModel,
            };

            await Write(exceptionTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "exceptions.py"));

            var credentialTemplate = new CredentialTemplate
            {
                Model = serviceClientTemplateModel,
            };

            await Write(credentialTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "credentials.py"));

            //Models
            if (serviceClientTemplateModel.ModelTemplateModels.Any())
            {
                var modelInitTemplate = new AzureModelInitTemplate
                {
                    Model = new AzureModelInitTemplateModel(serviceClient, pageModels.Select(t => t.TypeDefinitionName))
                };
                await Write(modelInitTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "models", "__init__.py"));

                foreach (var modelType in serviceClientTemplateModel.ModelTemplateModels)
                {
                    var modelTemplate = new ModelTemplate
                    {
                        Model = modelType
                    };
                    await Write(modelTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "models", modelType.Name.ToPythonCase() + ".py"));
                }
            }

            //MethodGroups
            if (serviceClientTemplateModel.MethodGroupModels.Any())
            {
                var methodGroupIndexTemplate = new MethodGroupInitTemplate
                {
                    Model = serviceClientTemplateModel
                };
                await Write(methodGroupIndexTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "operations", "__init__.py"));

                foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels)
                {
                    var methodGroupTemplate = new AzureMethodGroupTemplate
                    {
                        Model = methodGroupModel as AzureMethodGroupTemplateModel
                    };
                    await Write(methodGroupTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "operations", methodGroupModel.MethodGroupType.ToPythonCase() + ".py"));
                }
            }

            // Enums
            if (serviceClient.EnumTypes.Any())
            {
                var enumTemplate = new EnumTemplate
                {
                    Model = new EnumTemplateModel(serviceClient.EnumTypes),
                };
                await Write(enumTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "models", serviceClientTemplateModel.Name.ToPythonCase() + "_enums.py"));
            }

            // Page class
            foreach (var pageModel in pageModels)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = pageModel
                };
                await Write(pageTemplate, Path.Combine(serviceClientTemplateModel.PackageName, "models", pageModel.TypeDefinitionName.ToPythonCase() + ".py"));
            }
        }
Пример #34
0
        /// <summary>
        /// Refreshes the model from the database.
        /// </summary>
        public virtual void Refresh()
        {
            if (Page != null)
            {
                if (!Page.IsNew)
                { // Page.Id != Guid.Empty) {
                    Page = Page.GetSingle(Page.Id, true);
                    CanDelete = Page.GetScalar("SELECT count(*) FROM page WHERE page_parent_id = @0", Page.Id) == 0;
                    GetRelated();
                }
                else
                {
                    Template = PageTemplate.GetSingle("pagetemplate_id = @0", Page.TemplateId);

                    // Get placement ref title
                    if (Page.ParentId != Guid.Empty || Page.Seqno > 1)
                    {
                        Page refpage = null;
                        if (Page.Seqno > 1)
                        {
                            if (Page.ParentId != Guid.Empty)
                                refpage = Page.GetSingle("page_parent_id = @0 AND page_seqno = @1", Page.ParentId, Page.Seqno - 1);
                            else refpage = Page.GetSingle("page_parent_id IS NULL AND page_seqno = @0 AND page_sitetree_id = @1", Page.Seqno - 1, Page.SiteTreeId); //ÖS 2015-03-18 added siteid to the query
                        }
                        else
                        {
                            refpage = Page.GetSingle(Page.ParentId, true);
                        }
                        PlaceRef = refpage.Title;
                    }

                    // Get page position
                    Parents = BuildParentPages(Sitemap.GetStructure(Page.SiteTreeInternalId, false), Page);
                    Parents.Insert(0, new PagePlacement() { Level = 1, IsSelected = Page.ParentId == Guid.Empty });
                    Siblings = BuildSiblingPages(Page.Id, Page.ParentId, Page.Seqno, Page.ParentId, Page.SiteTreeInternalId);

                    // Initialize regions
                    foreach (var reg in Regions)
                        reg.Body.Init(this);
                }
            }
        }
Пример #35
0
 public PageTemplate SavePageTemplateProperties(PageTemplate template)
 {
     ManagePageTemplateFolders(template, FolderManagingType.CreateFolder);
     return(PageTemplateRepository.SaveProperties(template));
 }
Пример #36
0
        /// <summary>
        /// Generates Azure Java code for service client.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(CodeModel cm)
        {
            var packagePath = $"src/main/java/{cm.Namespace.ToLower().Replace('.', '/')}";

            // get Azure Java specific codeModel
            var codeModel = cm as CodeModelJva;

            if (codeModel == null)
            {
                throw new InvalidCastException("CodeModel is not a Azure Java CodeModel");
            }

            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate {
                Model = codeModel
            };

            await Write(serviceClientTemplate, $"{packagePath}/implementation/{codeModel.Name.ToPascalCase()}Impl{ImplementationFileExtension}");

            // Service client interface
            var serviceClientInterfaceTemplate = new AzureServiceClientInterfaceTemplate {
                Model = codeModel
            };

            await Write(serviceClientInterfaceTemplate, $"{packagePath}/{cm.Name.ToPascalCase()}{ImplementationFileExtension}");

            // operations
            foreach (MethodGroupJva methodGroup in codeModel.AllOperations)
            {
                // Operation
                var operationsTemplate = new AzureMethodGroupTemplate {
                    Model = methodGroup
                };
                await Write(operationsTemplate, $"{packagePath}/implementation/{methodGroup.TypeName.ToPascalCase()}Impl{ImplementationFileExtension}");

                // Operation interface
                var operationsInterfaceTemplate = new AzureMethodGroupInterfaceTemplate {
                    Model = methodGroup
                };
                await Write(operationsInterfaceTemplate, $"{packagePath}/{methodGroup.TypeName.ToPascalCase()}{ImplementationFileExtension}");
            }

            //Models
            foreach (CompositeTypeJva modelType in cm.ModelTypes.Concat(codeModel.HeaderTypes))
            {
                if (modelType.Extensions.ContainsKey(AzureExtensions.ExternalExtension) &&
                    (bool)modelType.Extensions[AzureExtensions.ExternalExtension])
                {
                    continue;
                }
                if (modelType.IsResource)
                {
                    continue;
                }

                var modelTemplate = new ModelTemplate {
                    Model = modelType
                };
                await Write(modelTemplate, $"{packagePath}/models/{modelType.Name.ToPascalCase()}{ImplementationFileExtension}");
            }

            //Enums
            foreach (EnumTypeJva enumType in cm.EnumTypes)
            {
                var enumTemplate = new EnumTemplate {
                    Model = enumType
                };
                await Write(enumTemplate, $"{packagePath}/models/{enumTemplate.Model.Name.ToPascalCase()}{ImplementationFileExtension}");
            }

            // Page class
            foreach (var pageClass in codeModel.pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new PageJva(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value),
                };
                await Write(pageTemplate, $"{packagePath}/models/{pageTemplate.Model.TypeDefinitionName.ToPascalCase()}{ImplementationFileExtension}");
            }

            // Exceptions
            foreach (CompositeTypeJv exceptionType in codeModel.ErrorTypes)
            {
                if (exceptionType.Name == "CloudError")
                {
                    continue;
                }

                var exceptionTemplate = new ExceptionTemplate {
                    Model = exceptionType
                };
                await Write(exceptionTemplate, $"{packagePath}/models/{exceptionTemplate.Model.ExceptionTypeDefinitionName}{ImplementationFileExtension}");
            }

            // package-info.java
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(cm)
            }, $"{packagePath}/{_packageInfoFileName}");
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(cm, "implementation")
            }, $"{packagePath}/implementation/{_packageInfoFileName}");
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(cm, "models")
            }, $"{packagePath}/models/{_packageInfoFileName}");

            if (true == AutoRest.Core.Settings.Instance.Host?.GetValue <bool?>("regenerate-manager").Result)
            {
                await Write(new AzurePomTemplate { Model = codeModel }, "pom.xml");
            }
        }
Пример #37
0
 public PageTemplate UpdatePageTemplateProperties(PageTemplate pageTemplate)
 {
     ManageTemplateInheritance(pageTemplate);
     ManagePageTemplateFolders(pageTemplate, FolderManagingType.ChangeFolder);
     return(PageTemplateRepository.UpdatePageTemplateProperties(pageTemplate));
 }
Пример #38
0
        private void GetRelated()
        {
            // Clear related
            Regions.Clear();
            Properties.Clear();
            AttachedContent.Clear();

            // Get group parents
            DisableGroups = SysGroup.GetParents(Page.GroupId);
            DisableGroups.Reverse();

            // Get template & permalink
            Template  = PageTemplate.GetSingle("pagetemplate_id = @0", Page.TemplateId);
            Permalink = Permalink.GetSingle(Page.PermalinkId);
            if (Permalink == null)
            {
                // Get the site tree
                using (var db = new DataContext()) {
                    var sitetree = db.SiteTrees.Where(s => s.Id == Page.SiteTreeId).Single();

                    Permalink = new Permalink()
                    {
                        Id = Guid.NewGuid(), Type = Permalink.PermalinkType.PAGE, NamespaceId = sitetree.NamespaceId
                    };
                    Page.PermalinkId = Permalink.Id;
                }
            }

            // Get placement ref title
            if (!IsSite)
            {
                if (Page.ParentId != Guid.Empty || Page.Seqno > 1)
                {
                    Page refpage = null;
                    if (Page.Seqno > 1)
                    {
                        if (Page.ParentId != Guid.Empty)
                        {
                            refpage = Page.GetSingle("page_parent_id = @0 AND page_seqno = @1", Page.ParentId, Page.Seqno - 1);
                        }
                        else
                        {
                            refpage = Page.GetSingle("page_parent_id IS NULL AND page_seqno = @0", Page.Seqno - 1);
                        }
                    }
                    else
                    {
                        refpage = Page.GetSingle(Page.ParentId, true);
                    }
                    PlaceRef = refpage.Title;
                }
            }

            if (Template != null)
            {
                // Only load regions & properties if this is an original
                if (Page.OriginalId == Guid.Empty)
                {
                    // Get regions
                    var regions = RegionTemplate.Get("regiontemplate_template_id = @0", Template.Id, new Params()
                    {
                        OrderBy = "regiontemplate_seqno"
                    });
                    foreach (var rt in regions)
                    {
                        var reg = Region.GetSingle("region_regiontemplate_id = @0 AND region_page_id = @1 and region_draft = @2",
                                                   rt.Id, Page.Id, Page.IsDraft);
                        if (reg != null)
                        {
                            Regions.Add(reg);
                        }
                        else
                        {
                            Regions.Add(new Region()
                            {
                                InternalId       = rt.InternalId,
                                Name             = rt.Name,
                                Type             = rt.Type,
                                PageId           = Page.Id,
                                RegiontemplateId = rt.Id,
                                IsDraft          = Page.IsDraft,
                                IsPageDraft      = Page.IsDraft
                            });
                        }
                    }

                    // Get Properties
                    foreach (string name in Template.Properties)
                    {
                        Property prp = Property.GetSingle("property_name = @0 AND property_parent_id = @1 AND property_draft = @2",
                                                          name, Page.Id, Page.IsDraft);
                        if (prp != null)
                        {
                            Properties.Add(prp);
                        }
                        else
                        {
                            Properties.Add(new Property()
                            {
                                Name = name, ParentId = Page.Id, IsDraft = Page.IsDraft
                            });
                        }
                    }
                }
            }
            else
            {
                throw new ArgumentException("Could not find page template for page {" + Page.Id.ToString() + "}");
            }

            // Only load attachments if this is an original
            if (Page.OriginalId == Guid.Empty)
            {
                // Get attached content
                if (Page.Attachments.Count > 0)
                {
                    // Content meta data is actually memcached, so this won't result in multiple queries
                    Page.Attachments.ForEach(a => {
                        Models.Content c = Models.Content.GetSingle(a, true);
                        if (c != null)
                        {
                            AttachedContent.Add(c);
                        }
                    });
                }
            }

            // Get page position
            Parents = BuildParentPages(Sitemap.GetStructure(Page.SiteTreeInternalId, false), Page);
            Parents.Insert(0, new PagePlacement()
            {
                Level = 1, IsSelected = Page.ParentId == Guid.Empty
            });
            Siblings = BuildSiblingPages(Page.Id, Page.ParentId, Page.Seqno, Page.ParentId, Page.SiteTreeInternalId);

            // Only load extensions if this is an original
            if (Page.OriginalId == Guid.Empty)
            {
                // Get extensions
                Extensions = Page.GetExtensions(true);
            }

            // Initialize regions
            foreach (var reg in Regions)
            {
                reg.Body.InitManager(this);
            }

            // Get whether comments should be enabled
            EnableComments = Areas.Manager.Models.CommentSettingsModel.Get().EnablePages;
            if (!Page.IsNew && EnableComments)
            {
                using (var db = new DataContext()) {
                    Comments = db.Comments.
                               Include("CreatedBy").
                               Where(c => c.ParentId == Page.Id && c.ParentIsDraft == false).
                               OrderByDescending(c => c.Created).ToList();
                }
            }

            // Get the site if this is a site page
            if (Permalink.Type == Models.Permalink.PermalinkType.SITE)
            {
                using (var db = new DataContext()) {
                    SiteTree = db.SiteTrees.Where(s => s.Id == Page.SiteTreeId).Single();
                }
            }

            // Check if the page can be published
            if (Page.OriginalId != Guid.Empty)
            {
                CanPublish = Page.GetScalar("SELECT count(*) FROM page WHERE page_id=@0 AND page_draft=0", Page.OriginalId) > 0;
            }
        }
Пример #39
0
        //POST: /admin/pages/create
        public async Task <IActionResult> Create(IFormCollection request,
                                                 [Bind("Name", "Description", "Section")] Page page)
        {
            PageTemplate template = await _Db.PageTemplates.FindAsync(
                request.Int("templateId"));

            if (template == null)
            {
                return(NotFound($"The chosen template was not found."));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest("Server side validation failed."));
            }

            try
            {
                await _Db.AddAsync(page);

                // Create initial page revision
                PageRevision pageRevision = new PageRevision
                {
                    Page      = page,
                    Template  = template,
                    CreatedBy = await _Db.Accounts.FindAsync(User.AccountId())
                };
                await _Db.AddAsync(pageRevision);

                // Create empty text fields, and associate to new page
                for (int i = 0; i < template.TextAreas; i++)
                {
                    TextComponent textField = new TextComponent {
                        SlotNo = i
                    };
                    await _Db.AddAsync(textField);

                    await _Db.AddAsync(new RevisionTextComponent
                    {
                        TextComponent = textField,
                        PageRevision  = pageRevision,
                    });
                }

                // Create empty media fields, and associate to new page
                for (int i = 0; i < template.MediaAreas; i++)
                {
                    MediaComponent mediaComponent = new MediaComponent {
                        SlotNo = i
                    };
                    await _Db.AddAsync(mediaComponent);

                    await _Db.AddAsync(new RevisionMediaComponent
                    {
                        PageRevisionId   = pageRevision.Id,
                        MediaComponentId = mediaComponent.Id
                    });
                }

                // Save all to database in one transaction
                await _Db.SaveChangesAsync();

                // Return new page URL to the caller
                return(Ok(page.AbsoluteUrl));
            }
            catch (Exception ex)
            {
                _Logger.LogWarning("Error creating new page: {0}", ex.Message);
                _Logger.LogWarning(ex.StackTrace);
                return(BadRequest("There was an error creating the page. Please try again later."));
            }
        }
Пример #40
0
        /// <summary>
        /// Generate Python client code for given ServiceClient.
        /// </summary>
        /// <param name="cm"></param>
        /// <returns></returns>
        public override async Task Generate(CodeModel cm)
        {
            var codeModel = cm as CodeModelPya;

            if (codeModel == null)
            {
                throw new Exception("CodeModel is not a Python Azure Code Model");
            }

            // Service client
            var setupTemplate = new SetupTemplate {
                Model = codeModel
            };

            await Write(setupTemplate, "setup.py");

            var serviceClientInitTemplate = new ServiceClientInitTemplate {
                Model = codeModel
            };

            await Write(serviceClientInitTemplate, Path.Combine(codeModel.PackageName, "__init__.py"));

            var serviceClientTemplate = new AzureServiceClientTemplate {
                Model = codeModel,
            };

            await Write(serviceClientTemplate, Path.Combine(codeModel.PackageName, codeModel.Name.ToPythonCase() + ".py"));

            var versionTemplate = new VersionTemplate {
                Model = codeModel,
            };

            await Write(versionTemplate, Path.Combine(codeModel.PackageName, "version.py"));

            var exceptionTemplate = new ExceptionTemplate {
                Model = codeModel,
            };

            await Write(exceptionTemplate, Path.Combine(codeModel.PackageName, "exceptions.py"));

            var credentialTemplate = new CredentialTemplate {
                Model = codeModel,
            };

            await Write(credentialTemplate, Path.Combine(codeModel.PackageName, "credentials.py"));

            //Models
            var models = codeModel.ModelTemplateModels.Where(each => !each.Extensions.ContainsKey(AzureExtensions.ExternalExtension));

            if (models.Any())
            {
                var modelInitTemplate = new AzureModelInitTemplate
                {
                    Model = codeModel
                };
                await Write(modelInitTemplate, Path.Combine(codeModel.PackageName, "models", "__init__.py"));

                foreach (var modelType in models)
                {
                    var modelTemplate = new ModelTemplate {
                        Model = modelType
                    };
                    await Write(modelTemplate, Path.Combine(codeModel.PackageName, "models", modelType.Name.ToPythonCase() + ".py"));
                }
            }

            //MethodGroups
            if (codeModel.MethodGroupModels.Any())
            {
                var methodGroupIndexTemplate = new MethodGroupInitTemplate
                {
                    Model = codeModel
                };
                await Write(methodGroupIndexTemplate, Path.Combine(codeModel.PackageName, "operations", "__init__.py"));

                foreach (var methodGroupModel in codeModel.MethodGroupModels)
                {
                    var methodGroupTemplate = new AzureMethodGroupTemplate
                    {
                        Model = methodGroupModel as MethodGroupPya
                    };
                    await Write(methodGroupTemplate, Path.Combine(codeModel.PackageName, "operations", ((string)methodGroupModel.TypeName).ToPythonCase() + ".py"));
                }
            }

            // Enums
            if (codeModel.EnumTypes.Any())
            {
                var enumTemplate = new EnumTemplate {
                    Model = codeModel.EnumTypes
                };
                await Write(enumTemplate, Path.Combine(codeModel.PackageName, "models", codeModel.Name.ToPythonCase() + "_enums.py"));
            }

            // Page class
            foreach (var pageModel in codeModel.PageModels)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = pageModel
                };
                await Write(pageTemplate, Path.Combine(codeModel.PackageName, "models", pageModel.TypeDefinitionName.ToPythonCase() + ".py"));
            }
        }
Пример #41
0
 public void Add(PageTemplate template)
 {
     _session.Transact(session => session.Save(template));
 }
Пример #42
0
        private void GetRelated()
        {
            // Clear related
            Regions.Clear();
            Properties.Clear();
            AttachedContent.Clear();

            // Get group parents
            DisableGroups = SysGroup.GetParents(Page.GroupId);
            DisableGroups.Reverse();

            // Get template & permalink
            Template = PageTemplate.GetSingle("pagetemplate_id = @0", Page.TemplateId);
            Permalink = Permalink.GetSingle(Page.PermalinkId);
            if (Permalink == null)
            {
                // Get the site tree
                using (var db = new DataContext())
                {
                    var sitetree = db.SiteTrees.Where(s => s.Id == Page.SiteTreeId).Single();

                    Permalink = new Permalink() { Id = Guid.NewGuid(), Type = Permalink.PermalinkType.PAGE, NamespaceId = sitetree.NamespaceId };
                    Page.PermalinkId = Permalink.Id;
                }
            }
            Page.IsBlock = Template.IsBlock;

            // Get placement ref title
            if (!IsSite)
            {
                if (Page.ParentId != Guid.Empty || Page.Seqno > 1)
                {
                    Page refpage = null;
                    if (Page.Seqno > 1)
                    {
                        if (Page.ParentId != Guid.Empty)
                            refpage = Page.GetSingle("page_parent_id = @0 AND page_seqno = @1", Page.ParentId, Page.Seqno - 1);
                        else refpage = Page.GetSingle("page_parent_id IS NULL AND page_seqno = @0 AND page_sitetree_id = @1", Page.Seqno - 1, Page.SiteTreeId); //ÖS 2015-03-18 added siteid to the query
                    }
                    else
                    {
                        refpage = Page.GetSingle(Page.ParentId, true);
                    }
                    PlaceRef = !String.IsNullOrWhiteSpace(refpage.NavigationTitle) ? refpage.NavigationTitle : refpage.Title;
                }
            }

            if (Template != null)
            {
                // Only load regions & properties if this is an original
                if (Page.OriginalId == Guid.Empty)
                {
                    // Get regions
                    var regions = RegionTemplate.Get("regiontemplate_template_id = @0", Template.Id, new Params() { OrderBy = "regiontemplate_seqno" });
                    foreach (var rt in regions)
                    {
                        var reg = Region.GetSingle("region_regiontemplate_id = @0 AND region_page_id = @1 and region_draft = @2",
                            rt.Id, Page.Id, Page.IsDraft);
                        if (reg != null)
                            Regions.Add(reg);
                        else Regions.Add(new Region()
                        {
                            InternalId = rt.InternalId,
                            Name = rt.Name,
                            Type = rt.Type,
                            PageId = Page.Id,
                            RegiontemplateId = rt.Id,
                            IsDraft = Page.IsDraft,
                            IsPageDraft = Page.IsDraft
                        });
                    }

                    // Get Properties
                    foreach (string name in Template.Properties)
                    {
                        Property prp = Property.GetSingle("property_name = @0 AND property_parent_id = @1 AND property_draft = @2",
                            name, Page.Id, Page.IsDraft);
                        if (prp != null)
                            Properties.Add(prp);
                        else Properties.Add(new Property() { Name = name, ParentId = Page.Id, IsDraft = Page.IsDraft });
                    }
                }
            }
            else throw new ArgumentException("Could not find page template for page {" + Page.Id.ToString() + "}");

            // Only load attachments if this is an original
            if (Page.OriginalId == Guid.Empty)
            {
                // Get attached content
                if (Page.Attachments.Count > 0)
                {
                    // Content meta data is actually memcached, so this won't result in multiple queries
                    Page.Attachments.ForEach(a => {
                        Models.Content c = Models.Content.GetSingle(a, true);
                        if (c != null)
                            AttachedContent.Add(c);
                    });
                }
            }

            // Get page position
            Parents = BuildParentPages(Sitemap.GetStructure(Page.SiteTreeInternalId, false), Page);
            Parents.Insert(0, new PagePlacement() { Level = 1, IsSelected = Page.ParentId == Guid.Empty });
            Siblings = BuildSiblingPages(Page.Id, Page.ParentId, Page.Seqno, Page.ParentId, Page.SiteTreeInternalId);

            // Only load extensions if this is an original
            if (Page.OriginalId == Guid.Empty)
            {
                // Get extensions
                Extensions = Page.GetExtensions(true);
            }

            // Initialize regions
            foreach (var reg in Regions)
                reg.Body.InitManager(this);

            // Get whether comments should be enabled
            EnableComments = Areas.Manager.Models.CommentSettingsModel.Get().EnablePages;
            if (!Page.IsNew && EnableComments)
            {
                using (var db = new DataContext())
                {
                    Comments = db.Comments.
                        Include("CreatedBy").
                        Where(c => c.ParentId == Page.Id && c.ParentIsDraft == false).
                        OrderByDescending(c => c.Created).ToList();
                }
            }

            // Get the site if this is a site page
            if (Permalink.Type == Models.Permalink.PermalinkType.SITE)
            {
                using (var db = new DataContext())
                {
                    SiteTree = db.SiteTrees.Where(s => s.Id == Page.SiteTreeId).Single();
                }
            }

            // Check if the page can be published
            if (Page.OriginalId != Guid.Empty)
            {
                CanPublish = Page.GetScalar("SELECT count(*) FROM page WHERE page_id=@0 AND page_draft=0", Page.OriginalId) > 0;
            }
        }
Пример #43
0
        /// <summary>
        /// Generates C# code for service client.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(ServiceClient serviceClient)
        {
            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate
            {
                Model = new AzureServiceClientTemplateModel(serviceClient),
            };

            await Write(serviceClientTemplate, serviceClient.Name + ".cs");

            // Service client extensions
            var extensionsTemplate = new ExtensionsTemplate
            {
                Model = new AzureExtensionsTemplateModel(serviceClient, null),
            };

            await Write(extensionsTemplate, serviceClient.Name + "Extensions.cs");

            // Service client interface
            var serviceClientInterfaceTemplate = new ServiceClientInterfaceTemplate
            {
                Model = new AzureServiceClientTemplateModel(serviceClient),
            };

            await Write(serviceClientInterfaceTemplate, "I" + serviceClient.Name + ".cs");

            // Operations
            foreach (var group in serviceClient.MethodGroups)
            {
                // Operation
                var operationsTemplate = new AzureMethodGroupTemplate
                {
                    Model = new AzureMethodGroupTemplateModel(serviceClient, group),
                };
                await Write(operationsTemplate, operationsTemplate.Model.MethodGroupType + ".cs");

                // Service client extensions
                var operationExtensionsTemplate = new ExtensionsTemplate
                {
                    Model = new AzureExtensionsTemplateModel(serviceClient, group),
                };
                await Write(operationExtensionsTemplate, operationExtensionsTemplate.Model.ExtensionName + "Extensions.cs");

                // Operation interface
                var operationsInterfaceTemplate = new MethodGroupInterfaceTemplate
                {
                    Model = new AzureMethodGroupTemplateModel(serviceClient, group),
                };
                await Write(operationsInterfaceTemplate, "I" + operationsInterfaceTemplate.Model.MethodGroupType + ".cs");
            }

            // Models
            foreach (var model in serviceClient.ModelTypes.Concat(serviceClient.HeaderTypes))
            {
                if (model.Extensions.ContainsKey(AzureExtensions.ExternalExtension) &&
                    (bool)model.Extensions[AzureExtensions.ExternalExtension])
                {
                    continue;
                }

                var modelTemplate = new ModelTemplate
                {
                    Model = new AzureModelTemplateModel(model),
                };

                await Write(modelTemplate, Path.Combine("Models", model.Name + ".cs"));
            }

            // Enums
            foreach (var enumType in serviceClient.EnumTypes)
            {
                var enumTemplate = new EnumTemplate
                {
                    Model = new EnumTemplateModel(enumType),
                };
                await Write(enumTemplate, Path.Combine("Models", enumTemplate.Model.TypeDefinitionName + ".cs"));
            }

            // Page class
            foreach (var pageClass in pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new PageTemplateModel(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value),
                };
                await Write(pageTemplate, Path.Combine("Models", pageTemplate.Model.TypeDefinitionName + ".cs"));
            }

            // Exceptions
            foreach (var exceptionType in serviceClient.ErrorTypes)
            {
                if (exceptionType.Name == "CloudError")
                {
                    continue;
                }

                var exceptionTemplate = new ExceptionTemplate
                {
                    Model = new ModelTemplateModel(exceptionType),
                };
                await Write(exceptionTemplate, Path.Combine("Models", exceptionTemplate.Model.ExceptionTypeDefinitionName + ".cs"));
            }
        }
Пример #44
0
 public void Update(PageTemplate template)
 {
     _session.Transact(session => session.Update(template));
 }
Пример #45
0
 public bool UpdateTemplate(PageTemplate template)
 {
     return(repoTemplate.Update(template));
 }
Пример #46
0
        /// <summary>
        /// Generate Python client code for given ServiceClient.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(ServiceClient serviceClient)
        {
            var serviceClientTemplateModel = new AzureServiceClientTemplateModel(serviceClient);

            if (!string.IsNullOrWhiteSpace(Version))
            {
                serviceClientTemplateModel.Version = Version;
            }

            // Service client
            var setupTemplate = new SetupTemplate
            {
                Model = serviceClientTemplateModel
            };
            await Write(setupTemplate, "setup.py");

            var serviceClientInitTemplate = new ServiceClientInitTemplate
            {
                Model = serviceClientTemplateModel
            };
            await Write(serviceClientInitTemplate, Path.Combine(serviceClient.Name.ToPythonCase(), "__init__.py"));

            var serviceClientTemplate = new AzureServiceClientTemplate
            {
                Model = serviceClientTemplateModel,
            };
            await Write(serviceClientTemplate, Path.Combine(serviceClient.Name.ToPythonCase(), "api_client.py"));

            //Models
            if (serviceClientTemplateModel.ModelTemplateModels.Any())
            {
                var modelInitTemplate = new AzureModelInitTemplate
                {
                    Model = new AzureModelInitTemplateModel(serviceClient, pageModels.Select(t => t.TypeDefinitionName))
                };
                await Write(modelInitTemplate, Path.Combine(serviceClient.Name.ToPythonCase(), "models", "__init__.py"));

                foreach (var modelType in serviceClientTemplateModel.ModelTemplateModels)
                {
                    var modelTemplate = new ModelTemplate
                    {
                        Model = modelType
                    };
                    await Write(modelTemplate, Path.Combine(serviceClient.Name.ToPythonCase(), "models", modelType.Name.ToPythonCase() + ".py"));
                }
            }

            //MethodGroups
            if (serviceClientTemplateModel.MethodGroupModels.Any())
            {
                var methodGroupIndexTemplate = new MethodGroupInitTemplate
                {
                    Model = serviceClientTemplateModel
                };
                await Write(methodGroupIndexTemplate, Path.Combine(serviceClient.Name.ToPythonCase(), "operations", "__init__.py"));

                foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels)
                {
                    var methodGroupTemplate = new AzureMethodGroupTemplate
                    {
                        Model = methodGroupModel as AzureMethodGroupTemplateModel
                    };
                    await Write(methodGroupTemplate, Path.Combine(serviceClient.Name.ToPythonCase(), "operations", methodGroupModel.MethodGroupType.ToPythonCase() + ".py"));
                }
            }

            // Enums
            if (serviceClient.EnumTypes.Any())
            {
                var enumTemplate = new EnumTemplate
                {
                    Model = new EnumTemplateModel(serviceClient.EnumTypes),
                };
                await Write(enumTemplate, Path.Combine(serviceClient.Name.ToPythonCase(), "models", "enums.py"));
            }

            // Page class
            foreach (var pageModel in pageModels)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = pageModel
                };
                await Write(pageTemplate, Path.Combine(serviceClient.Name.ToPythonCase(), "models", pageModel.TypeDefinitionName.ToPythonCase() + ".py"));
            }
        }
Пример #47
0
        private void GetRelated()
        {
            // Clear related
            PageRegions.Clear() ;
            Properties.Clear() ;
            AttachedContent.Clear() ;

            // Get placement ref title
            if (Page.ParentId != Guid.Empty || Page.Seqno > 1) {
                Page refpage = null ;
                if (Page.Seqno > 1) {
                    if (Page.ParentId != Guid.Empty)
                        refpage = Page.GetSingle("page_parent_id = @0 AND page_seqno = @1", Page.ParentId, Page.Seqno - 1) ;
                    else refpage = Page.GetSingle("page_parent_id IS NULL AND page_seqno = @0", Page.Seqno - 1) ;
                } else {
                    refpage = Page.GetSingle(Page.ParentId, true) ;
                }
                PlaceRef = refpage.Title ;
            }

            // Get template & permalink
            Template  = PageTemplate.GetSingle("pagetemplate_id = @0", Page.TemplateId) ;
            Permalink = Permalink.GetSingle(Page.PermalinkId) ;
            if (Permalink == null) {
                Permalink = new Permalink() { Id = Guid.NewGuid(), Type = Permalink.PermalinkType.PAGE, NamespaceId = new Guid("8FF4A4B4-9B6C-4176-AAA2-DB031D75AC03") } ;
                Page.PermalinkId = Permalink.Id ;
            }

            if (Template != null) {
                // Get page regions
                foreach (string name in Template.PageRegions) {
                    Region reg = Region.GetSingle("region_name = @0 AND region_page_id = @1 AND region_draft = @2",
                        name, Page.Id, Page.IsDraft) ;
                    if (reg != null)
                        PageRegions.Add(reg) ;
                    else PageRegions.Add(new Region() { Name = name, PageId = Page.Id, IsDraft = Page.IsDraft, IsPageDraft = Page.IsDraft }) ;
                }

                // Get Properties
                foreach (string name in Template.Properties) {
                    Property prp = Property.GetSingle("property_name = @0 AND property_parent_id = @1 AND property_draft = @2",
                        name, Page.Id, Page.IsDraft) ;
                    if (prp != null)
                        Properties.Add(prp) ;
                    else Properties.Add(new Property() { Name = name, ParentId = Page.Id, IsDraft = Page.IsDraft }) ;
                }
            } else throw new ArgumentException("Could not find page template for page {" + Page.Id.ToString() + "}") ;

            // Get attached content
            if (Page.Attachments.Count > 0) {
                // Content meta data is actually memcached, so this won't result in multiple queries
                Page.Attachments.ForEach(a => {
                    Models.Content c = Models.Content.GetSingle(a) ;
                    if (c != null)
                        AttachedContent.Add(c) ;
                }) ;
            }

            // Get page position
            Parents = BuildParentPages(Sitemap.GetStructure(false), Page) ;
            Parents.Insert(0, new PagePlacement() { Level = 1, IsSelected = Page.ParentId == Guid.Empty }) ;
            Siblings = BuildSiblingPages(Page.Id, Page.ParentId, Page.Seqno, Page.ParentId) ;
        }
 public static Boolean IsHidden(this MetaColumn column, PageTemplate currentPage)
 {
     var hideIn = column.Attributes.OfType<HideColumnInAttribute>().DefaultIfEmpty(new HideColumnInAttribute()).First() as HideColumnInAttribute;
     return hideIn.PageTemplates.Contains(currentPage);
 }
Пример #49
0
        /// <summary>
        /// Gets the package from template.
        /// </summary>
        /// <param name="template">The template.</param>
        /// <returns></returns>
        private string GetPackageFromTemplate(PageTemplate template)
        {
            var currentTemplate = template;
            while (currentTemplate != null)
            {
                var title = currentTemplate.Title.ToString();
                var parts = title.Split('.');
                if (parts.Length > 1)
                {
                    var expectedPackageName = this.StripInvalidCharacters(parts[0]);
                    var path = HostingEnvironment.MapPath(this.GetPackageVirtualPath(expectedPackageName));
                    if (Directory.Exists(path))
                    {
                        SystemManager.CurrentHttpContext.Items[PackageManager.CurrentPackageKey] = expectedPackageName;
                        return expectedPackageName;
                    }
                }

                currentTemplate = currentTemplate.ParentTemplate;
            }

            return null;
        }
        /// <summary>
        /// Generates C# code for service client.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(ServiceClient serviceClient)
        {
            var serviceClientTemplateModel = new AzureServiceClientTemplateModel(serviceClient);
            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate
            {
                Model = serviceClientTemplateModel,
            };
            await Write(serviceClientTemplate, serviceClient.Name.ToPascalCase() + "Impl.java");

            var serviceClientInterfaceTemplate = new AzureServiceClientInterfaceTemplate
            {
                Model = serviceClientTemplateModel,
            };
            await Write(serviceClientInterfaceTemplate, serviceClient.Name.ToPascalCase() + ".java");

            //Models
            foreach (var modelType in serviceClient.ModelTypes.Concat(serviceClient.HeaderTypes))
            {
                if (modelType.Extensions.ContainsKey(AzureExtensions.ExternalExtension) &&
                    (bool)modelType.Extensions[AzureExtensions.ExternalExtension])
                {
                    continue;
                }

                var modelTemplate = new ModelTemplate
                {
                    Model = new AzureModelTemplateModel(modelType, serviceClient)
                };
                await Write(modelTemplate, Path.Combine("models", modelType.Name.ToPascalCase() + ".java"));
            }

            //MethodGroups
            if (serviceClientTemplateModel.MethodGroupModels.Any())
            {
                foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels)
                {
                    var methodGroupTemplate = new AzureMethodGroupTemplate
                    {
                        Model = (AzureMethodGroupTemplateModel)methodGroupModel
                    };
                    await Write(methodGroupTemplate, methodGroupModel.MethodGroupType.ToPascalCase() + "Impl.java");
                    var methodGroupInterfaceTemplate = new AzureMethodGroupInterfaceTemplate
                    {
                        Model = (AzureMethodGroupTemplateModel)methodGroupModel
                    };
                    await Write(methodGroupInterfaceTemplate, methodGroupModel.MethodGroupType.ToPascalCase() + ".java");
                }
            }

            //Enums
            foreach (var enumType in serviceClient.EnumTypes)
            {
                var enumTemplate = new EnumTemplate
                {
                    Model = new EnumTemplateModel(enumType),
                };
                await Write(enumTemplate, Path.Combine("models", enumTemplate.Model.Name.ToPascalCase() + ".java"));
            }

            // Page class
            foreach (var pageClass in pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new PageTemplateModel(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value),
                };
                await Write(pageTemplate, Path.Combine("models", pageTemplate.Model.TypeDefinitionName + ".java"));
            }

            // Exceptions
            foreach (var exceptionType in serviceClient.ErrorTypes)
            {
                if (exceptionType.Name == "CloudError")
                {
                    continue;
                }

                var exceptionTemplate = new ExceptionTemplate
                {
                    Model = new ModelTemplateModel(exceptionType, serviceClient),
                };
                await Write(exceptionTemplate, Path.Combine("models", exceptionTemplate.Model.ExceptionTypeDefinitionName + ".java"));
            }

            // package-info.java
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(serviceClient, serviceClient.Name)
            }, _packageInfoFileName);
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(serviceClient, serviceClient.Name, true)
            }, Path.Combine("models", _packageInfoFileName));
        }
Пример #51
0
 public HideColumnInAttribute(PageTemplate lookupTable)
 {
     PageTemplates = new PageTemplate[] { lookupTable };
 }
        private void AddPredefinedRegions(IDictionary <string, RegionModelData> regionModels, PageTemplate pageTemplate)
        {
            IEnumerable <XmlElement> regionsMetadata = pageTemplate.Metadata.GetEmbeddedFieldValues("regions");

            if (regionsMetadata == null)
            {
                Logger.Debug($"No predefined Regions found in {pageTemplate.FormatIdentifier()}");
                return;
            }

            foreach (XmlElement regionMetadata in regionsMetadata)
            {
                string regionName = regionMetadata.GetTextFieldValue("name");
                string qualifiedRegionViewName = regionMetadata.GetTextFieldValue("view");
                string moduleName;
                string regionViewName = StripModuleName(qualifiedRegionViewName, out moduleName);

                if (string.IsNullOrEmpty(regionName))
                {
                    regionName = regionViewName;
                }

                if (regionModels.ContainsKey(regionName))
                {
                    throw new DxaException($"Duplicate predefined Region name '{regionName}' encountered in {pageTemplate.FormatIdentifier()}.");
                }

                RegionModelData regionModel = new RegionModelData
                {
                    Name    = regionName,
                    MvcData = new MvcData
                    {
                        ViewName = regionViewName,
                        AreaName = moduleName
                    },
                    Metadata = ExtractCustomMetadata(regionMetadata, excludeFields: _standardRegionMetadataFields),
                    Entities = new List <EntityModelData>()
                };

                regionModels.Add(regionName, regionModel);
            }
        }
Пример #53
0
		/// <summary>
		/// Saves the current edit model.
		/// </summary>
		/// <returns>Whether the entity was updated or not</returns>
		public bool Save() {
			using (var db = new DataContext()) {
				InternalId = (!String.IsNullOrEmpty(InternalId) ? InternalId.Replace(" ", "") : Name.Replace(" ", "")).ToUpper() ;

				var site = db.SiteTrees.Where(s => s.Id == Id).SingleOrDefault() ;
				if (site == null) {
					// Create new dedicated namespace
					var name = new Namespace() {
						Id = Guid.NewGuid(),
						Name = "Site namespace",
						InternalId = InternalId,
						Description = "Namespace for the site " + InternalId,
					} ;
					db.Namespaces.Add(name) ;

					// Create site
					site = new SiteTree() ;
					site.Id = Id ;
					site.NamespaceId = NamespaceId = name.Id ;
					db.SiteTrees.Add(site) ;

				}

				// If we've changed namespace, update all related permalinks.
				if (site.NamespaceId != NamespaceId)
					ChangeNamespace(db, Id, NamespaceId) ;

				// Update the site tree
				site.NamespaceId = NamespaceId ;
				site.InternalId = InternalId ;
				site.Name = Name ;
				site.HostNames = HostNames ;
				site.Description = Description ;

				// Update the site template
				var template = db.PageTemplates.Include(pt => pt.RegionTemplates).Where(pt => pt.Id == Id && pt.IsSiteTemplate).SingleOrDefault() ;
				if (template == null) {
					template = new PageTemplate() ;
					db.PageTemplates.Add(template) ;
					
					template.Id = Id ;
					template.Name = Id.ToString() ;
					template.IsSiteTemplate = true ;
				}
				template.Preview = Template.Preview ;
				template.Properties = Template.Properties ;

				// Update the regions
				var currentRegions = new List<Guid>() ;
				foreach (var reg in Regions) {
					var region = template.RegionTemplates.Where(r => r.Id == reg.Id).SingleOrDefault() ;
					if (region == null) {
						region = new RegionTemplate() ;
						db.RegionTemplates.Add(region) ;
						template.RegionTemplates.Add(region) ;

						region.Id = Guid.NewGuid() ;
						region.TemplateId = template.Id ;
						region.Type = reg.Type ;
					}
					region.Name = reg.Name ;
					region.InternalId = reg.InternalId ;
					region.Seqno = reg.Seqno ;
					region.Description = reg.Description ;
					currentRegions.Add(region.Id) ;
				}
				// Delete removed regions
				foreach (var reg in template.RegionTemplates.Where(r => !currentRegions.Contains(r.Id)).ToList()) {
					db.RegionTemplates.Remove(reg) ;
				}

				// Check that we have a site page, if not, create it
				var page = db.Pages.Where(p => p.SiteTreeId == site.Id && p.TemplateId == site.Id).SingleOrDefault() ;
				if (page == null) {
					// Create page
					page = new Page() {
						Id = Guid.NewGuid(),
						SiteTreeId = site.Id,
						TemplateId = site.Id,
						ParentId = site.Id,
						Title = site.Id.ToString(),
						PermalinkId = Guid.NewGuid()
					} ;

					// Create published version
					var published = page.Clone() ;
					published.IsDraft = false ;

					// Create permalink
					var permalink = new Permalink() {
						Id = page.PermalinkId,
						NamespaceId = site.NamespaceId,
						Name = site.Id.ToString(),
						Type = "SITE"
					} ;

					// Attach to context
					page.Attach(db, EntityState.Added) ;
					published.Attach(db, EntityState.Added) ;
					permalink.Attach(db, EntityState.Added) ;
				}
				var ret = db.SaveChanges() > 0 ;

				Id = site.Id ;

				// Refresh host name configuration
				if (ret)
					WebPages.WebPiranha.RegisterDefaultHostNames() ;
				return ret ;
			}
		}
Пример #54
0
        /// <summary>
        /// Saves the current edit model.
        /// </summary>
        /// <returns>Whether the entity was updated or not</returns>
        public bool Save()
        {
            using (var db = new DataContext()) {
                InternalId = (!String.IsNullOrEmpty(InternalId) ? InternalId.Replace(" ", "") : Name.Replace(" ", "")).ToUpper();

                var site = db.SiteTrees.Where(s => s.Id == Id).SingleOrDefault();
                if (site == null)
                {
                    // Create new dedicated namespace
                    var name = new Namespace()
                    {
                        Id          = Guid.NewGuid(),
                        Name        = "Site namespace",
                        InternalId  = InternalId,
                        Description = "Namespace for the site " + InternalId,
                    };
                    db.Namespaces.Add(name);

                    // Create site
                    site             = new SiteTree();
                    site.Id          = Id;
                    site.NamespaceId = NamespaceId = name.Id;
                    db.SiteTrees.Add(site);
                }

                // If we've changed namespace, update all related permalinks.
                if (site.NamespaceId != NamespaceId)
                {
                    ChangeNamespace(db, Id, NamespaceId);
                }

                // Update the site tree
                site.NamespaceId = NamespaceId;
                site.InternalId  = InternalId;
                site.Name        = Name;
                site.HostNames   = HostNames;
                site.Description = Description;

                // Update the site template
                var template = db.PageTemplates.Include(pt => pt.RegionTemplates).Where(pt => pt.Id == Id && pt.IsSiteTemplate).SingleOrDefault();
                if (template == null)
                {
                    template = new PageTemplate();
                    db.PageTemplates.Add(template);

                    template.Id             = Id;
                    template.Name           = Id.ToString();
                    template.IsSiteTemplate = true;
                }
                template.Preview    = Template.Preview;
                template.Properties = Template.Properties;

                // Update the regions
                var currentRegions = new List <Guid>();
                foreach (var reg in Regions)
                {
                    var region = template.RegionTemplates.Where(r => r.Id == reg.Id).SingleOrDefault();
                    if (region == null)
                    {
                        region = new RegionTemplate();
                        db.RegionTemplates.Add(region);
                        template.RegionTemplates.Add(region);

                        region.Id         = Guid.NewGuid();
                        region.TemplateId = template.Id;
                        region.Type       = reg.Type;
                    }
                    region.Name        = reg.Name;
                    region.InternalId  = reg.InternalId;
                    region.Seqno       = reg.Seqno;
                    region.Description = reg.Description;
                    currentRegions.Add(region.Id);
                }
                // Delete removed regions
                foreach (var reg in template.RegionTemplates.Where(r => !currentRegions.Contains(r.Id)).ToList())
                {
                    db.RegionTemplates.Remove(reg);
                }

                // Check that we have a site page, if not, create it
                var page = db.Pages.Where(p => p.SiteTreeId == site.Id && p.TemplateId == site.Id).SingleOrDefault();
                if (page == null)
                {
                    // Create page
                    page = new Page()
                    {
                        Id          = Guid.NewGuid(),
                        SiteTreeId  = site.Id,
                        TemplateId  = site.Id,
                        ParentId    = site.Id,
                        Title       = site.Id.ToString(),
                        PermalinkId = Guid.NewGuid()
                    };

                    // Create published version
                    var published = page.Clone();
                    published.IsDraft = false;

                    // Create permalink
                    var permalink = new Permalink()
                    {
                        Id          = page.PermalinkId,
                        NamespaceId = site.NamespaceId,
                        Name        = site.Id.ToString(),
                        Type        = "SITE"
                    };

                    // Attach to context
                    page.Attach(db, EntityState.Added);
                    published.Attach(db, EntityState.Added);
                    permalink.Attach(db, EntityState.Added);
                }
                var ret = db.SaveChanges() > 0;

                Id = site.Id;

                // Refresh host name configuration
                if (ret)
                {
                    WebPages.WebPiranha.RegisterDefaultHostNames();
                }
                return(ret);
            }
        }
 public HideColumnInAttribute()
 {
     PageTemplates = new PageTemplate[0];
 }
Пример #56
0
        /// <summary>
        /// Generates C# code for service client.
        /// </summary>
        /// <param name="cm"></param>
        /// <returns></returns>
        public override async Task Generate(CodeModel cm)
        {
            var codeModel = cm as CodeModelCsa;

            if (codeModel == null)
            {
                throw new InvalidCastException("CodeModel is not a Azure c# CodeModel");
            }

            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate {
                Model = codeModel
            };

            await Write(serviceClientTemplate, $"{codeModel.Name}{ImplementationFileExtension}");

            // Service client interface
            var serviceClientInterfaceTemplate = new ServiceClientInterfaceTemplate {
                Model = codeModel
            };

            await Write(serviceClientInterfaceTemplate, "I" + codeModel.Name + ImplementationFileExtension);

            // Operations
            foreach (MethodGroupCs group in codeModel.Operations)
            {
                if (!group.IsCodeModelMethodGroup)
                {
                    // Operation
                    var operationsTemplate = new AzureMethodGroupTemplate {
                        Model = group
                    };
                    await Write(operationsTemplate, operationsTemplate.Model.TypeName + ImplementationFileExtension);

                    // Operation interface
                    var operationsInterfaceTemplate = new MethodGroupInterfaceTemplate {
                        Model = group
                    };
                    await Write(operationsInterfaceTemplate,
                                $"I{operationsInterfaceTemplate.Model.TypeName}{ImplementationFileExtension}");
                }
                var operationExtensionsTemplate = new ExtensionsTemplate {
                    Model = group
                };
                await Write(operationExtensionsTemplate,
                            $"{group.ExtensionTypeName}Extensions{ImplementationFileExtension}");
            }

            // Models
            foreach (CompositeTypeCs model in codeModel.ModelTypes.Concat(codeModel.HeaderTypes))
            {
                if (model.Extensions.ContainsKey(AzureExtensions.ExternalExtension) &&
                    (bool)model.Extensions[AzureExtensions.ExternalExtension])
                {
                    continue;
                }
                if (model.IsResource())
                {
                    continue;
                }
                var modelTemplate = new ModelTemplate {
                    Model = model
                };
                await Write(modelTemplate, Path.Combine(Settings.Instance.ModelsName,
                                                        $"{model.Name}{ImplementationFileExtension}"));
            }

            // Enums
            foreach (EnumTypeCs enumType in codeModel.EnumTypes)
            {
                var enumTemplate = new EnumTemplate {
                    Model = enumType
                };
                await Write(enumTemplate, Path.Combine(Settings.Instance.ModelsName,
                                                       $"{enumTemplate.Model.Name}{ImplementationFileExtension}"));
            }

            // Page class
            foreach (var pageClass in codeModel.pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new Page(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value)
                };
                await Write(pageTemplate, Path.Combine(Settings.Instance.ModelsName,
                                                       $"{pageTemplate.Model.TypeDefinitionName}{ImplementationFileExtension}"));
            }
            // Exceptions
            foreach (CompositeTypeCs exceptionType in codeModel.ErrorTypes)
            {
                if (exceptionType.Name == "CloudError")
                {
                    continue;
                }

                var exceptionTemplate = new ExceptionTemplate {
                    Model = exceptionType
                };
                await Write(exceptionTemplate, Path.Combine(Settings.Instance.ModelsName,
                                                            $"{exceptionTemplate.Model.ExceptionTypeDefinitionName}{ImplementationFileExtension}"));
            }
        }
 public HideColumnFieldsManager(MetaTable table, PageTemplate currentPage)
 {
     _table = table;
     _currentPage = currentPage;
 }
Пример #58
0
 public static void Clean(this PageTemplate input)
 {
     input.Description = Clean(input.Description);
     input.Name        = Clean(input.Name);
 }
Пример #59
0
        /// <summary>
        /// Generates C# code for service client.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(ServiceClient serviceClient)
        {
            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate
            {
                Model = new AzureServiceClientTemplateModel(serviceClient, InternalConstructors),
            };
            await Write(serviceClientTemplate, serviceClient.Name + ".cs");

            // Service client extensions
            if (serviceClient.Methods.Any(m => m.Group == null))
            {
                var extensionsTemplate = new ExtensionsTemplate
                {
                    Model = new AzureExtensionsTemplateModel(serviceClient, null, SyncMethods),
                };
                await Write(extensionsTemplate, serviceClient.Name + "Extensions.cs");
            }

            // Service client interface
            var serviceClientInterfaceTemplate = new ServiceClientInterfaceTemplate
            {
                Model = new AzureServiceClientTemplateModel(serviceClient, InternalConstructors),
            };
            await Write(serviceClientInterfaceTemplate, "I" + serviceClient.Name + ".cs");

            // Operations
            foreach (var group in serviceClient.MethodGroups)
            {
                // Operation
                var operationsTemplate = new AzureMethodGroupTemplate
                {
                    Model = new AzureMethodGroupTemplateModel(serviceClient, group),
                };
                await Write(operationsTemplate, operationsTemplate.Model.MethodGroupType + ".cs");

                // Service client extensions
                var operationExtensionsTemplate = new ExtensionsTemplate
                {
                    Model = new AzureExtensionsTemplateModel(serviceClient, group, SyncMethods),
                };
                await Write(operationExtensionsTemplate, operationExtensionsTemplate.Model.ExtensionName + "Extensions.cs");

                // Operation interface
                var operationsInterfaceTemplate = new MethodGroupInterfaceTemplate
                {
                    Model = new AzureMethodGroupTemplateModel(serviceClient, group),
                };
                await Write(operationsInterfaceTemplate, "I" + operationsInterfaceTemplate.Model.MethodGroupType + ".cs");
            }

            // Models
            foreach (var model in serviceClient.ModelTypes.Concat(serviceClient.HeaderTypes))
            {
                if (model.Extensions.ContainsKey(AzureExtensions.ExternalExtension) && 
                    (bool) model.Extensions[AzureExtensions.ExternalExtension])
                {
                    continue;
                }

                var modelTemplate = new ModelTemplate
                {
                    Model = new AzureModelTemplateModel(model),
                };

                await Write(modelTemplate, Path.Combine(Settings.ModelsName, model.Name + ".cs"));
            }

            // Enums
            foreach (var enumType in serviceClient.EnumTypes)
            {
                var enumTemplate = new EnumTemplate
                {
                    Model = new EnumTemplateModel(enumType),
                };
                await Write(enumTemplate, Path.Combine(Settings.ModelsName, enumTemplate.Model.TypeDefinitionName + ".cs"));
            }

            // Page class
            foreach (var pageClass in pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new PageTemplateModel(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value),
                };
                await Write(pageTemplate, Path.Combine(Settings.ModelsName, pageTemplate.Model.TypeDefinitionName + ".cs"));
            }

            // Exceptions
            foreach (var exceptionType in serviceClient.ErrorTypes)
            {
                if (exceptionType.Name == "CloudError")
                {
                    continue;
                }

                var exceptionTemplate = new ExceptionTemplate
                {
                    Model = new ModelTemplateModel(exceptionType),
                };
                await Write(exceptionTemplate, Path.Combine(Settings.ModelsName, exceptionTemplate.Model.ExceptionTypeDefinitionName + ".cs"));
            }
        }
Пример #60
0
        /// <summary>
        /// Generates C# code for service client.
        /// </summary>
        /// <param name="serviceClient"></param>
        /// <returns></returns>
        public override async Task Generate(ServiceClient serviceClient)
        {
            var serviceClientTemplateModel = new AzureServiceClientTemplateModel(serviceClient);
            // Service client
            var serviceClientTemplate = new AzureServiceClientTemplate
            {
                Model = serviceClientTemplateModel,
            };

            await Write(serviceClientTemplate, serviceClient.Name.ToPascalCase() + "Impl.java");

            var serviceClientInterfaceTemplate = new AzureServiceClientInterfaceTemplate
            {
                Model = serviceClientTemplateModel,
            };

            await Write(serviceClientInterfaceTemplate, serviceClient.Name.ToPascalCase() + ".java");

            //Models
            foreach (var modelType in serviceClient.ModelTypes.Concat(serviceClient.HeaderTypes))
            {
                if (modelType.Extensions.ContainsKey(AzureExtensions.ExternalExtension) &&
                    (bool)modelType.Extensions[AzureExtensions.ExternalExtension])
                {
                    continue;
                }

                var modelTemplate = new ModelTemplate
                {
                    Model = new AzureModelTemplateModel(modelType, serviceClient)
                };
                await Write(modelTemplate, Path.Combine("models", modelType.Name.ToPascalCase() + ".java"));
            }

            //MethodGroups
            if (serviceClientTemplateModel.MethodGroupModels.Any())
            {
                foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels)
                {
                    var methodGroupTemplate = new AzureMethodGroupTemplate
                    {
                        Model = (AzureMethodGroupTemplateModel)methodGroupModel
                    };
                    await Write(methodGroupTemplate, methodGroupModel.MethodGroupType.ToPascalCase() + "Impl.java");

                    var methodGroupInterfaceTemplate = new AzureMethodGroupInterfaceTemplate
                    {
                        Model = (AzureMethodGroupTemplateModel)methodGroupModel
                    };
                    await Write(methodGroupInterfaceTemplate, methodGroupModel.MethodGroupType.ToPascalCase() + ".java");
                }
            }

            //Enums
            foreach (var enumType in serviceClient.EnumTypes)
            {
                var enumTemplate = new EnumTemplate
                {
                    Model = new EnumTemplateModel(enumType),
                };
                await Write(enumTemplate, Path.Combine("models", enumTemplate.Model.Name.ToPascalCase() + ".java"));
            }

            // Page class
            foreach (var pageClass in pageClasses)
            {
                var pageTemplate = new PageTemplate
                {
                    Model = new PageTemplateModel(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value),
                };
                await Write(pageTemplate, Path.Combine("models", pageTemplate.Model.TypeDefinitionName + ".java"));
            }

            // Exceptions
            foreach (var exceptionType in serviceClient.ErrorTypes)
            {
                if (exceptionType.Name == "CloudError")
                {
                    continue;
                }

                var exceptionTemplate = new ExceptionTemplate
                {
                    Model = new ModelTemplateModel(exceptionType, serviceClient),
                };
                await Write(exceptionTemplate, Path.Combine("models", exceptionTemplate.Model.ExceptionTypeDefinitionName + ".java"));
            }

            // package-info.java
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(serviceClient, serviceClient.Name)
            }, _packageInfoFileName);
            await Write(new PackageInfoTemplate
            {
                Model = new PackageInfoTemplateModel(serviceClient, serviceClient.Name, true)
            }, Path.Combine("models", _packageInfoFileName));
        }