コード例 #1
0
        public string Execute([NotNull] string databaseName, [NotNull] string id)
        {
            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                throw new Exception("Database not found");
            }

            var item = database.GetItem(id);

            Debug.Assert(item != null, "Item \"" + id + "\" not found.");

            var fileName = FileUtil.MapPath(TempFolder.GetFilename("export.json"));

            using (var writer = new StreamWriter(fileName))
            {
                using (var output = new JsonTextWriter(writer))
                {
                    output.Formatting = Formatting.Indented;

                    output.WriteStartObject();

                    Export(output, new[] { item }, true);

                    output.WriteEndObject();
                }
            }

            return(fileName);
        }
コード例 #2
0
        /// <summary>Unpacks to file.</summary>
        /// <param name="args">The arguments.</param>
        /// <param name="file">The file.</param>
        private static void UnpackToFile(UploadArgs args, HttpPostedFile file)
        {
            Assert.ArgumentNotNull((object)args, "args");
            Assert.ArgumentNotNull((object)file, "file");
            string filename = FileUtil.MapPath(TempFolder.GetFilename("temp.zip"));

            file.SaveAs(filename);
            using (ZipReader zipReader = new ZipReader(filename))
            {
                foreach (ZipEntry entry in zipReader.Entries)
                {
                    string str = FileUtil.MakePath(args.Folder, entry.Name, '\\');
                    if (entry.IsDirectory)
                    {
                        Directory.CreateDirectory(str);
                    }
                    else
                    {
                        if (!args.Overwrite)
                        {
                            str = FileUtil.GetUniqueFilename(str);
                        }
                        Directory.CreateDirectory(Path.GetDirectoryName(str));
                        lock (FileUtil.GetFileLock(str))
                            FileUtil.CreateFile(str, entry.GetStream(), true);
                    }
                }
            }
        }
コード例 #3
0
        public string Execute([NotNull] string databaseName, [NotNull] string id)
        {
            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                throw new Exception("Database not found");
            }

            var item = database.GetItem(id);

            Debug.Assert(item != null, "Item \"" + id + "\" not found.");

            var fileName  = FileUtil.MapPath(TempFolder.GetFilename("export.yaml"));
            var languages = item.Database.Languages;
            var templates = TemplateManager.GetTemplates(database).Values;
            var duplicateTemplateNames = templates.Where(t => templates.Any(d => d != t && string.Equals(d.Name, t.Name, StringComparison.OrdinalIgnoreCase))).Select(t => t.Name);

            using (var writer = new StreamWriter(fileName))
            {
                Export(new YamlTextWriter(writer), item, languages, duplicateTemplateNames, true);
            }

            return(fileName);
        }
コード例 #4
0
        public string Execute([NotNull] string databaseName, [NotNull] string itemList)
        {
            Assert.ArgumentNotNull(databaseName, nameof(databaseName));
            Assert.ArgumentNotNull(itemList, nameof(itemList));

            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                throw new Exception("Database not found");
            }

            var fileName = TempFolder.GetFilename("package.zip");

            var items   = GetItems(database, itemList);
            var package = new ZipPackageBuilder(fileName);

            foreach (var item in items)
            {
                package.Items.Add(item);
            }

            var result = package.Build();

            return(WebUtil.GetServerUrl() + result);
        }
コード例 #5
0
        public string Execute([NotNull] string databaseName, [NotNull] string xslt)
        {
            Assert.ArgumentNotNull(databaseName, nameof(databaseName));
            Assert.ArgumentNotNull(xslt, nameof(xslt));

            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                throw new Exception("Database not found");
            }

            var item = database.GetRootItem();

            var fileName = TempFolder.GetFilename("TransformCodeGeneration.xslt");
            var path     = FileUtil.MapPath(fileName);

            File.WriteAllText(path, xslt, Encoding.UTF8);

            var xslFile = new XslFile
            {
                Path = fileName
            };

            xslFile.XslExtensions["http://www.sitecore.net/codegeneration"] = new Helper();

            var result = xslFile.Transform(item);

            File.Delete(path);

            return(result);
        }
コード例 #6
0
        /// <summary>
        /// Unpacks to file.
        /// </summary>
        /// <param name="args">The arguments.</param>
        /// <param name="file">The file.</param>
        private static void UnpackToFile(UploadArgs args, HttpPostedFile file)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.ArgumentNotNull(file, "file");
            string filename = FileUtil.MapPath(TempFolder.GetFilename("temp.zip"));

            file.SaveAs(filename);
            using (ZipReader zipReader = new ZipReader(filename))
            {
                foreach (ZipEntry current in zipReader.Entries)
                {
                    string text = FileUtil.MakePath(args.Folder, current.Name, '\\');
                    if (current.IsDirectory)
                    {
                        System.IO.Directory.CreateDirectory(text);
                    }
                    else
                    {
                        if (!args.Overwrite)
                        {
                            text = FileUtil.GetUniqueFilename(text);
                        }
                        System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(text));
                        lock (FileUtil.GetFileLock(text))
                        {
                            FileUtil.CreateFile(text, current.GetStream(), true);
                        }
                    }
                }
            }
        }
コード例 #7
0
        public string Execute([NotNull] string databaseName, [NotNull] string batchScript, [NotNull] string xslt)
        {
            Assert.ArgumentNotNull(databaseName, nameof(databaseName));
            Assert.ArgumentNotNull(batchScript, nameof(batchScript));
            Assert.ArgumentNotNull(xslt, nameof(xslt));

            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                throw new Exception("Database not found");
            }

            var doc = GetXmlDocument(databaseName, batchScript);

            var fileName = TempFolder.GetFilename("Report.xslt");
            var xslFile  = FileUtil.MapPath(fileName);

            File.WriteAllText(xslFile, xslt, Encoding.UTF8);

            var result = XmlUtil.Transform(doc, xslFile, true);

            File.Delete(xslFile);

            return(result);
        }
コード例 #8
0
        public string Execute([NotNull] string page, [NotNull] string name, [NotNull] string parameters)
        {
            Assert.ArgumentNotNull(page, nameof(page));
            Assert.ArgumentNotNull(name, nameof(name));
            Assert.ArgumentNotNull(parameters, nameof(parameters));

            var fileName = TempFolder.GetFilename(name);
            var path     = Path.ChangeExtension(FileUtil.MapPath(fileName), ".aspx");

            File.WriteAllText(path, page, Encoding.UTF8);

            var writer = new StringWriter();

            var httpContext = HttpContext.Current;

            httpContext.Session["SC_CODEGENERATOR_PARAMETERS"] = parameters;

            httpContext.Server.Execute(fileName, writer);
            var result = writer.ToString();

            httpContext.Session.Remove("SC_CODEGENERATOR_PARAMETERS");

            File.Delete(path);

            return(result);
        }
コード例 #9
0
        public string Execute([NotNull] string databaseName, [NotNull] string itemId)
        {
            Assert.ArgumentNotNull(databaseName, nameof(databaseName));
            Assert.ArgumentNotNull(itemId, nameof(itemId));

            var url = itemId;

            var database = Factory.GetDatabase(databaseName);

            Assert.IsNotNull(database, typeof(Database));

            Item item;

            try
            {
                item = database.GetItem(itemId);
            }
            catch
            {
                item = null;
            }

            if (item != null)
            {
                url = GetItemUrl(databaseName, itemId);
                if (string.IsNullOrEmpty(url))
                {
                    return(string.Empty);
                }
            }

            var filename = TempFolder.GetFilename("thumbnail.png");

            var htmlCapture = new HtmlCapture
            {
                Url      = url,
                FileName = filename
            };

            if (htmlCapture.Capture())
            {
                return(filename);
            }

            return(string.Empty);
        }
コード例 #10
0
        private string Upload([NotNull] string uploadedFile)
        {
            Debug.ArgumentNotNull(uploadedFile, nameof(uploadedFile));

            var tempFileName = TempFolder.GetFilename("package.zip");

            var fileName = FileUtil.MapPath(tempFileName);

            using (var source = new MemoryStream(System.Convert.FromBase64String(uploadedFile)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(fileName));

                using (var target = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    FileUtil.CopyStream(source, target);
                }
            }

            return(FileUtil.UnmapPath(fileName, false));
        }
コード例 #11
0
        /// <summary>
        /// Unpacks to database.
        ///
        /// </summary>
        private void UnpackToDatabase(List <S3MediaUploadResult> list)
        {
            Assert.ArgumentNotNull((object)list, "list");
            string str = FileUtil.MapPath(TempFolder.GetFilename("temp.zip"));

            this.File.SaveAs(str);
            try
            {
                using (ZipReader zipReader = new ZipReader(str))
                {
                    foreach (ZipEntry zipEntry in zipReader.Entries)
                    {
                        if (!zipEntry.IsDirectory)
                        {
                            S3MediaUploadResult S3MediaUploadResult = new S3MediaUploadResult();
                            list.Add(S3MediaUploadResult);
                            S3MediaUploadResult.Path           = FileUtil.MakePath(this.Folder, zipEntry.Name, '/');
                            S3MediaUploadResult.ValidMediaPath = MediaPathManager.ProposeValidMediaPath(S3MediaUploadResult.Path);
                            MediaCreatorOptions options = new MediaCreatorOptions()
                            {
                                Language     = this.Language,
                                Versioned    = this.Versioned,
                                KeepExisting = !this.Overwrite,
                                Destination  = S3MediaUploadResult.ValidMediaPath,
                                FileBased    = this.FileBased,
                                Database     = this.Database
                            };
                            options.Build(GetMediaCreatorOptionsArgs.UploadContext);
                            Stream stream = zipEntry.GetStream();
                            S3MediaUploadResult.Item = MediaManager.Creator.CreateFromStream(stream, S3MediaUploadResult.Path, options);
                        }
                    }
                }
            }
            finally
            {
                FileUtil.Delete(str);
            }
        }
コード例 #12
0
        private void UnpackToDatabase(HttpPostedFile originalFile, UploadArgs args, bool isFileBased)
        {
            string str = FileUtil.MapPath(TempFolder.GetFilename("temp.zip"));

            originalFile.SaveAs(str);

            try
            {
                using (ZipReader zipReader = new ZipReader(str))
                {
                    foreach (ZipEntry entry in zipReader.Entries)
                    {
                        if (!entry.IsDirectory)
                        {
                            UploadToDatabase(entry.Name, (MemoryStream)entry.GetStream(), args, isFileBased);
                        }
                    }
                }
            }
            finally
            {
                FileUtil.Delete(str);
            }
        }
コード例 #13
0
        protected string Build([NotNull] string itemList, [NotNull] string fileList, [NotNull] string packageName, [NotNull] string author, [NotNull] string version, [NotNull] string publisher, [NotNull] string license, [NotNull] string comment, [NotNull] string readme, [NotNull] string targetFileFolder)
        {
            Debug.ArgumentNotNull(itemList, nameof(itemList));
            Debug.ArgumentNotNull(fileList, nameof(fileList));
            Debug.ArgumentNotNull(packageName, nameof(packageName));
            Debug.ArgumentNotNull(author, nameof(author));
            Debug.ArgumentNotNull(version, nameof(version));
            Debug.ArgumentNotNull(publisher, nameof(publisher));
            Debug.ArgumentNotNull(license, nameof(license));
            Debug.ArgumentNotNull(comment, nameof(comment));
            Debug.ArgumentNotNull(readme, nameof(readme));
            Debug.ArgumentNotNull(targetFileFolder, nameof(targetFileFolder));

            var fileName = TempFolder.GetFilename("package.zip");

            var package = GetBuilder(fileName);

            package.PackageName      = packageName;
            package.Author           = author;
            package.Version          = version;
            package.Publisher        = publisher;
            package.License          = license;
            package.Comment          = comment;
            package.Readme           = readme;
            package.TargetFileFolder = targetFileFolder;

            foreach (var part in itemList.Split('|'))
            {
                if (string.IsNullOrEmpty(part))
                {
                    continue;
                }

                var tuple = part.Split(',');

                var database = Factory.GetDatabase(tuple[0]);
                if (database == null)
                {
                    continue;
                }

                var item = database.GetItem(tuple[1]);
                if (item != null)
                {
                    package.Items.Add(item);
                }
            }

            foreach (var part in fileList.Split('|'))
            {
                if (string.IsNullOrEmpty(part))
                {
                    continue;
                }

                if (FileUtil.Exists(part) || FileUtil.FolderExists(part))
                {
                    package.Files.Add(part);
                }
            }

            var result = package.Build();

            var unmappedFileName = FileUtil.UnmapPath(result, false);

            if (unmappedFileName.Contains(":"))
            {
                return(unmappedFileName);
            }

            return(WebUtil.GetServerUrl() + unmappedFileName);
        }