Ejemplo n.º 1
0
        public void sendRelevationAppendRequest(Relevation relevation)
        {
            fileManager = new DataSourceManager();

            String journalingString = prepareString(relevation);
            String requestResponse = fileManager.sendRequest(myClassID, Configuration.MethodsID.AppendRelevation, journalingString);
        }
Ejemplo n.º 2
0
        // Singleton pattern
        public static DataSourceManager returnInstance()
        {
            if (fileManager == null)
                        fileManager = new DataSourceManager();

                    return fileManager;
        }
Ejemplo n.º 3
0
        public String SendViewHistoryRequest()
        {
            fileManager = new DataSourceManager();

            String history = fileManager.sendRequest(myClassID, Configuration.MethodsID.ShowContent, "");

            return history;
        }
Ejemplo n.º 4
0
        public void sendAppendMetatagRequest(Metatag newMetatag)
        {
            String radioactivityMetatagString = this.PrepareMetatagString(newMetatag, Configuration.RADIOACTIVITY_SENSOR_TYPE);
                    String temperatureMetatagString = this.PrepareMetatagString(newMetatag, Configuration.TEMPERATURE_SENSOR_TYPE);

                    fileManager = new DataSourceManager();

                    String response1 = fileManager.sendRequest(myClassID, Configuration.MethodsID.appendRelevation, radioactivityMetatagString);
                    String response2 = fileManager.sendRequest(myClassID, Configuration.MethodsID.appendRelevation, temperatureMetatagString);
        }
Ejemplo n.º 5
0
        public void start()
        {
            fileManager = new DataSourceManager();

                    requestResponse = fileManager.SendRequest(myClassID, Configuration.MethodsID.readLine, "");

                    if (requestResponse != null)
                    {
                        Relevation newRelevation = this.createRelevation(requestResponse);
                        dispatcher = new RelevationsDispatcher();
                        dispatcher.dispatchRelevation(newRelevation);
                    }
        }
        public HttpResponseMessage Version(string id, string ticks)
        {
            var    module = OpenContentModuleConfig.Create(ActiveModule, PortalSettings);
            JToken json   = new JObject();

            try
            {
                int createdByUserid = -1;

                IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID);

                var dsItem = ds.Get(dsContext, id);
                if (dsItem != null)
                {
                    var version = ds.GetVersion(dsContext, dsItem, new DateTime(long.Parse(ticks)));
                    if (version != null)
                    {
                        json            = version;
                        createdByUserid = dsItem.CreatedByUserId;
                    }
                }

                string editRole = module.Settings.Template.Manifest.GetEditRole();
                //todo: can't we do some of these checks at the beginning of this method to fail faster?
                if (!DnnPermissionsUtils.HasEditPermissions(module, editRole, createdByUserid))
                {
                    return(Request.CreateResponse(HttpStatusCode.Unauthorized));
                }
                return(Request.CreateResponse(HttpStatusCode.OK, json));
            }
            catch (Exception exc)
            {
                App.Services.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
        public HttpResponseMessage LookupData(LookupDataRequestDTO req)
        {
            List <LookupResultDTO> res = new List <LookupResultDTO>();

            try
            {
                var module = new OpenContentModuleInfo(ActiveModule);

                string key = req.dataKey;
                var    additionalDataManifest = module.Settings.Template.Manifest.GetAdditionalData(key);

                IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID);

                var dataItems = ds.GetData(dsContext, additionalDataManifest.ScopeType, additionalDataManifest.StorageKey ?? key);
                if (dataItems != null)
                {
                    JToken json = dataItems.Data;
                    if (!string.IsNullOrEmpty(req.dataMember))
                    {
                        json = json[req.dataMember];
                    }
                    if (json is JArray)
                    {
                        json = json.DeepClone();
                        JsonUtils.SimplifyJson(json, DnnLanguageUtils.GetCurrentCultureCode());
                        AddLookupItems(req.valueField, req.textField, req.childrenField, res, json as JArray);
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.OK, res));
            }
            catch (Exception exc)
            {
                Log.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
Ejemplo n.º 8
0
        public void RegisterRoutes(IMapRoute mapRouteManager)
        {
            //  /desktopmodules/OpenContent/api/{controller}/{action}
            mapRouteManager.MapHttpRoute(
                moduleFolderName: "OpenContent",
                routeName: "default",
                url: "{controller}/{action}",
                namespaces: new[] {
                "Satrabel.OpenContent.Components",
                "Satrabel.OpenContent.Components.JpList",
                "Satrabel.OpenContent.Components.Rss",
                "Satrabel.OpenContent.Components.Rest.Swagger",
                "Satrabel.OpenContent.Components.Export",
            }
                );

            //  /desktopmodules/OpenContent/api/{controller}/v1/{entity}/{id}/{memberAction}
            mapRouteManager.MapHttpRoute(
                moduleFolderName: "OpenContent",
                routeName: "rest",
                url: "{controller}/v1/{entity}/{id}/{memberAction}",
                defaults: new { id = RouteParameter.Optional, memberAction = RouteParameter.Optional },
                namespaces: new[] { "Satrabel.OpenContent.Components.Rest" }
                );

            mapRouteManager.MapHttpRoute(
                moduleFolderName: "OpenContent",
                routeName: "restv2",
                url: "{controller}/v2/{entity}/{id}/{memberAction}",
                defaults: new { id = RouteParameter.Optional, memberAction = RouteParameter.Optional },
                namespaces: new[] { "Satrabel.OpenContent.Components.Rest.V2" }
                );

            DataSourceManager.RegisterDataSources();
            FileIndexerManager.RegisterFileIndexers();
        }
Ejemplo n.º 9
0
        public void GetDetailData(RenderInfo info, OpenContentSettings settings)
        {
            info.ResetData();
            var ds        = DataSourceManager.GetDataSource(settings.Manifest.DataSource);
            var dsContext = new DataSourceContext()
            {
                ModuleId       = info.ModuleId,
                ActiveModuleId = _module.ModuleID,
                TemplateFolder = settings.TemplateDir.FolderPath,
                Config         = settings.Manifest.DataSourceConfig
            };
            var dsItem = ds.Get(dsContext, info.DetailItemId);

            if (LogContext.IsLogActive)
            {
                var logKey = "Get detail data";
                LogContext.Log(_module.ModuleID, logKey, "result", dsItem);
            }

            if (dsItem != null)
            {
                info.SetData(dsItem, dsItem.Data, settings.Data);
            }
        }
Ejemplo n.º 10
0
        private void ddlVersions_SelectedIndexChanged(object sender, EventArgs e)
        {
            OpenContentSettings settings = this.OpenContentSettings();
            int modId     = settings.IsOtherModule ? settings.ModuleId : ModuleId;
            var ds        = DataSourceManager.GetDataSource("OpenContent");
            var dsContext = new DataSourceContext()
            {
                ModuleId           = modId,
                ActiveModuleId     = ModuleContext.ModuleId,
                TemplateFolder     = settings.TemplateDir.FolderPath,
                PortalId           = ModuleContext.PortalId,
                CurrentCultureCode = DnnLanguageUtils.GetCurrentCultureCode(),
                Single             = true
            };
            var dsItem = ds.Get(dsContext, null);

            if (dsItem != null)
            {
                var ticks = long.Parse(ddlVersions.SelectedValue);
                var ver   = ds.GetVersion(dsContext, dsItem, new DateTime(ticks));
                //var ver = data.Versions.Single(v => v.CreatedOnDate == d);
                txtSource.Text = ver.ToString();
            }
        }
        /// <summary>
        /// Converts an item from the data store into an ODataEntityReferenceLink.
        /// </summary>
        /// <param name="element">The item to convert.</param>
        /// <param name="navigationSource">The navigation source that the item belongs to.</param>
        /// <param name="targetVersion">The OData version this segment is targeting.</param>
        /// <returns>The converted ODataEntityReferenceLink represent with ODataEntry.</returns>
        public static ODataEntry ConvertToODataEntityReferenceLink(object element, IEdmNavigationSource entitySource, ODataVersion targetVersion)
        {
            IEdmStructuredType entityType = EdmClrTypeUtils.GetEdmType(DataSourceManager.GetCurrentDataSource().Model, element) as IEdmStructuredType;

            if (entityType == null)
            {
                throw new InvalidOperationException("Can not create an entry for " + entitySource.Name);
            }

            var link = new ODataEntry();

            if (!string.IsNullOrEmpty(((ClrObject)element).EntitySetName) && entitySource is IEdmEntitySet && entityType is IEdmEntityType)
            {
                entitySource = new EdmEntitySet(((IEdmEntitySet)entitySource).Container, ((ClrObject)element).EntitySetName, (IEdmEntityType)entityType);
            }

            if (!(entitySource is IEdmContainedEntitySet))
            {
                Uri Url = BuildEntryUri(element, entitySource, targetVersion);
                link.Id = Url;
            }

            return(link);
        }
Ejemplo n.º 12
0
 public HttpResponseMessage Submit(SubmitDTO req)
 {
     try
     {
         var data = new JObject();
         data["form"] = req.form;
         string jsonSettings = ActiveModule.ModuleSettings["formsettings"] as string;
         if (!string.IsNullOrEmpty(jsonSettings))
         {
             data["formSettings"] = JObject.Parse(jsonSettings);
         }
         var         module    = OpenContentModuleConfig.Create(ActiveModule, PortalSettings);
         IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
         var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID);
         var         dsItem    = ds.Get(dsContext, req.id);
         var         res       = ds.Action(dsContext, string.IsNullOrEmpty(req.action) ? "FormSubmit" : req.action, dsItem, data);
         return(Request.CreateResponse(HttpStatusCode.OK, res));
     }
     catch (Exception exc)
     {
         App.Services.Logger.Error(exc);
         return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
     }
 }
Ejemplo n.º 13
0
        public HttpResponseMessage GetFeed(int moduleId, int tabId, string template, string mediaType)
        {
            ModuleController        mc       = new ModuleController();
            IEnumerable <IDataItem> dataList = new List <IDataItem>();
            var module   = new OpenContentModuleInfo(moduleId, tabId);
            var manifest = module.Settings.Template.Manifest;

            var    rssTemplate = new FileUri(module.Settings.TemplateDir, template + ".hbs");
            string source      = File.ReadAllText(rssTemplate.PhysicalFilePath);

            bool useLucene = module.Settings.Template.Manifest.Index;

            if (useLucene)
            {
                var indexConfig = OpenContentUtils.GetIndexConfig(module.Settings.Template);

                QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
                queryBuilder.Build(module.Settings.Query, PortalSettings.UserMode != PortalSettings.Mode.Edit, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles);

                IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID);

                var dsItems = ds.GetAll(dsContext, queryBuilder.Select);
                dataList = dsItems.Items;
            }

            var              mf       = new ModelFactoryMultiple(dataList, null, module.Settings.TemplateDir.PhysicalFullDirectory, manifest, null, null, module, PortalSettings);
            dynamic          model    = mf.GetModelAsDictionary(true);
            HandlebarsEngine hbEngine = new HandlebarsEngine();
            string           res      = hbEngine.Execute(source, model);
            var              response = new HttpResponseMessage();

            response.Content = new StringContent(res);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue(mediaType);
            return(response);
        }
Ejemplo n.º 14
0
 public Product()
 {
     details = new EntityCollection <ProductDetail>(DataSourceManager.GetCurrentDataSource <DefaultWCFSvcDataSource>().ProductDetails);
 }
Ejemplo n.º 15
0
        private void SaveData()
        {
            var module = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings);
            TemplateManifest template = module.Settings.Template;

            IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
            var         dsContext = OpenContentUtils.CreateDataContext(module);

            if (template != null && template.IsListTemplate)
            {
                string itemId = Request.QueryString["id"];
                if (!string.IsNullOrEmpty(itemId))
                {
                    var dsItem = ds.Get(dsContext, itemId);
                    if (string.IsNullOrEmpty(txtSource.Text))
                    {
                        if (dsItem != null)
                        {
                            ds.Delete(dsContext, dsItem);
                            App.Services.CacheAdapter.SyncronizeCache(module);
                        }
                    }
                    else
                    {
                        var json = txtSource.Text.ToJObject("Saving txtSource");
                        if (dsItem == null)
                        {
                            ds.Add(dsContext, json);
                        }
                        else
                        {
                            ds.Update(dsContext, dsItem, json);
                        }
                        App.Services.CacheAdapter.SyncronizeCache(module);

                        if (json["ModuleTitle"] != null && json["ModuleTitle"].Type == JTokenType.String)
                        {
                            string moduleTitle = json["ModuleTitle"].ToString();
                            ModuleContext.Configuration.UpdateModuleTitle(moduleTitle);
                        }
                        else if (json["ModuleTitle"] != null && json["ModuleTitle"].Type == JTokenType.Object)
                        {
                            string ModuleTitle = json["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()].ToString();
                            ModuleContext.Configuration.UpdateModuleTitle(ModuleTitle);
                        }
                    }
                }
                else
                {
                    JArray lst = null;
                    if (!string.IsNullOrEmpty(txtSource.Text))
                    {
                        lst = JArray.Parse(txtSource.Text);
                    }
                    var dataList = ds.GetAll(dsContext, null).Items;
                    foreach (var item in dataList)
                    {
                        ds.Delete(dsContext, item);
                    }
                    if (lst != null)
                    {
                        foreach (JObject json in lst)
                        {
                            ds.Add(dsContext, json);
                        }
                    }
                }
            }
            else
            {
                dsContext.Single = true;
                var dsItem = ds.Get(dsContext, null);
                if (string.IsNullOrEmpty(txtSource.Text))
                {
                    if (dsItem != null)
                    {
                        ds.Delete(dsContext, dsItem);
                    }
                }
                else
                {
                    var json = txtSource.Text.ToJObject("Saving txtSource");
                    if (dsItem == null)
                    {
                        ds.Add(dsContext, json);
                    }
                    else
                    {
                        ds.Update(dsContext, dsItem, json);
                    }
                    if (json["ModuleTitle"] != null && json["ModuleTitle"].Type == JTokenType.String)
                    {
                        string moduleTitle = json["ModuleTitle"].ToString();
                        ModuleContext.Configuration.UpdateModuleTitle(moduleTitle);
                    }
                    else if (json["ModuleTitle"] != null && json["ModuleTitle"].Type == JTokenType.Object)
                    {
                        string moduleTitle = json["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()].ToString();
                        ModuleContext.Configuration.UpdateModuleTitle(moduleTitle);
                    }
                }
            }
        }
Ejemplo n.º 16
0
        private void DisplayFile(string selectedDataType)
        {
            cmdImport.Visible = false;
            string json = string.Empty;

            switch (selectedDataType)
            {
            case DATATYPE_DATA:
            {
                TemplateManifest template = null;
                var module   = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings);
                var manifest = module.Settings.Manifest;
                TemplateManifest templateManifest = module.Settings.Template;
                string           editRole         = manifest.GetEditRole();
                bool             listMode         = templateManifest != null && templateManifest.IsListTemplate;

                IDataSource         ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var                 dsContext = OpenContentUtils.CreateDataContext(module);
                OpenContentSettings settings  = module.Settings;
                if (settings.TemplateAvailable)
                {
                    template = settings.Template;
                }

                if (template != null && template.IsListTemplate)
                {
                    ddlVersions.Visible = false;
                    cmdRestApi.Visible  = true;
                    string itemId = Request.QueryString["id"];
                    if (!string.IsNullOrEmpty(itemId))
                    {
                        var dsItem = ds.Get(dsContext, itemId);

                        if (dsItem != null)
                        {
                            json = dsItem.Data.ToString();
                            var versions = ds.GetVersions(dsContext, dsItem);
                            if (versions != null)
                            {
                                foreach (var ver in versions)
                                {
                                    ddlVersions.Items.Add(new ListItem()
                                        {
                                            //Text = ver.CreatedOnDate.ToShortDateString() + " " + ver.CreatedOnDate.ToShortTimeString(),
                                            //Value = ver.CreatedOnDate.Ticks.ToString()
                                            Text  = ver["text"].ToString(),
                                            Value = ver["ticks"].ToString()
                                        });
                                }
                            }
                        }
                    }
                    else
                    {
                        var dataList = ds.GetAll(dsContext, null);
                        if (dataList != null)
                        {
                            JArray lst = new JArray();
                            foreach (var item in dataList.Items)
                            {
                                lst.Add(item.Data);
                            }
                            json = lst.ToString();
                        }
                    }
                }
                else
                {
                    ddlVersions.Visible = true;
                    cmdRestApi.Visible  = false;
                    dsContext.Single    = true;
                    var dsItem = ds.Get(dsContext, null);
                    if (dsItem != null)
                    {
                        json = dsItem.Data.ToString();
                        var versions = ds.GetVersions(dsContext, dsItem);
                        if (versions != null)
                        {
                            foreach (var ver in versions)
                            {
                                ddlVersions.Items.Add(new ListItem()
                                    {
                                        //Text = ver.CreatedOnDate.ToShortDateString() + " " + ver.CreatedOnDate.ToShortTimeString(),
                                        //Value = ver.CreatedOnDate.Ticks.ToString()
                                        Text  = ver["text"].ToString(),
                                        Value = ver["ticks"].ToString()
                                    });
                            }
                        }
                    }
                }
                cmdImport.Visible = string.IsNullOrEmpty(json) && File.Exists(settings.TemplateDir.PhysicalFullDirectory + "\\data.json");
            }

            break;

            case DATATYPE_SETTINGS:
                json = ModuleContext.Settings["data"] as string;
                break;

            case DATATYPE_FILTER:
                json = ModuleContext.Settings["query"] as string;
                break;

            default:
            {
                var module   = OpenContentModuleConfig.Create(this.ModuleConfiguration, PortalSettings);
                var manifest = module.Settings.Manifest;
                TemplateManifest templateManifest = module.Settings.Template;
                string           editRole         = manifest.GetEditRole();
                bool             listMode         = templateManifest != null && templateManifest.IsListTemplate;

                IDataSource ds           = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext    = OpenContentUtils.CreateDataContext(module);
                string      key          = selectedDataType;
                var         dataManifest = manifest.GetAdditionalData(key);

                var dsItem = ds.GetData(dsContext, dataManifest.ScopeType, dataManifest.StorageKey ?? key);
                json = dsItem == null ? "" : dsItem.Data.ToString();
                break;
            }
            }
            txtSource.Text = json;
        }
Ejemplo n.º 17
0
        public string GetDataList(RenderInfo info, OpenContentSettings settings, bool clientSide)
        {
            string templateKey = "";

            info.ResetData();

            IDataSource ds        = DataSourceManager.GetDataSource(Settings.Manifest.DataSource);
            var         dsContext = OpenContentUtils.CreateDataContext(_module);

            IEnumerable <IDataItem> resultList = new List <IDataItem>();

            if (clientSide || !info.Files.DataInTemplate)
            {
                if (ds.Any(dsContext))
                {
                    info.SetData(resultList, settings.Data);
                    info.DataExist = true;
                }

                if (info.Template.Views != null)
                {
                    var indexConfig = OpenContentUtils.GetIndexConfig(info.Template);
                    templateKey = GetTemplateKey(indexConfig);
                }
            }
            else
            {
                //server side
                bool useLucene = info.Template.Manifest.Index;
                if (useLucene)
                {
                    PortalSettings portalSettings = PortalSettings.Current;
                    var            indexConfig    = OpenContentUtils.GetIndexConfig(info.Template);
                    if (info.Template.Views != null)
                    {
                        templateKey = GetTemplateKey(indexConfig);
                    }
                    bool         isEditable   = _module.ViewModule.CheckIfEditable(portalSettings);//portalSettings.UserMode != PortalSettings.Mode.Edit;
                    QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
                    queryBuilder.Build(settings.Query, !isEditable, portalSettings.UserId, DnnLanguageUtils.GetCurrentCultureCode(), portalSettings.UserInfo.Social.Roles, QueryString);

                    resultList = ds.GetAll(dsContext, queryBuilder.Select).Items;
                    if (LogContext.IsLogActive)
                    {
                        //LogContext.Log(_module.ModuleID, "RequestContext", "EditMode", !addWorkFlow);
                        LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "IsEditable", isEditable);
                        LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "UserRoles", portalSettings.UserInfo.Social.Roles.Select(r => r.RoleName));
                        LogContext.Log(_module.ViewModule.ModuleID, "RequestContext", "CurrentUserId", portalSettings.UserId);
                        var logKey = "Query";
                        LogContext.Log(_module.ViewModule.ModuleID, logKey, "select", queryBuilder.Select);
                        //LogContext.Log(_module.ModuleID, logKey, "result", resultList);
                    }
                    //Log.Logger.DebugFormat("Query returned [{0}] results.", total);
                    if (!resultList.Any())
                    {
                        /*
                         * if (ds.Any(dsContext) && settings.Query.IsEmpty())
                         * {
                         *   //there seems to be data in de database, but we did not find it in Lucene, so probably the data isn't indexed anymore/yet
                         *   //Components.Lucene.LuceneController.Instance.ReIndexModuleData(_module.ViewModule.ModuleID, settings);
                         * }
                         */
                        //Log.Logger.DebugFormat("Query did not return any results. API request: [{0}], Lucene Filter: [{1}], Lucene Query:[{2}]", settings.Query, queryDef.Filter == null ? "" : queryDef.Filter.ToString(), queryDef.Query == null ? "" : queryDef.Query.ToString());
                        if (ds.Any(dsContext))
                        {
                            info.SetData(resultList, settings.Data);
                            info.DataExist = true;
                        }
                    }
                }
                else
                {
                    resultList = ds.GetAll(dsContext, null).Items;
                    //if (LogContext.IsLogActive)
                    //{
                    //    var logKey = "Get all data of module";
                    //    LogContext.Log(_module.ModuleID, logKey, "result", resultList);
                    //}
                }
                if (resultList.Any())
                {
                    info.SetData(resultList, settings.Data);
                }
            }
            return(templateKey);
        }
Ejemplo n.º 18
0
        private dynamic ParsePostData()
        {
            var                 formData   = HttpContext.Request.Form;
            dynamic             rec        = new ExpandoObject();
            ValidationException validation = new ValidationException();
            DataSourceManager   dsMan      = new DataSourceManager();
            DataSourceBase      dataSource = null;

            rec.IsDeleteAction = false;

            //handle delete
            if (formData.ContainsKey("action") && formData["action"] == "delete")
            {
                rec.IsDeleteAction = true;

                rec.PageDataSourceId = (Guid?)null;
                if (formData.ContainsKey("page_datasource_id") && !string.IsNullOrWhiteSpace(formData["page_datasource_id"]))
                {
                    Guid pageDataSourceId;
                    if (Guid.TryParse(formData["page_datasource_id"], out pageDataSourceId))
                    {
                        rec.PageDataSourceId = pageDataSourceId;
                    }
                    else
                    {
                        validation.AddError("page_datasource_id", "Specified page data source id is not in valid GUID format.");
                    }
                }
                validation.CheckAndThrow();

                return(rec);
            }

            //continue with create or update parse
            rec.PageDataSourceId = (Guid?)null;
            if (formData.ContainsKey("page_datasource_id") && !string.IsNullOrWhiteSpace(formData["page_datasource_id"]))
            {
                Guid pageDataSourceId;
                if (Guid.TryParse(formData["page_datasource_id"], out pageDataSourceId))
                {
                    rec.PageDataSourceId = pageDataSourceId;
                }
                else
                {
                    validation.AddError("page_datasource_id", "Specified page data source id is not in valid GUID format.");
                }
            }

            if (formData.ContainsKey("page_id") && !string.IsNullOrWhiteSpace(formData["page_id"]))
            {
                Guid pageId;
                if (Guid.TryParse(formData["page_id"], out pageId))
                {
                    rec.PageId = pageId;
                }
                else
                {
                    validation.AddError("page_id", "Specified page id is not in valid GUID format.");
                }
            }
            else
            {
                validation.AddError("page_id", "Page id is not specified.");
            }

            if (formData.ContainsKey("datasource_id") && !string.IsNullOrWhiteSpace(formData["datasource_id"]))
            {
                Guid datasourceId;
                if (Guid.TryParse(formData["datasource_id"], out datasourceId))
                {
                    rec.DataSourceId = datasourceId;
                    dataSource       = dsMan.Get(datasourceId);
                    if (dataSource == null)
                    {
                        validation.AddError("datasource_id", "Specified datasource id is not found in database.");
                    }
                }
                else
                {
                    validation.AddError("datasource_id", "Specified datasource id is not in valid GUID format.");
                }
            }
            else
            {
                validation.AddError("datasource_id", "Datasource id is not specified.");
            }

            if (formData.ContainsKey("page_datasource_name") && !string.IsNullOrWhiteSpace(formData["page_datasource_name"]))
            {
                rec.Name = formData["page_datasource_name"];
            }
            else
            {
                validation.AddError("page_datasource_name", "Page datasource name is not specified.");
            }

            validation.CheckAndThrow();

            List <DataSourceParameter> parameters = new List <DataSourceParameter>();

            foreach (var par in dataSource.Parameters)
            {
                var htmlKey = "@_" + par.Name;
                if (formData.Keys.Contains(htmlKey) && !string.IsNullOrWhiteSpace(formData[htmlKey]))
                {
                    DataSourceParameter parameter = new DataSourceParameter();
                    parameter.Name  = par.Name;
                    parameter.Type  = par.Type;
                    parameter.Value = formData[htmlKey];
                    parameters.Add(parameter);
                }
            }
            rec.Parameters = parameters;

            return(rec);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Creates the key segment to use in the ID/EDitLink fields of an entry.
        /// </summary>
        /// <param name="entityInstance">The instance to get the key values from</param>
        /// <param name="entityType">The entity type of the instance</param>
        /// <param name="targetVersion">The OData version this segment is targeting.</param>
        /// <returns>A Key segment that contains a literal encoded string key-value pairs for property names and their values</returns>
        private static string BuildKeyString(object entityInstance, IEdmEntityType entityType, ODataVersion targetVersion)
        {
            if (entityType.DeclaredKey != null && entityType.DeclaredKey.Count() == 1)
            {
                var          keyMember = entityType.Key().Single();
                PropertyInfo property  = entityInstance.GetType().GetProperty(keyMember.Name);
                return(ODataUriUtils.ConvertToUriLiteral(property.GetValue(entityInstance, null), targetVersion, DataSourceManager.GetCurrentDataSource().Model));
            }
            else
            {
                var keyStringFragments = new List <string>();
                foreach (var keyMember in entityType.Key())
                {
                    PropertyInfo property = entityInstance.GetType().GetProperty(keyMember.Name);
                    keyStringFragments.Add(String.Format("{0}={1}", keyMember.Name, ODataUriUtils.ConvertToUriLiteral(property.GetValue(entityInstance, null), targetVersion, DataSourceManager.GetCurrentDataSource().Model)));
                }

                return(String.Join(",", keyStringFragments));
            }
        }
Ejemplo n.º 20
0
 public Company()
 {
     this.Employees   = new EntityCollection <Employee>(DataSourceManager.GetCurrentDataSource <DefaultWCFSvcDataSource>().Employees);
     this.departments = new EntityCollection <Department>(DataSourceManager.GetCurrentDataSource <DefaultWCFSvcDataSource>().Departments);
 }
Ejemplo n.º 21
0
 public Customer()
 {
     orders = new EntityCollection <Order>(DataSourceManager.GetCurrentDataSource <DefaultWCFSvcDataSource>().Orders);
 }
Ejemplo n.º 22
0
        public HttpResponseMessage Delete(string entity, string id)
        {
            try
            {
                bool index = false;
                OpenContentSettings settings = ActiveModule.OpenContentSettings();
                ModuleInfo          module   = ActiveModule;
                if (settings.ModuleId > 0)
                {
                    ModuleController mc = new ModuleController();
                    module = mc.GetModule(settings.ModuleId, settings.TabId, false);
                }
                var manifest = settings.Template.Manifest;
                TemplateManifest templateManifest = settings.Template;
                index = settings.Template.Manifest.Index;
                string editRole = manifest.GetEditRole();

                bool listMode        = templateManifest != null && templateManifest.IsListTemplate;
                int  createdByUserid = -1;
                var  ds        = DataSourceManager.GetDataSource(manifest.DataSource);
                var  dsContext = new DataSourceContext()
                {
                    ModuleId       = module.ModuleID,
                    TemplateFolder = settings.TemplateDir.FolderPath,
                    Index          = index,
                    UserId         = UserInfo.UserID,
                    PortalId       = module.PortalID,
                    Config         = manifest.DataSourceConfig
                };
                string    itemId = null;
                IDataItem dsItem = null;
                if (listMode)
                {
                    if (id != null)
                    {
                        itemId = id;
                        dsItem = ds.Get(dsContext, itemId);
                        if (dsItem != null)
                        {
                            createdByUserid = dsItem.CreatedByUserId;
                        }
                    }
                }
                else
                {
                    dsContext.Single = true;
                    dsItem           = ds.Get(dsContext, null);
                    if (dsItem != null)
                    {
                        createdByUserid = dsItem.CreatedByUserId;
                    }
                }
                if (!OpenContentUtils.HasEditPermissions(PortalSettings, ActiveModule, editRole, createdByUserid))
                {
                    return(Request.CreateResponse(HttpStatusCode.Unauthorized));
                }
                //var indexConfig = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir);
                if (dsItem != null)
                {
                    ds.Delete(dsContext, dsItem);
                }
                return(Request.CreateResponse(HttpStatusCode.OK, ""));
            }
            catch (Exception exc)
            {
                Log.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
Ejemplo n.º 23
0
 public HttpResponseMessage Get(string entity, string id)
 {
     try
     {
         //int ModuleId = int.Parse(Request.Headers.GetValues("ModuleId").First());
         //int TabId = int.Parse(Request.Headers.GetValues("TabId").First());
         ModuleController    mc           = new ModuleController();
         ModuleInfo          activeModule = ActiveModule; //mc.GetModule(ModuleId, TabId, false);
         OpenContentSettings settings     = activeModule.OpenContentSettings();
         ModuleInfo          module       = activeModule;
         if (settings.ModuleId > 0)
         {
             //ModuleController mc = new ModuleController();
             module = mc.GetModule(settings.ModuleId, settings.TabId, false);
         }
         var     manifest         = settings.Template.Manifest;
         var     templateManifest = settings.Template;
         JObject reqOptions       = null;
         //if (!string.IsNullOrEmpty(req.options))
         //{
         //    reqOptions = JObject.Parse(req.options);
         //}
         //string editRole = manifest.GetEditRole();
         bool listMode = templateManifest != null && templateManifest.IsListTemplate;
         if (listMode)
         {
             var          indexConfig  = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir);
             QueryBuilder queryBuilder = new QueryBuilder(indexConfig);
             bool         isEditable   = ActiveModule.CheckIfEditable(PortalSettings);//portalSettings.UserMode != PortalSettings.Mode.Edit;
             queryBuilder.Build(settings.Query, !isEditable, UserInfo.UserID, DnnLanguageUtils.GetCurrentCultureCode(), UserInfo.Social.Roles);
             //if (restSelect != null)
             //{
             //    RestQueryBuilder.MergeJpListQuery(indexConfig, queryBuilder.Select, restSelect);
             //}
             queryBuilder.Select.Query.AddRule(new FilterRule()
             {
                 Field = "$id",
                 Value = new StringRuleValue(id)
             });
             IDataItems dsItems;
             if (queryBuilder.DefaultNoResults && queryBuilder.Select.IsQueryEmpty)
             {
                 dsItems = new DefaultDataItems()
                 {
                     Items = new List <DefaultDataItem>(),
                     Total = 0
                 };
             }
             else
             {
                 var ds        = DataSourceManager.GetDataSource(manifest.DataSource);
                 var dsContext = new DataSourceContext()
                 {
                     ModuleId       = module.ModuleID,
                     UserId         = UserInfo.UserID,
                     TemplateFolder = settings.TemplateDir.FolderPath,
                     Config         = manifest.DataSourceConfig,
                     Options        = reqOptions
                 };
                 dsItems = ds.GetAll(dsContext, queryBuilder.Select);
             }
             int          mainTabId = settings.DetailTabId > 0 ? settings.DetailTabId : settings.TabId;
             ModelFactory mf        = new ModelFactory(dsItems.Items, activeModule, PortalSettings, mainTabId);
             mf.Options = reqOptions;
             var model = mf.GetModelAsJson(false);
             var res   = new JObject();
             res["meta"]          = new JObject();
             res["meta"]["total"] = dsItems.Total;
             //model["luceneQuery"] = dsItems.DebugInfo;
             if (LogContext.IsLogActive)
             {
                 var logKey = "Query";
                 LogContext.Log(activeModule.ModuleID, logKey, "select", queryBuilder.Select);
                 LogContext.Log(activeModule.ModuleID, logKey, "result", dsItems);
                 LogContext.Log(activeModule.ModuleID, logKey, "model", model);
                 res["meta"]["logs"] = JToken.FromObject(LogContext.Current.ModuleLogs(activeModule.ModuleID));
             }
             if (model["Items"] is JArray)
             {
                 foreach (var item in (JArray)model["Items"])
                 {
                     item["id"] = item["Context"]["Id"];
                     JsonUtils.IdJson(item);
                 }
             }
             res[entity] = model["Items"];
             return(Request.CreateResponse(HttpStatusCode.OK, res));
         }
         else
         {
             return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "not supported because not in multi items template "));
         }
     }
     catch (Exception exc)
     {
         Log.Logger.Error(exc);
         return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
     }
 }
Ejemplo n.º 24
0
        public HttpResponseMessage Put(string entity, string id, [FromBody] JObject value)
        {
            // update
            try
            {
                bool index = false;
                OpenContentSettings settings = ActiveModule.OpenContentSettings();
                ModuleInfo          module   = ActiveModule;
                if (settings.ModuleId > 0)
                {
                    ModuleController mc = new ModuleController();
                    module = mc.GetModule(settings.ModuleId, settings.TabId, false);
                }
                var manifest = settings.Template.Manifest;
                TemplateManifest templateManifest = settings.Template;
                index = settings.Template.Manifest.Index;
                string editRole = manifest.GetEditRole();

                bool listMode        = templateManifest != null && templateManifest.IsListTemplate;
                int  createdByUserid = -1;
                var  ds        = DataSourceManager.GetDataSource(manifest.DataSource);
                var  dsContext = new DataSourceContext()
                {
                    ModuleId       = module.ModuleID,
                    TemplateFolder = settings.TemplateDir.FolderPath,
                    Index          = index,
                    UserId         = UserInfo.UserID,
                    PortalId       = module.PortalID,
                    Config         = manifest.DataSourceConfig
                };
                string    itemId = null;
                IDataItem dsItem = null;
                if (listMode)
                {
                    if (id != null)
                    {
                        itemId = id;
                        dsItem = ds.Get(dsContext, itemId);
                        if (dsItem != null)
                        {
                            createdByUserid = dsItem.CreatedByUserId;
                        }
                    }
                }
                else
                {
                    dsContext.Single = true;
                    dsItem           = ds.Get(dsContext, null);
                    //dsItem = ctrl.GetFirstContent(module.ModuleID);
                    if (dsItem != null)
                    {
                        createdByUserid = dsItem.CreatedByUserId;
                    }
                }
                if (!OpenContentUtils.HasEditPermissions(PortalSettings, ActiveModule, editRole, createdByUserid))
                {
                    return(Request.CreateResponse(HttpStatusCode.Unauthorized));
                }
                //var indexConfig = OpenContentUtils.GetIndexConfig(settings.Template.Key.TemplateDir);
                if (dsItem == null)
                {
                    ds.Add(dsContext, value.Properties().First().Value as JObject);
                }
                else
                {
                    ds.Update(dsContext, dsItem, value.Properties().First().Value as JObject);
                }
                //if (json["form"]["ModuleTitle"] != null && json["form"]["ModuleTitle"].Type == JTokenType.String)
                //{
                //    string moduleTitle = json["form"]["ModuleTitle"].ToString();
                //    OpenContentUtils.UpdateModuleTitle(ActiveModule, moduleTitle);
                //}
                //else if (json["form"]["ModuleTitle"] != null && json["form"]["ModuleTitle"].Type == JTokenType.Object)
                //{
                //    if (json["form"]["ModuleTitle"][DnnUtils.GetCurrentCultureCode()] != null)
                //    {
                //        string moduleTitle = json["form"]["ModuleTitle"][DnnUtils.GetCurrentCultureCode()].ToString();
                //        OpenContentUtils.UpdateModuleTitle(ActiveModule, moduleTitle);
                //    }
                //}
                return(Request.CreateResponse(HttpStatusCode.OK, ""));
            }
            catch (Exception exc)
            {
                Log.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
        public HttpResponseMessage Lookup(LookupRequestDTO req)
        {
            int moduleid = req.moduleid > 0 ? req.moduleid : ActiveModule.ModuleID;
            int tabid    = req.tabid > 0 ? req.tabid : ActiveModule.TabID;
            var module   = OpenContentModuleConfig.Create(moduleid, tabid, PortalSettings);

            if (module == null)
            {
                throw new Exception($"Can not find ModuleInfo (tabid:{req.tabid}, moduleid:{req.moduleid})");
            }

            List <LookupResultDTO> res = new List <LookupResultDTO>();

            try
            {
                IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID);

                if (module.IsListMode())
                {
                    var items = ds.GetAll(dsContext, null).Items;
                    if (items != null)
                    {
                        foreach (var item in items)
                        {
                            var json = item.Data;

                            if (!string.IsNullOrEmpty(req.dataMember) && json[req.dataMember] != null)
                            {
                                json = json[req.dataMember];
                            }
                            json = json.DeepClone();
                            JsonUtils.SimplifyJson(json, DnnLanguageUtils.GetCurrentCultureCode());

                            var array = json as JArray;
                            if (array != null)
                            {
                                res.AddRange(array.Select(childItem =>
                                                          new LookupResultDTO
                                {
                                    value = string.IsNullOrEmpty(req.valueField) || childItem[req.valueField] == null ? "" : childItem[req.valueField].ToString(),
                                    text  = string.IsNullOrEmpty(req.textField) || childItem[req.textField] == null ? "" : childItem[req.textField].ToString()
                                }
                                                          )
                                             );
                            }
                            else
                            {
                                res.Add(new LookupResultDTO
                                {
                                    value = string.IsNullOrEmpty(req.valueField) || json[req.valueField] == null ? item.Id : json[req.valueField].ToString(),
                                    text  = string.IsNullOrEmpty(req.textField) || json[req.textField] == null ? item.Title : json[req.textField].ToString()
                                });
                            }
                        }
                    }
                }
                else
                {
                    dsContext.Single = true;
                    var struc = ds.Get(dsContext, null);
                    if (struc != null)
                    {
                        JToken json = struc.Data;
                        if (!string.IsNullOrEmpty(req.dataMember))
                        {
                            json = json[req.dataMember];
                            json = json.DeepClone();
                            JsonUtils.SimplifyJson(json, DnnLanguageUtils.GetCurrentCultureCode());

                            if (json is JArray)
                            {
                                foreach (JToken item in (JArray)json)
                                {
                                    res.Add(new LookupResultDTO()
                                    {
                                        value = item[req.valueField] == null ? "" : item[req.valueField].ToString(),
                                        text  = item[req.textField] == null ? "" : item[req.textField].ToString()
                                    });
                                }
                            }
                        }
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.OK, res));
            }
            catch (Exception exc)
            {
                App.Services.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
Ejemplo n.º 26
0
        public ActionResult Index(string url, bool?preview)
        {
            Post PPM = db.Posts.FirstOrDefault(t => t.URL.ToLower() == url.ToLower().Trim() && (t.Status == Models.PostStatus.Publish || (preview.HasValue && preview.Value)));

            if (PPM != null)
            {
                #region Replace Custom Data Source
                DataSourceManager dsm = new DataSourceManager(db);

                if (PPM.TemplateName != string.Empty)
                {
                    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                    string templateHTML = dsm.LoadContent(PPM.TemplateName);
                    doc.LoadHtml(templateHTML);

                    if (doc.DocumentNode.SelectNodes("//datasource") != null)
                    {
                        foreach (HtmlAgilityPack.HtmlNode ds in doc.DocumentNode.SelectNodes("//datasource"))
                        {
                            try
                            {
                                HtmlAgilityPack.HtmlAttribute att = ds.Attributes["name"];

                                if (att != null)
                                {
                                    var temp    = doc.CreateElement("temp");
                                    var current = ds;
                                    if (att.Value == "articletext")
                                    {
                                        temp.InnerHtml = PPM.Article;
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articleimg")
                                    {
                                        if (PPM.OGImage != string.Empty)
                                        {
                                            temp.InnerHtml = string.Format("<img src='{0}' alt='' />", PPM.OGImage);
                                        }
                                        else
                                        {
                                            temp.InnerHtml = "";
                                        }

                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articletitle")
                                    {
                                        temp.InnerHtml = PPM.Title;
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articledate")
                                    {
                                        temp.InnerHtml = PPM.DateCreated.ToShortDateString();
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articleviewcount")
                                    {
                                        temp.InnerHtml = PPM.Viewed.ToString();
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articletag")
                                    {
                                        temp.InnerHtml = PPM.Tag;
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articlewritername")
                                    {
                                        temp.InnerHtml = PPM.WriterName;
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articlewriteremail")
                                    {
                                        temp.InnerHtml = PPM.WriterEmail;
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articlecategory")
                                    {
                                        temp.InnerHtml = PPM.Category.Name;
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                    else if (att.Value == "articledescription")
                                    {
                                        temp.InnerHtml = PPM.OGDescription;
                                        foreach (var child in temp.ChildNodes)
                                        {
                                            ds.ParentNode.InsertAfter(child, current);
                                            current = child;
                                        }
                                        ds.Remove();
                                    }
                                }
                            }
                            catch { }
                        }
                    }

                    PPM.Article = doc.DocumentNode.OuterHtml;
                }
                PPM.Article = dsm.ParseAndPopulate(PPM.Article);
                #endregion
            }
            else
            {
                PPM = new Post();
            }
            return(View(PPM));
        }
        public HttpResponseMessage Edit(string id)
        {
            try
            {
                var         module    = OpenContentModuleConfig.Create(ActiveModule, PortalSettings);
                IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext = OpenContentUtils.CreateDataContext(module);
                IDataItem   dsItem    = null;
                if (module.IsListMode())
                {
                    if (!string.IsNullOrEmpty(id)) // not a new item
                    {
                        dsItem = ds.Get(dsContext, id);
                    }
                }
                else
                {
                    dsContext.Single = true;
                    dsItem           = ds.Get(dsContext, null);
                }
                int createdByUserid = -1;
                var json            = ds.GetAlpaca(dsContext, true, true, true);
                if (ds is IDataActions)
                {
                    var actions = ((IDataActions)ds).GetActions(dsContext, dsItem);
                    if (json["options"] == null)
                    {
                        json["options"] = new JObject();
                    }
                    if (json["options"]["form"] == null)
                    {
                        json["options"]["form"] = new JObject();
                    }
                    if (json["options"]["form"]["buttons"] == null)
                    {
                        json["options"]["form"]["buttons"] = new JObject();
                    }
                    var buttons    = json["options"]["form"]["buttons"] as JObject;
                    var newButtons = new JObject();
                    foreach (var act in actions)
                    {
                        var but = buttons[act.Name];
                        if (but == null)
                        {
                            but = new JObject();
                        }
                        but["after"]         = act.AfterExecute;
                        newButtons[act.Name] = but;
                    }
                    json["options"]["form"]["buttons"] = newButtons;
                }
                if (dsItem != null)
                {
                    json["data"] = dsItem.Data;
                    if (json["schema"]["properties"]["ModuleTitle"] is JObject)
                    {
                        if (json["data"]["ModuleTitle"] != null && json["data"]["ModuleTitle"].Type == JTokenType.String)
                        {
                            json["data"]["ModuleTitle"] = ActiveModule.ModuleTitle;
                        }
                        else if (json["data"]["ModuleTitle"] != null && json["data"]["ModuleTitle"].Type == JTokenType.Object)
                        {
                            json["data"]["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()] = ActiveModule.ModuleTitle;
                        }
                    }
                    var versions = ds.GetVersions(dsContext, dsItem);
                    if (versions != null)
                    {
                        json["versions"] = versions;
                    }
                    createdByUserid = dsItem.CreatedByUserId;
                }

                var context       = new JObject();
                var currentLocale = DnnLanguageUtils.GetCurrentLocale(PortalSettings.PortalId);
                context["culture"]                = currentLocale.Code; //todo why not use  DnnLanguageUtils.GetCurrentCultureCode() ???
                context["defaultCulture"]         = LocaleController.Instance.GetDefaultLocale(PortalSettings.PortalId).Code;
                context["numberDecimalSeparator"] = currentLocale.Culture.NumberFormat.NumberDecimalSeparator;
                context["rootUrl"]                = System.Web.VirtualPathUtility.ToAbsolute(string.Concat(System.Web.HttpRuntime.AppDomainAppVirtualPath, "/"));
                context["alpacaCulture"]          = AlpacaEngine.AlpacaCulture(currentLocale.Code);
                context["bootstrap"]              = App.Services.CreateGlobalSettingsRepository(PortalSettings.PortalId).GetEditLayout() != AlpacaLayoutEnum.DNN;
                context["horizontal"]             = App.Services.CreateGlobalSettingsRepository(PortalSettings.PortalId).GetEditLayout() == AlpacaLayoutEnum.BootstrapHorizontal;
                json["context"] = context;

                //todo: can't we do some of these checks at the beginning of this method to fail faster?
                if (!DnnPermissionsUtils.HasEditPermissions(module, module.Settings.Manifest.GetEditRole(), createdByUserid))
                {
                    return(Request.CreateResponse(HttpStatusCode.Unauthorized));
                }

                return(Request.CreateResponse(HttpStatusCode.OK, json));
            }
            catch (Exception exc)
            {
                App.Services.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
Ejemplo n.º 28
0
 public Order()
 {
     orderDetails = new EntityCollection <OrderDetail>(DataSourceManager.GetCurrentDataSource <DefaultWCFSvcDataSource>().OrderDetails);
 }
        public HttpResponseMessage Update(JObject json)
        {
            try
            {
                var    module          = OpenContentModuleConfig.Create(ActiveModule, PortalSettings);
                string editRole        = module.Settings.Template.Manifest.GetEditRole();
                int    createdByUserid = -1;

                IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID);

                IDataItem dsItem = null;
                if (module.IsListMode())
                {
                    if (json["id"] != null)
                    {
                        var itemId = json["id"].ToString();
                        dsItem = ds.Get(dsContext, itemId);
                        if (dsItem != null)
                        {
                            createdByUserid = dsItem.CreatedByUserId;
                        }
                    }
                }
                else
                {
                    dsContext.Single = true;
                    dsItem           = ds.Get(dsContext, null);
                    if (dsItem != null)
                    {
                        createdByUserid = dsItem.CreatedByUserId;
                    }
                }

                //todo: can't we do some of these checks at the beginning of this method to fail faster?
                if (!DnnPermissionsUtils.HasEditPermissions(module, editRole, createdByUserid))
                {
                    return(Request.CreateResponse(HttpStatusCode.Unauthorized));
                }

                AddNotifyInfo(dsContext);
                try
                {
                    if (dsItem == null)
                    {
                        ds.Add(dsContext, json["form"] as JObject);
                    }
                    else
                    {
                        ds.Update(dsContext, dsItem, json["form"] as JObject);
                    }
                    App.Services.CacheAdapter.SyncronizeCache(module);
                }
                catch (DataNotValidException ex)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        isValid = false,
                        validMessage = ex.Message
                    }));
                }

                if (json["form"]["ModuleTitle"] != null && json["form"]["ModuleTitle"].Type == JTokenType.String)
                {
                    string moduleTitle = json["form"]["ModuleTitle"].ToString();
                    ActiveModule.UpdateModuleTitle(moduleTitle);
                }
                else if (json["form"]["ModuleTitle"] != null && json["form"]["ModuleTitle"].Type == JTokenType.Object)
                {
                    if (json["form"]["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()] != null)
                    {
                        string moduleTitle = json["form"]["ModuleTitle"][DnnLanguageUtils.GetCurrentCultureCode()].ToString();
                        ActiveModule.UpdateModuleTitle(moduleTitle);
                    }
                }
                return(Request.CreateResponse(HttpStatusCode.OK, new
                {
                    isValid = true
                }));
            }
            catch (Exception exc)
            {
                App.Services.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
Ejemplo n.º 30
0
 public ProductDetail()
 {
     reviews = new EntityCollection <ProductReview>(DataSourceManager.GetCurrentDataSource <DefaultWCFSvcDataSource>().ProductReviews);
 }
        public HttpResponseMessage Action(SubmitDTO req)
        {
            try
            {
                var    module          = OpenContentModuleConfig.Create(ActiveModule, PortalSettings);
                string editRole        = module.Settings.Template.Manifest.GetEditRole();
                int    createdByUserid = -1;

                IDataSource ds        = DataSourceManager.GetDataSource(module.Settings.Manifest.DataSource);
                var         dsContext = OpenContentUtils.CreateDataContext(module, UserInfo.UserID);

                IDataItem dsItem = null;
                if (module.IsListMode())
                {
                    if (req.id != null)
                    {
                        var itemId = req.id;
                        dsItem = ds.Get(dsContext, itemId);
                        if (dsItem != null)
                        {
                            createdByUserid = dsItem.CreatedByUserId;
                        }
                    }
                }
                else
                {
                    dsContext.Single = true;
                    dsItem           = ds.Get(dsContext, null);
                    if (dsItem != null)
                    {
                        createdByUserid = dsItem.CreatedByUserId;
                    }
                }

                //todo: can't we do some of these checks at the beginning of this method to fail faster?
                if (!DnnPermissionsUtils.HasEditPermissions(module, editRole, createdByUserid))
                {
                    return(Request.CreateResponse(HttpStatusCode.Unauthorized));
                }
                try
                {
                    var res = ds.Action(dsContext, req.action, dsItem, req.form);
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        isValid = true,
                        result = res
                    }));
                }
                catch (DataNotValidException ex)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new
                    {
                        isValid = false,
                        validMessage = ex.Message
                    }));
                }
            }
            catch (Exception exc)
            {
                App.Services.Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
Ejemplo n.º 32
0
 protected override IConfigDataProvider CreateSession()
 {
     DataSourceManager[] dataSourceManagers = DataSourceManager.GetDataSourceManagers(typeof(TDataObject), "Identity");
     return(dataSourceManagers[0]);
 }
Ejemplo n.º 33
0
        private static void SnapExpandedEntry(List <DeltaSnapshotEntry> results, object element, IEdmNavigationSource edmParent, IEnumerable <ExpandedNavigationSelectItem> expandedNavigationItems, string parentId)
        {
            foreach (var navigationProperty in ((IEdmEntityType)EdmClrTypeUtils.GetEdmType(DataSourceManager.GetCurrentDataSource().Model, element)).NavigationProperties())
            {
                var expandedNavigationItem = GetExpandedNavigationItem(expandedNavigationItems, navigationProperty.Name);

                if (expandedNavigationItem != null)
                {
                    bool isCollection = navigationProperty.Type.IsCollection();

                    ExpandSelectItemHandler expandItemHandler = new ExpandSelectItemHandler(element);
                    expandedNavigationItem.HandleWith(expandItemHandler);
                    var propertyValue = expandItemHandler.ExpandedChildElement;

                    if (propertyValue != null)
                    {
                        IEdmNavigationSource targetSource = edmParent.FindNavigationTarget(navigationProperty);

                        if (isCollection)
                        {
                            SnapResults(results, propertyValue as IEnumerable, targetSource as IEdmEntitySetBase, expandedNavigationItem.SelectAndExpand, parentId, navigationProperty.Name);
                        }
                        else
                        {
                            SnapResult(results, propertyValue, targetSource, expandedNavigationItem.SelectAndExpand, parentId, navigationProperty.Name);
                        }
                    }
                }
            }
        }
Ejemplo n.º 34
0
        private static object GetRootQuery(string propertyName)
        {
            var dataSource = DataSourceManager.GetCurrentDataSource <OperationServiceDataSource>();

            return(dataSource.GetType().GetProperty(propertyName).GetValue(dataSource, null));
        }
Ejemplo n.º 35
0
        private void CompleteModel(JObject model, bool onlyData)
        {
            if (!onlyData && TemplateFiles != null && TemplateFiles.SchemaInTemplate)
            {
                // schema
                string schemaFilename = PhysicalTemplateFolder + "schema.json";
                model["Schema"] = JsonUtils.GetJsonFromFile(schemaFilename);
            }
            if (TemplateFiles != null && TemplateFiles.OptionsInTemplate)
            {
                // options
                JToken optionsJson = null;
                // default options
                string optionsFilename = PhysicalTemplateFolder + "options.json";
                if (File.Exists(optionsFilename))
                {
                    string fileContent = File.ReadAllText(optionsFilename);
                    if (!string.IsNullOrWhiteSpace(fileContent))
                    {
                        optionsJson = fileContent.ToJObject("Options");
                    }
                }
                // language options
                optionsFilename = PhysicalTemplateFolder + "options." + GetCurrentCultureCode() + ".json";
                if (File.Exists(optionsFilename))
                {
                    string fileContent = File.ReadAllText(optionsFilename);
                    if (!string.IsNullOrWhiteSpace(fileContent))
                    {
                        var extraJson = fileContent.ToJObject("Options cultureSpecific");
                        if (optionsJson == null)
                        {
                            optionsJson = extraJson;
                        }
                        else
                        {
                            optionsJson = optionsJson.JsonMerge(extraJson);
                        }
                    }
                }
                if (optionsJson != null)
                {
                    model["Options"] = optionsJson;
                }
            }

            // additional data
            if (TemplateFiles != null && TemplateFiles.AdditionalDataInTemplate && Manifest.AdditionalDataExists())
            {
                var additionalData = model["AdditionalData"] = new JObject();
                foreach (var item in Manifest.AdditionalData)
                {
                    var dataManifest = item.Value;
                    var ds           = DataSourceManager.GetDataSource(Manifest.DataSource);
                    var dsContext    = new DataSourceContext()
                    {
                        PortalId    = PortalId,
                        TabId       = Module.TabID,
                        ModuleId    = MainModuleId,
                        TabModuleId = Module.TabModuleID,
                        Config      = Manifest.DataSourceConfig,
                    };
                    var    dsItem             = ds.GetData(dsContext, dataManifest.ScopeType, dataManifest.StorageKey ?? item.Key);
                    JToken additionalDataJson = new JObject();
                    if (dsItem != null && dsItem.Data != null)
                    {
                        if (LocaleController.Instance.GetLocales(PortalId).Count > 1)
                        {
                            JsonUtils.SimplifyJson(dsItem.Data, GetCurrentCultureCode());
                        }
                        additionalDataJson = dsItem.Data;
                    }
                    additionalData[(item.Value.ModelKey ?? item.Key).ToLowerInvariant()] = additionalDataJson;
                }
            }

            // settings
            if (!onlyData && TemplateManifest.SettingsNeeded() && !string.IsNullOrEmpty(settingsJson))
            {
                try
                {
                    dataJson = JToken.Parse(settingsJson);
                    if (LocaleController.Instance.GetLocales(PortalId).Count > 1)
                    {
                        JsonUtils.SimplifyJson(dataJson, GetCurrentCultureCode());
                    }
                    model["Settings"] = dataJson;
                }
                catch (Exception ex)
                {
                    throw new Exception("Error parsing Json of Settings", ex);
                }
            }

            // static localization
            if (!onlyData)
            {
                JToken localizationJson     = null;
                string localizationFilename = PhysicalTemplateFolder + GetCurrentCultureCode() + ".json";
                if (File.Exists(localizationFilename))
                {
                    string fileContent = File.ReadAllText(localizationFilename);
                    if (!string.IsNullOrWhiteSpace(fileContent))
                    {
                        localizationJson = fileContent.ToJObject("Localization: " + localizationFilename);
                    }
                }
                if (localizationJson != null)
                {
                    model["Localization"] = localizationJson;
                }
            }

            if (!onlyData)
            {
                // context
                JObject context = new JObject();
                model["Context"]       = context;
                context["ModuleId"]    = Module.ModuleID;
                context["ModuleTitle"] = Module.ModuleTitle;
                context["AddUrl"]      = DnnUrlUtils.EditUrl(Module.ModuleID, PortalSettings);
                var editStatus = GetEditStatus(-1);
                context["IsEditable"] = editStatus;
                context["PortalId"]   = PortalId;
                context["MainUrl"]    = Globals.NavigateURL(MainTabId, false, PortalSettings, "", GetCurrentCultureCode());
                if (Data != null)
                {
                    string url = "";
                    if (Manifest != null && !string.IsNullOrEmpty(Manifest.DetailUrl))
                    {
                        HandlebarsEngine hbEngine  = new HandlebarsEngine();
                        dynamic          dynForHBS = JsonUtils.JsonToDynamic(model.ToString());
                        url = hbEngine.Execute(Manifest.DetailUrl, dynForHBS);
                        url = HttpUtility.HtmlDecode(url);
                    }
                    context["DetailUrl"] = Globals.NavigateURL(MainTabId, false, PortalSettings, "", GetCurrentCultureCode(), url.CleanupUrl(), "id=" + Data.Id);
                    context["Id"]        = Data.Id;
                    context["EditUrl"]   = editStatus ? DnnUrlUtils.EditUrl("id", Data.Id, Module.ModuleID, PortalSettings) : "";
                }
            }
        }