コード例 #1
0
        public virtual object GetObject(TokenDataCollection collection, string name, Type t)
        {
            string id = collection.GetString(name);

            if (t == typeof(string))
            {
                return(id);
            }
            if (t == typeof(Item))
            {
                if (id == null)
                {
                    return(null);
                }
                return
                    ((Sitecore.Context.ContentDatabase ?? Sitecore.Context.Database ?? Factory.GetDatabase("master")).GetItem(id));
            }
            if (t == typeof(ID))
            {
                if (string.IsNullOrWhiteSpace(id))
                {
                    return(ID.Null);
                }
                return(new ID(id));
            }
            throw new TokenCastException($"Unable to cast type {t.Namespace}.{t.Name} for TokenIdAttribute on property/field {name}.  Acceptable types are ID, Item or string.");
        }
コード例 #2
0
        public override string Value(TokenDataCollection extraData)
        {
            LinkField f = TokenKeeper.CurrentKeeper.GetDatabase().GetItem(BackingId).Fields["Link"];

            return(string.Format("<a href='{0}' target='{1}' class='{2}' title='{3}'>{4}</a>", f.GetFriendlyUrl(), f.Target,
                                 f.Class, f.Title, extraData["Link Text"]));
        }
コード例 #3
0
        public virtual object GetObject(TokenDataCollection collection, string name, Type t)
        {
            var link = collection.GetLink(name);

            if (t == typeof(GeneralLink))
            {
                return(link);
            }
            if (t == typeof(string))
            {
                return(link?.Href);
            }
            if (t == typeof(Item))
            {
                if (link?.InternalLinkId == null)
                {
                    return(null);
                }
                return
                    ((Sitecore.Context.ContentDatabase ?? Sitecore.Context.Database ?? Factory.GetDatabase("master")).GetItem(
                         link.InternalLinkId));
            }
            if (t == typeof(ID))
            {
                if (link?.InternalLinkId == null)
                {
                    return(ID.Null);
                }
                return(new ID(collection.GetLink(name).InternalLinkId));
            }
            throw new TokenCastException($"Unable to cast type {t.Namespace}.{t.Name} for TokenGeneralLinkAttribute on property/field {name}.  Acceptable types are TokenManager.Data.TokenDataTypes.Support.GeneralLink, string.");
        }
コード例 #4
0
 public virtual string GetTokenValue(string category, string token, TokenDataCollection extraData)
 {
     if (TokenCollections.ContainsKey(category) && TokenCollections[category].IsCurrentContextValid() && IsCollectionValid(TokenCollections[category]))
     {
         return(TokenCollections[category][token].Value(extraData));
     }
     return(null);
 }
コード例 #5
0
        public virtual object GetObject(TokenDataCollection collection, string name, Type t)
        {
            if (t == typeof(string))
            {
                return(collection.GetString(name));
            }

            throw new TokenCastException($"Unable to cast type {t.Namespace}.{t.Name} for TokenStringAttribute on property/field {name}.  Acceptable types are ID, Item or string.");
        }
コード例 #6
0
        public sealed override string TokenIdentifierText(TokenDataCollection extraData)
        {
            string modelIdentifier = TokenIdentifierText(GenerateModel(extraData));

            if (!string.IsNullOrWhiteSpace(modelIdentifier))
            {
                return(modelIdentifier);
            }
            return(base.TokenIdentifierText(extraData));
        }
コード例 #7
0
        public override string Value(TokenDataCollection extraData)
        {
            Database db   = TokenKeeper.CurrentKeeper.GetDatabase();
            Item     item = db.GetItem(BackingId);

            if (item != null)
            {
                TokenRuleContext context = new TokenRuleContext();
                item.RunRules("Value", context);
                return(context.Value);
            }
            return(string.Empty);
        }
コード例 #8
0
        public override string Value(TokenDataCollection extraData)
        {
            InternalLinkField renderingItem = TokenKeeper.CurrentKeeper.GetDatabase().GetItem(BackingId).Fields["Rendering"];
            TextWriter        tw            = new StringWriter();
            var           h  = new HtmlHelper(new ViewContext(new ControllerContext(), new FakeView(), new ViewDataDictionary(), new TempDataDictionary(), tw), new ViewPage());
            StringBuilder sb = new StringBuilder();

            if (!string.IsNullOrWhiteSpace(extraData["Datasource for the rendering"]))
            {
                sb.Append(new SitecoreHelper(h).Rendering(renderingItem.TargetID.ToString(),
                                                          new { Datasource = extraData["Datasource for the rendering"] }));
            }
            return(sb.ToString());
        }
コード例 #9
0
        public virtual string GetTokenIdentifier(string category, string token, IDictionary <string, object> fields)
        {
            List <ID> ids = new IdList();
            var       ret = new TokenDataCollection();

            ret["Category"] = category;
            ret["Token"]    = token;

            IToken itoken = GetToken(category, token);

            if (fields != null)
            {
                foreach (string key in fields.Keys.Where(x => x != "Category" && x != "Token"))
                {
                    var grouped = (IDictionary <string, object>)(fields[key] as IDictionary <string, object>)?["grouped"];
                    if (grouped == null)
                    {
                        var value = fields[key]?.ToString() ?? "";
                        ret[key] = value;
                        ID tmp;
                        if (ID.TryParse(value, out tmp))
                        {
                            ids.Add(tmp);
                        }
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
                        foreach (KeyValuePair <string, object> group in grouped)
                        {
                            sb.Append(HttpUtility.HtmlEncode(group.Key));
                            sb.Append("|=|");
                            sb.Append(HttpUtility.HtmlEncode(group.Value.ToString()));
                            sb.Append("|||");
                            ID tmp;
                            if (ID.TryParse(group.Value, out tmp))
                            {
                                ids.Add(tmp);
                            }
                        }
                        if (sb.Length > 3)
                        {
                            ret[key] = sb.ToString(0, sb.Length - 3);
                        }
                    }
                }
            }

            return(string.Format("{0}{1}\" {4}>{2}<span style='display:none;'>{5}</span>{3}", TokenPrefix, ret, itoken.TokenIdentifierText(ret).Replace("\n", "").Replace("\r", ""), TokenSuffix, $"style='{itoken.TokenIdentifierStyle(ret)}'", GenerateScLinks(ids)));
        }
コード例 #10
0
        public override string Value(TokenDataCollection extraData)
        {
            string ret = DemandbaseContext.User.GetSecondTeirValue <object>("watch_list", extraData["attribute"])?.ToString();

            if (ret != null)
            {
                return(ret);
            }
            ret = DemandbaseContext.User.GetSecondTeirValue <object>(extraData["level"], extraData["attribute"])?.ToString();
            if (ret != null)
            {
                return(ret);
            }
            return(DemandbaseContext.User.GetValue <object>(extraData["attribute"])?.ToString() ?? "");
        }
コード例 #11
0
 public virtual object GetObject(TokenDataCollection collection, string name, Type t)
 {
     if (t == typeof(bool))
     {
         return(collection.GetBoolean(name));
     }
     if (t == typeof(string))
     {
         return(collection.GetString(name));
     }
     if (t == typeof(int))
     {
         return(collection.GetString(name) == "True" ? 1 : 0);
     }
     throw new TokenCastException($"Unable to cast type {t.Namespace}.{t.Name} for TokenBooleanAttribute on property/field {name}.  Acceptable types are bool, string, int.");
 }
コード例 #12
0
 public virtual object GetObject(TokenDataCollection collection, string name, Type t)
 {
     if (t == typeof(string))
     {
         return(collection.GetString(name));
     }
     if (t == typeof(Item))
     {
         return((Sitecore.Context.ContentDatabase ?? Sitecore.Context.Database ?? Factory.GetDatabase("master")).GetItem(collection.GetId(name) ?? ID.Null));
     }
     if (t == typeof(ID))
     {
         return(collection.GetId(name));
     }
     throw new TokenCastException($"Unable to cast type {t.Namespace}.{t.Name} for TokenDroplistAttribute on property/field {name}.  Acceptable type is string.");
 }
コード例 #13
0
        public override string Value(TokenDataCollection extraData)
        {
            Database db      = TokenKeeper.CurrentKeeper.GetDatabase();
            var      lang    = Context.Language.Name;
            int?     version = db?.GetItem(GetBackingItemId())?.Version.Number;
            var      key     = db?.Name + lang + version;

            if (_databaseToValue.ContainsKey(key))
            {
                return(_databaseToValue[key]);
            }
            if (LoadValue(db, key))
            {
                return(_databaseToValue[key]);
            }
            return(null);
        }
コード例 #14
0
        public virtual T GenerateModel(TokenDataCollection extraData)
        {
            T model = (T)Activator.CreateInstance(typeof(T));

            foreach (var prop in typeof(T).GetProperties())
            {
                foreach (var attr in prop.GetCustomAttributes(typeof(ITokenDataAttribute), false).OfType <ITokenDataAttribute>())
                {
                    prop.SetValue(model, attr.GetObject(extraData, prop.Name, prop.PropertyType));
                }
            }
            foreach (var field in typeof(T).GetFields())
            {
                foreach (var attr in field.GetCustomAttributes(typeof(ITokenDataAttribute), false).OfType <ITokenDataAttribute>())
                {
                    field.SetValue(model, attr.GetObject(extraData, field.Name, field.FieldType));
                }
            }
            return(model);
        }
コード例 #15
0
 public virtual string GetTokenIdentifier(TokenDataCollection data)
 {
     return(GetTokenIdentifier(data["Category"], data["Token"], data.AllKeys.Where(k => k != "Category" && k != "Token").ToDictionary(k => k, k => data[k])));
 }
コード例 #16
0
 /// <summary>
 /// Returns the value for the token that is then injected into the RTE.
 /// </summary>
 /// <param name="extraData">The user defined data that was gathered when the author added the token to the RTE.</param>
 /// <returns>Token Value</returns>
 public override string Value(TokenDataCollection extraData)
 {
     return(extraData["mystring"]);
 }
コード例 #17
0
 public virtual IToken ParseITokenFromProps(TokenDataCollection props, Item item = null)
 {
     return(GetToken(props["Category"], props["Token"], item));
 }
コード例 #18
0
ファイル: AutoToken.cs プロジェクト: chaelli/SCTokenManager
 public virtual string TokenIdentifierStyle(TokenDataCollection extraData)
 {
     return(TokenKeeper.CurrentKeeper.TokenCss);
 }
コード例 #19
0
ファイル: AutoToken.cs プロジェクト: chaelli/SCTokenManager
 public virtual string TokenIdentifierText(TokenDataCollection extraData)
 {
     return("{0} > {1}".FormatWith(extraData["Category"], extraData["Token"]));
 }
コード例 #20
0
ファイル: AutoToken.cs プロジェクト: chaelli/SCTokenManager
 public abstract string Value(TokenDataCollection extraData);
コード例 #21
0
        public override string TokenIdentifierText(TokenDataCollection extraData)
        {
            DemandbaseAttribute attribute = DemandbaseContext.Attributes.Values.FirstOrDefault(x => x.Id == extraData["attribute"]);

            return($"Demandbase {extraData["level"]} {attribute?.Name ?? extraData["attribute"]}");
        }
コード例 #22
0
 string IToken.Value(TokenDataCollection extraData)
 {
     return(Value);
 }
コード例 #23
0
 public sealed override string Value(TokenDataCollection extraData)
 {
     return(Render(GenerateModel(extraData)));
 }
コード例 #24
0
 public string Value(TokenDataCollection extraData)
 {
     return(_valueFunc());
 }