public JsonResult ChangeValue(String part, String locale, String key, String value)
        {
            if(!_context.DebugMode)
                throw new Exception("Unauthorized!");

            var qualifier = new Qualifier.Unique(Part.Parse(part), new Locale(locale), key);
            _context.Repository.Values.SetValue(qualifier, value);
            return Json(new { Success = true, Value = _context.Repository.Values.GetValue(qualifier) }, JsonRequestBehavior.AllowGet);
        }
 public QualifiedValue GetQualifiedValue(Qualifier.Unique qualifier)
 {
     var testQualifier = qualifier;
     while (testQualifier.Part.Parent != null)
     {
         testQualifier = new Qualifier.Unique(testQualifier.Part.Parent, testQualifier.Locale, testQualifier.Key);
         QualifiedValue value;
         if (AllValues.TryGetValue(testQualifier, out value))
             return value;
     }
     throw new ValueNotFoundException(qualifier);
 }
        public JsonResult Create(String part, String locale, String key, String content)
        {
            var localization = Session.Get<ProviderPair>(ManualProviderPairName);
            if (localization == null)
                throw new Exception("Localization not loaded!");

            var qualifier = new Qualifier.Unique(Part.Parse(part), new Locale(locale), key);
            var value = content;
            var qualifiedValue = new QualifiedValue(qualifier, value);
            localization.ValueManager.UpdateCreateValue(qualifiedValue);

            return Json(new {ok = true});
        }
 public IEnumerable<QualifiedValue> GetAllValuesQualified()
 {
     foreach (var localization in _localizedValues)
     {
         foreach (var keyBasedLocalization in localization.Value.GetAllKeyBasedLocales())
         {
             foreach (var languageBasedLocalization in keyBasedLocalization.Value.GetAllLocaleBasedValues())
             {
                 var qualifier = new Qualifier.Unique(localization.Key, new Locale(languageBasedLocalization.Key), keyBasedLocalization.Key);
                 yield return new QualifiedValue(qualifier, languageBasedLocalization.Value);
             }
         }
     }
 }
        public QualifiedValue GetQualifiedValue(Qualifier.Unique qualifier, string defaultValue = null)
        {
            var testQualifier = qualifier;
            while (testQualifier.Part.Parent != null)
            {
                testQualifier = new Qualifier.Unique(testQualifier.Part.Parent, testQualifier.Locale, testQualifier.Key);
                QualifiedValue value;
                if (AllValues.TryGetValue(testQualifier, out value))
                    return value;
            }

            var qualifiedValue = new QualifiedValue(qualifier, defaultValue);
            AllValues.Add(qualifier, qualifiedValue);
            return qualifiedValue;
        }
Beispiel #6
0
        /// <summary>
        /// Gets the current spec for a specified key, overriding the current part and locale
        /// </summary>
        /// <param name="qualifier">Qualifier to get specs for, should at least contain the key.</param>
        /// <param name="defaultValue">If the localization does not yet exist, create with default value</param>
        /// <returns></returns>
        public QualifiedValue GetQualified(Qualifier.WithKey qualifier, String defaultValue = null)
        {
            var locale          = qualifier.Locale ?? Locales.GetCurrentLocale();
            var part            = qualifier.Part ?? Parts.GetCurrentPart();
            var resultQualifier = new Qualifier.Unique(part, locale, qualifier.Key);

            try {
                var value = Values.GetQualifiedValue(resultQualifier, defaultValue);
                if (value == null)
                {
                    throw new ValueNotFoundException(qualifier);
                }
                Logger.Log(value.Qualifier);
                return(value);
            }
            catch (ValueNotFoundException) {
                Notifier.NotifyMissing(resultQualifier);
                return(new QualifiedValue(resultQualifier, defaultValue ?? String.Format("[{0}]", qualifier.Key)));
            }
        }
        /// <summary>
        /// Gets the current spec for a specified key, overriding the current part and locale
        /// </summary>
        /// <param name="qualifier">Qualifier to get specs for, should at least contain the key.</param>
        /// <param name="defaultValue">If the localization does not yet exist, create with default value</param>
        /// <returns></returns>
        public QualifiedValue GetQualified(Qualifier.WithKey qualifier, String defaultValue = null)
        {
            var locale = qualifier.Locale ?? Locales.GetCurrentLocale();
            var part = qualifier.Part ?? Parts.GetCurrentPart();
            var resultQualifier = new Qualifier.Unique(part, locale, qualifier.Key);

            try {
                var value = Values.GetQualifiedValue(resultQualifier, defaultValue);
                if (value == null)
                    throw new ValueNotFoundException(qualifier);
                Logger.Log(value.Qualifier);
                return value;
            }
            catch (ValueNotFoundException) {
                Notifier.NotifyMissing(resultQualifier);
                return new QualifiedValue(resultQualifier, defaultValue ?? String.Format("[{0}]", qualifier.Key));
            }
        }
 private static KeyValuePair<Qualifier.Unique, QualifiedValue> CreateValuePair(Part part, string key, string value)
 {
     var qualifier = new Qualifier.Unique(part, Locale, key);
     var qualifiedValue = new QualifiedValue(qualifier, new Value(ContentType.Text, value));
     return new KeyValuePair<Qualifier.Unique, QualifiedValue>(qualifier, qualifiedValue);
 }
        public JsonResult SyncRemove(String side, String part, String locale, String key)
        {
            var localization = Session["synchronization" + side + "ProviderPair"] as ProviderPair;
            if (localization == null)
                throw new Exception("Localization not loaded!");

            var qualifier = new Qualifier.Unique(Part.Parse(part), new Locale(locale), key);
            localization.ValueManager.DeleteValue(qualifier);

            return Json(new { ok = true });
        }
Beispiel #10
0
 public Log(Qualifier.Unique qualifier, DateTime date)
 {
     Qualifier = qualifier;
     Date      = date;
 }
        public JsonResult TransUpdate(String part, String locale, String key, String value)
        {
            var localization = Session["translationProviderPair"] as ProviderPair;
            if (localization == null)
                throw new Exception("Localization not loaded!");

            var qualifier = new Qualifier.Unique(Part.Parse(part), new Locale(locale), key);
            localization.ValueManager.UpdateCreateValue(new QualifiedValue(qualifier, new Value(ContentType.Unspecified, value)));

            return Json(new { ok = true });
        }
 public QualifiedValue(Qualifier.Unique qualifier, String value)
 {
     Qualifier = qualifier;
     Value     = value;
 }
        public JsonResult SyncDuplicate(String side, String part, String locale, String key)
        {
            var localizationFrom = Session["synchronization" + side + "ProviderPair"] as ProviderPair;
            var localizationTo = Session["synchronization" + (side == "Right" ? "Left" : "Right") + "ProviderPair"] as ProviderPair;

            if (localizationFrom == null || localizationTo == null)
                throw new Exception("Localization not loaded!");

            var qualifier = new Qualifier.Unique(Part.Parse(part), new Locale(locale), key);
            localizationTo.ValueManager.UpdateCreateValue(localizationFrom.ValueManager.GetQualifiedValue(qualifier));

            return Json(new { ok = true });
        }
        public JsonResult SyncRemove(SynchronizationItem[] items)
        {
            foreach (var item in items)
            {
                var localization = Session.Get<ProviderPair>(String.Format(SynchronizationProviderPairNameBase, item.Side));
                if (localization == null)
                    throw new Exception("Localization not loaded!");

                var qualifier = new Qualifier.Unique(Part.Parse(item.Part), new Locale(item.Locale), item.Key);
                localization.ValueManager.DeleteValue(qualifier);
            }

            return Json(new { ok = true });
        }
        public JsonResult SyncDuplicate(SynchronizationItem[] items)
        {
            foreach (var item in items)
            {
                var localizationFrom = Session.Get<ProviderPair>(String.Format(SynchronizationProviderPairNameBase, item.Side));
                var localizationTo = Session.Get<ProviderPair>(String.Format(SynchronizationProviderPairNameBase, (item.Side == "Right" ? "Left" : "Right")));

                if (localizationFrom == null || localizationTo == null)
                    throw new Exception("Localization not loaded!");

                var qualifier = new Qualifier.Unique(Part.Parse(item.Part), new Locale(item.Locale), item.Key);
                localizationTo.ValueManager.UpdateCreateValue(localizationFrom.ValueManager.GetQualifiedValue(qualifier));
            }

            return Json(new { ok = true });
        }
        public JsonResult Remove(String part, String locale, String key)
        {
            var localization = Session.Get<ProviderPair>(ManualProviderPairName);
            if (localization == null)
                throw new Exception("Localization not loaded!");

            var qualifier = new Qualifier.Unique(Part.Parse(part), new Locale(locale), key);
            localization.ValueManager.DeleteValue(qualifier);

            return Json(new { ok = true });
        }
        public ActionResult Import(String providerConfigName, String locale, HttpPostedFileBase postedFile)
        {
            var providerPair = ProviderPairFactory.CreateProviderPair(providerConfigName);
            var allValues = providerPair.ValueManager.GetAllValuesQualified().ToArray();
            var selectedLocale = new Locale(locale);
            var valuesByPartKey = allValues
                .Where(value => value.Qualifier.Locale.Equals(selectedLocale))
                .ToDictionary(v => new Qualifier.Unique(v.Qualifier.Part, selectedLocale, v.Qualifier.Key));

            var extention = postedFile.FileName.Split('.').Last();
            var records = new List<ImportExportRecord>();
            switch (extention) {
                case "csv":
                    using (var reader = new CsvReader(new StreamReader(postedFile.InputStream))) {
                        reader.Configuration.Delimiter = ";";
                        records.AddRange(reader.GetRecords<ImportExportRecord>());
                    }
                    break;
                case "xml":
                    // ReSharper disable PossibleNullReferenceException
                    var document = XDocument.Load(postedFile.InputStream);
                    records.AddRange(document.Root.Descendants("Localization").Select(
                        xel => new ImportExportRecord(xel.Element("Part").Value, xel.Element("Key").Value, xel.Element("Value").Value)
                            { DeleteOnImport = xel.Element("DeleteOnImport").Value.Trim().ToLowerInvariant() != "false" }
                    ));
                    // ReSharper restore PossibleNullReferenceException
                    break;
            }

            var inserts = new List<QualifiedValue>();
            var updates = new List<Tuple<QualifiedValue, ImportExportRecord>>();
            var deletes = new List<QualifiedValue>();

            foreach (var record in records) {
                QualifiedValue correspondingValue;
                var recordQualfier = new Qualifier.Unique(Part.Parse(record.Part), selectedLocale, record.Key);

                if (valuesByPartKey.TryGetValue(recordQualfier, out correspondingValue)) {
                    if(record.DeleteOnImport)
                        deletes.Add(correspondingValue);
                    else if(!record.Value.Equals(correspondingValue.Value))
                        updates.Add(Tuple.Create(correspondingValue, record));
                }
                else if(!record.DeleteOnImport)
                    inserts.Add(new QualifiedValue(recordQualfier, record.Value));
            }

            return View(new ImportReportData(providerConfigName, postedFile.FileName, selectedLocale, inserts, updates, deletes));
        }