Beispiel #1
0
        public Task <string> RenderViewAsync(SkinTawkToModule module, SkinTawkToModuleController.DisplayModel model)
        {
            ScriptBuilder sb = new ScriptBuilder();

            ConfigData config = ConfigDataProvider.GetConfigAsync().Result;

            sb.Append($@"
// https://www.tawk.to/javascript-api/
var Tawk_API = Tawk_API || {{}}, Tawk_LoadStart = new Date();");

            if (Manager.HaveUser)
            {
                sb.Append($@"
Tawk_API.visitor = {{
    name: '{JE(Manager.UserName)}',
    email: '{JE(Manager.UserEmail)}',
    hash: '{JE(model.Hash)}'
}};");
            }

            sb.Append($@"
(function() {{
    var s1=document.createElement('script'),s0=document.getElementsByTagName('script')[0];
    s1.async=true;
    s1.src = '{JE(string.Format("https://embed.tawk.to/{0}/default", Utility.UrlEncodePath(config.Account)))}';
    s1.charset='UTF-8';
    s1.setAttribute('crossorigin','*');
    s0.parentNode.insertBefore(s1,s0);
}})();");

            Manager.ScriptManager.AddLast(sb.ToString());

            return(Task.FromResult <string>(null));
        }
 private static void AppendDelimiter(ScriptBuilder scriptBuilder, ref int i)
 {
     if (i++ == 0) {
         scriptBuilder.Append("  ");
     }
     else {
         scriptBuilder.AppendLine();
         scriptBuilder.Append(" ,");
     }
 }
        private async Task SaveRatesJSAsync(ExchangeRateData data)
        {
            string        file = GetJSFileName();
            ScriptBuilder sb   = new ScriptBuilder();

            sb.Append("// Generated file (see ExchangeRateDataProvider) - Do not modify\n");
            sb.Append("YetaWF_CurrencyConverter_Rates = \n");
            sb.Append(Utility.JsonSerialize(data.Rates));
            sb.Append(";\n");
            await FileSystem.FileSystemProvider.WriteAllTextAsync(file, sb.ToString());
        }
Beispiel #4
0
 private static void AppendDelimiter(ScriptBuilder scriptBuilder, ref int i)
 {
     if (i++ == 0)
     {
         scriptBuilder.Append("  ");
     }
     else
     {
         scriptBuilder.AppendLine();
         scriptBuilder.Append(" ,");
     }
 }
Beispiel #5
0
        public async Task <ActionResult> UninstallPackageModels(string packageName)
        {
            Package       package   = Package.GetPackageFromPackageName(packageName);
            List <string> errorList = new List <string>();

            if (!await package.UninstallModelsAsync(errorList))
            {
                ScriptBuilder sb = new ScriptBuilder();
                sb.Append(this.__ResStr("cantUninstallModels", "Can't uninstall models for package {0}:(+nl)"), packageName.Split(new char[] { ',' }).First());
                sb.Append(errorList, LeadingNL: true);
                throw new Error(sb.ToString());
            }
            return(FormProcessed(null, popupText: this.__ResStr("removed", "Package models successfully removed"), OnClose: OnCloseEnum.Nothing));
        }
Beispiel #6
0
        public async Task <ActionResult> PerformSiteBackup()
        {
            List <string> errorList  = new List <string>();
            SiteBackup    siteBackup = new SiteBackup();

            if (!await siteBackup.CreateAsync(errorList, ForDistribution: true))
            {
                ScriptBuilder sb = new ScriptBuilder();
                sb.Append(this.__ResStr("cantBackup", "Can't create a site backup for site {0}:(+nl)"), Manager.CurrentSite.SiteDomain);
                sb.Append(errorList, LeadingNL: true);
                throw new Error(sb.ToString());
            }
            return(Reload(null, PopupText: this.__ResStr("backupCreated", "The site backup has been successfully created"), Reload: ReloadEnum.ModuleParts));
        }
Beispiel #7
0
        public Task <string> RenderViewAsync(DisqusModule module, DisqusModuleController.DisplayModel model)
        {
            HtmlBuilder hb = new HtmlBuilder();

            hb.Append($@"
<div id='disqus_thread'></div>");

            ScriptBuilder sb = new ScriptBuilder();

            sb.Append($@"
    var disqus_config = function () {{
        this.page.url = '{Utility.JserEncode(Manager.CurrentPage.EvaluatedCanonicalUrl)}';
        this.page.identifier = '{Utility.JserEncode(Manager.CurrentPage.PageGuid.ToString())}';
        this.page.title = '{Utility.JserEncode(Manager.CurrentPage.Title)}';
        this.page.language = '{MultiString.ActiveLanguage.Substring(0, 2)}';");

            if (model.UseSSO && !string.IsNullOrWhiteSpace(model.AuthPayload))
            {
                sb.Append($@"
        this.page.remote_auth_s3 = '{Utility.JserEncode(model.AuthPayload)}';
        this.page.api_key = '{Utility.JserEncode(model.PublicKey)}';");
            }
            if (model.UseSSO)
            {
                sb.Append($@"
        this.sso = {{
            name: '{Utility.JserEncode(Manager.CurrentSite.SiteDomain)}',
            //button: 'https://yetawf.com/images/samplenews.gif',
            //icon: 'https://yetawf.com/favicon.png',
            url: '{Utility.JserEncode(model.LoginUrl)}',
            logout: '{Utility.JserEncode(model.LogoffUrl)}',
            width: {model.Width},
            height: {model.Height}
        }};");
            }

            sb.Append($@"
    }};
    (function () {{
        var d = document, s = d.createElement('script');
        s.src = '//{Utility.JserEncode(model.ShortName)}.disqus.com/embed.js';
        s.setAttribute('data-timestamp', +new Date());
        (d.head || d.body).appendChild(s);
    }})();
</script>");

            Manager.ScriptManager.AddLast(sb.ToString());

            return(Task.FromResult(hb.ToString()));
        }
Beispiel #8
0
        /// <summary>
        /// Render a JSON object with data and tooltips for a DropDownList component.
        /// </summary>
        /// <param name="extraData">Optional data to be returned in JSON object as 'extra:' data.</param>
        /// <param name="list">A list of all items part of the DropDownList component.</param>
        /// <returns>A JSON object containing data and tooltips to update the contents of a dropdownlist.</returns>
        public static string RenderDataSource(List <SelectionItem <TYPE> > list, string extraData)
        {
            ScriptBuilder sb = new ScriptBuilder();

            sb.Append(Basics.AjaxJSONReturn);
            sb.Append(@"{""data"":[");
            foreach (SelectionItem <TYPE> item in list)
            {
                sb.Append(@"{{""t"":{0},""v"":{1}}},", Utility.JsonSerialize(item.Text.ToString()), Utility.JsonSerialize(item.Value != null ? item.Value.ToString() : ""));
            }
            if (list.Count > 0)
            {
                sb.RemoveLast();
            }
            sb.Append(@"],""tooltips"":[");
            if ((from i in list where i.Tooltip != null && !string.IsNullOrWhiteSpace(i.Tooltip.ToString()) select i).FirstOrDefault() != null)
            {
                foreach (SelectionItem <TYPE> item in list)
                {
                    sb.Append("{0},", Utility.JsonSerialize(item.Tooltip == null ? "" : item.Tooltip.ToString()));
                }
                if (list.Count > 0)
                {
                    sb.RemoveLast();
                }
            }
            if (!string.IsNullOrWhiteSpace(extraData))
            {
                sb.Append(@"],""extra"":[");
                sb.Append("{0}", Utility.JsonSerialize(extraData));
            }
            sb.Append("]}");
            return(sb.ToString());
        }
Beispiel #9
0
        /// <summary>
        ///
        /// </summary>
        private void BuildUpdateCommand()
        {
            ScriptBuilder.Append("UPDATE ");
            ScriptBuilder.AppendFormat(Table.ToString());
            ScriptBuilder.Append(" SET ");

            foreach (var column in Table.GetAdditionalColumns())
            {
                ScriptBuilder.Append(column.Name);
                ScriptBuilder.Append(Strings.Equal);
                ScriptBuilder.Append($"@{column.Name}");

                ScriptBuilder.AppendIf(Columns.IsNotLast(column), Strings.Comma);
                ScriptBuilder.Append(Strings.WhiteSpace);
            }

            var primaryColumn = Table.GetPrimaryColumnName();

            ScriptBuilder.Append("WHERE ");
            ScriptBuilder.Append(primaryColumn);
            ScriptBuilder.Append(Strings.Equal);
            ScriptBuilder.Append($"@{primaryColumn}");

            ScriptBuilder.AppendLine();
            ScriptBuilder.AppendLine("ELSE");
        }
Beispiel #10
0
        public async Task <ActionResult> ImportModule(HttpPostedFileBase __filename, ImportModuleModel model)
#endif
        {
            FileUpload upload   = new FileUpload();
            string     tempName = await upload.StoreTempPackageFileAsync(__filename);

            List <string> errorList = new List <string>();
            bool          success   = await ModuleDefinition.ImportAsync(tempName, model.CurrentPageGuid, true, model.ModulePane, model.ModuleLocation == Location.Top, errorList);

            await FileSystem.TempFileSystemProvider.DeleteFileAsync(tempName);

            string errs = "";

            if (errorList.Count > 0)
            {
                ScriptBuilder sbErr = new ScriptBuilder();
                sbErr.Append(errorList, LeadingNL: true);
                errs = sbErr.ToString();
            }
            if (success)
            {
                string         msg  = this.__ResStr("imported", "\"{0}\" successfully imported(+nl)", __filename.FileName) + errs;
                UploadResponse resp = new UploadResponse {
                    Result = $"$YetaWF.confirm('{Utility.JserEncode(msg)}', null, function() {{ $YetaWF.reloadPage(true); }} );",
                };
                return(new YJsonResult {
                    Data = resp
                });
            }
            else
            {
                // Anything else is a failure
                throw new Error(this.__ResStr("cantImport", "Can't import {0}:(+nl)", __filename.FileName) + errs);
            }
        }
Beispiel #11
0
        public static void FormatExpressionList(
            IEnumerable <Expression> expressions,
            SqlFragment parent,
            ScriptBuilder scriptBuilder,
            TSqlVisitor visitor,
            string appendOptional = null)
        {
            int i = 0;

            foreach (Expression expression in expressions)
            {
                if (expression == null)
                {
                    continue;
                }

                AppendDelimiter(scriptBuilder, ref i);
                scriptBuilder.AppendFragment(expression, parent, visitor);

                if (appendOptional != null)
                {
                    scriptBuilder.Append(appendOptional);
                }
            }
        }
        public void WhenAppendString_StrignIsAppended()
        {
            _sb.Append("test");

            var script = _sb.ToString();

            Assert.Equal("test", script);
        }
        public async Task <ActionResult> GetPackageModulesDesignedFromGuid(Guid modGuid)
        {
            ScriptBuilder sb = new ScriptBuilder();

            sb.Append(await ModuleSelectionPackageExistingEditComponent.RenderReplacementPackageModulesDesignedAsync(modGuid));
            return(new YJsonResult {
                Data = sb.ToString()
            });
        }
        public ActionResult GetPackageModulesNew(string areaName)
        {
            ScriptBuilder sb = new ScriptBuilder();

            sb.Append(ModuleSelectionModuleNewEditComponent.RenderReplacementPackageModulesNew(areaName));
            return(new YJsonResult {
                Data = sb.ToString()
            });
        }
Beispiel #15
0
        public ActionResult GetPopupPageSkins(string skinCollection)
        {
            ScriptBuilder sb = new ScriptBuilder();

            sb.Append(SkinNamePopupEditComponent.RenderReplacementSkinsForCollection(skinCollection));
            return(new YJsonResult {
                Data = sb.ToString()
            });
        }
Beispiel #16
0
        public async Task <ActionResult> LocalizePackage(string packageName)
        {
            if (YetaWFManager.Deployed)
            {
                throw new InternalError("Can't localize packages on a deployed site");
            }
            Package       package   = Package.GetPackageFromPackageName(packageName);
            List <string> errorList = new List <string>();

            if (!await package.LocalizeAsync(errorList))
            {
                ScriptBuilder sb = new ScriptBuilder();
                sb.Append(this.__ResStr("cantLocalize", "Can't localize package {0}:(+nl)"), packageName.Split(new char[] { ',' }).First());
                sb.Append(errorList, LeadingNL: true);
                throw new Error(sb.ToString());
            }
            return(FormProcessed(null, popupText: this.__ResStr("generated", "Package localization resources successfully generated"), OnClose: OnCloseEnum.Nothing));
        }
Beispiel #17
0
        /// <summary>
        ///
        /// </summary>
        protected virtual void SetColumnNullableInfo()
        {
            if (!Column.IsAllowNull)
            {
                ScriptBuilder.Append(" NOT");
            }

            ScriptBuilder.Append(" NULL");
        }
Beispiel #18
0
        /// <summary>
        ///
        /// </summary>
        protected override void InternalBuildCommandText()
        {
            SetAlterTable();
            ScriptBuilder.Append(" ADD");
            SetColumnInfo();

            ScriptBuilder.AppendLine();
            ScriptBuilder.AppendLine($"comment on column {Table.GetPgSqlName()}.{Column.GetPgSqlName()} is '{Column.Description}';");
        }
Beispiel #19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="column"></param>
        private void BuildNullableInfo(ColumnInfo column)
        {
            if (!column.IsAllowNull)
            {
                ScriptBuilder.Append(" NOT");
            }

            ScriptBuilder.Append(" NULL");
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="column"></param>
        private void BuildUpdateSet(ColumnInfo column)
        {
            ScriptBuilder.Append(column.GetPgSqlName());
            ScriptBuilder.Append(" = ");
            ScriptBuilder.Append($"@{column.Name}");

            ScriptBuilder.AppendIf(Columns.IsNotLast(column), Strings.Comma);
            ScriptBuilder.Append(Strings.WhiteSpace);
        }
        /// <summary>
        /// Imports all package data from a zip file (created using Export Data) or from templates
        /// </summary>
        public async Task ImportDataAsync(QueryHelper qs)
        {
            string zipFileName = qs["ZipFile"];

            if (string.IsNullOrWhiteSpace(zipFileName))
            {
                throw new InternalError("Zip filename missing");
            }
            List <string> errorList = new List <string>();

            if (!await Package.ImportDataAsync(zipFileName, errorList))
            {
                ScriptBuilder sb = new ScriptBuilder();
                sb.Append(this.__ResStr("cantImportData", "Can't import data from file {0}:(+nl)"), zipFileName);
                sb.Append(errorList, LeadingNL: true);
                throw new Error(sb.ToString());
            }
        }
        public override string GenerateHubs(Assembly assembly, bool generateAsModules)
        {
            var hubs = assembly.GetTypes()
                       .Where(t => t.BaseType != null && t.BaseType.FullName != null && t.BaseType.FullName.Contains(HUB_TYPE))
                       .OrderBy(t => t.FullName)
                       .ToList();

            if (!hubs.Any())
            {
                Console.WriteLine("No SignalR hubs found");
                return("");
            }
            Console.WriteLine(hubs.Count + " SignalR hubs found");
            var requiredImports = new HashSet <string>();

            foreach (var hub in hubs)
            {
                requiredImports.Add(hub.Namespace.Split('.')[0]);
            }

            var scriptBuilder = new ScriptBuilder("    ");

            scriptBuilder.AppendLine();

            hubs.ForEach(h => GenerateHubInterfaces(h, scriptBuilder, generateAsModules, requiredImports));

            // Generate client connection interfaces
            if (generateAsModules)
            {
                scriptBuilder.Append("export ");
            }
            scriptBuilder.AppendLineIndented("interface SignalR {");
            using (scriptBuilder.IncreaseIndentation())
            {
                hubs.ForEach(h => scriptBuilder.AppendLineIndented(h.Name.ToCamelCase() + ": I" + h.Name + "Proxy;"));
            }
            scriptBuilder.AppendLineIndented("}");
            scriptBuilder.AppendLine();

            var output = scriptBuilder.ToString();

            // Output imports if required
            // TODO: this isn't going to work if SignalR hubs are in more than one assembly.
            if (generateAsModules)
            {
                var imports = "import Classes = require(\"./classes\");\r\n";
                foreach (var ns in requiredImports)
                {
                    imports += string.Format("import {0} = Classes.{0};\r\n", ns);
                }
                imports += "\r\n";
                output   = imports + output;
            }

            return(output);
        }
Beispiel #23
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="column"></param>
        private void BuildColumn(ColumnInfo column)
        {
            ScriptBuilder.AppendLine();
            ScriptBuilder.Append($"{column.GetPgSqlName()} ");
            ScriptBuilder.Append(column.Type.GetColumnType());

            BuildNullableInfo(column);
            BuildPrimaryKeyAndIdentity(column);
            ScriptBuilder.AppendIf(Columns.IsNotLast(column), Strings.Comma);
        }
        /// <summary>
        ///
        /// </summary>
        private void BuildUpdateCommand()
        {
            ScriptBuilder.Append("WITH upsert AS (UPDATE ");
            ScriptBuilder.Append($"{Table.GetPgSqlName()} SET ");
            Table.Columns.ForEach(BuildUpdateSet);

            var primaryColumn = Table.GetPrimaryColumnName();

            ScriptBuilder.Append($"WHERE \"{primaryColumn}\" = @{primaryColumn}");
            ScriptBuilder.AppendLine(" RETURNING *)");
        }
Beispiel #25
0
        private string FormatMessage(bool success, List <string> errorList, string fileName)
        {
            string errs = "";

            if (errorList.Count > 0)
            {
                ScriptBuilder sbErr = new ScriptBuilder();
                sbErr.Append(errorList, LeadingNL: false);
                sbErr.Append("(+nl)(+nl)");
                errs = sbErr.ToString();
            }
            if (success)
            {
                return(errs + this.__ResStr("imported", "\"{0}\" successfully imported - YOU MUST RESTART THE SITE FOR PROPER OPERATION", fileName));
            }
            else
            {
                // Anything else is a failure
                return(errs + this.__ResStr("cantImport", "Can't import {0}:{1}", fileName, errs));
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="column"></param>
        private void BuildColumn(ColumnInfo column)
        {
            ScriptBuilder.AppendLine();
            ScriptBuilder.Append($"{column.GetSqlName()} ");
            ScriptBuilder.Append(column.Type.GetColumnType());

            BuildIdentity(column);
            BuildNullableInfo(column);

            ScriptBuilder.AppendIf(column.IsPrimary(), " PRIMARY KEY");
            ScriptBuilder.Append(Strings.Comma);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="column"></param>
        private void BuildValue(ColumnInfo column)
        {
            ScriptBuilder.Append($"@{column.Name}");

            if (Table.Columns.IsLast(column))
            {
                return;
            }

            ScriptBuilder.Append(Strings.Comma);
            ScriptBuilder.Append(Strings.WhiteSpace);
        }
        /// <summary>
        ///
        /// </summary>
        private void BuildColumn(ColumnInfo column)
        {
            ScriptBuilder.Append($"{column.GetMySqlName()}");

            if (Table.Columns.IsLast(column))
            {
                return;
            }

            ScriptBuilder.Append(Strings.Comma);
            ScriptBuilder.Append(Strings.WhiteSpace);
        }
Beispiel #29
0
        /// <summary>
        ///
        /// </summary>
        protected void BuildMultipleColumnUnique()
        {
            ScriptBuilder.AppendLine($"ALTER TABLE {Table.GetPgSqlName()}");
            ScriptBuilder.Append($"ADD CONSTRAINT {UniqueName} UNIQUE (");

            foreach (var column in UniqueColumns)
            {
                ScriptBuilder.Append(column.GetPgSqlName());
                ScriptBuilder.AppendIf(UniqueColumns.IsNotLast(column), " ,");
            }

            ScriptBuilder.Append(");");
        }
Beispiel #30
0
        /// <summary>
        ///
        /// </summary>
        private void BuildIfStatement()
        {
            ScriptBuilder.Append("IF EXISTS(SELECT * FROM ");
            ScriptBuilder.AppendFormat(Table.GetSqlName());
            ScriptBuilder.Append(" WHERE ");

            var primaryColumn = Table.GetPrimaryColumnName();

            ScriptBuilder.Append(primaryColumn);
            ScriptBuilder.Append(Strings.Equal);
            ScriptBuilder.Append($"@{primaryColumn}");
            ScriptBuilder.Append(Strings.RBracket);
            ScriptBuilder.AppendLine();
        }
Beispiel #31
0
        public async Task <ActionResult> LocalizeAllPackages()
        {
            if (YetaWFManager.Deployed)
            {
                throw new InternalError("Can't localize packages on a deployed site");
            }
            List <string> errorList = new List <string>();

            foreach (Package package in Package.GetAvailablePackages())
            {
                if (package.IsCorePackage || package.IsModulePackage || package.IsSkinPackage)
                {
                    if (!await package.LocalizeAsync(errorList))
                    {
                        ScriptBuilder sb = new ScriptBuilder();
                        sb.Append(this.__ResStr("cantLocalize", "Can't localize package {0}:(+nl)"), package.Name);
                        sb.Append(errorList, LeadingNL: true);
                        throw new Error(sb.ToString());
                    }
                }
            }
            return(FormProcessed(null, popupText: this.__ResStr("generatedAll", "Localization resources for all packages have been successfully generated"), OnClose: OnCloseEnum.Nothing));
        }
        public static void FormatExpressionList(
            IEnumerable<Expression> expressions,
            SqlFragment parent,
            ScriptBuilder scriptBuilder,
            TSqlVisitor visitor,
            string appendOptional = null)
        {
            int i = 0;
            foreach (Expression expression in expressions) {
                if (expression == null) {
                    continue;
                }

                AppendDelimiter(scriptBuilder, ref i);
                scriptBuilder.AppendFragment(expression, parent, visitor);

                if (appendOptional != null) {
                    scriptBuilder.Append(appendOptional);
                }
            }
        }