/// <summary>
        /// Prepares the operation.
        /// </summary>
        /// <param name="context">The context.</param>
        public override void prepareOperation(IRenderExecutionContext context)
        {
            base.prepareOperation(context);

            context.data.add(templateFieldBasic.root_relpath, "");

            if (isDataFieldMode)
            {
                context.data.add(output_datafield, "");
            }

            if (!isDataFieldMode)
            {
                PropertyCollection pc = new PropertyCollection();
                pc.AppendData(context.data, existingDataMode.overwriteExisting);

                //  pc.add(templateFieldBasic.root_relpath,
                //pc.AppendData(dict[composer.path], existingDataMode.overwriteExisting);

                pc.add(templateFieldBasic.page_title, name);
                pc.add(templateFieldBasic.page_desc, description);

                pc.add(reportOutputDomainEnum.includes, "");
                pc.add(reportOutputDomainEnum.localdirectory, "");
                pc.add(reportOutputDomainEnum.logs, "");

                string        filepath = outputpath.toPath(context.directoryRoot.FullName, context.data);
                string        dirpath  = Path.GetDirectoryName(filepath);
                DirectoryInfo dirinfo  = new DirectoryInfo(dirpath);

                string rootrel = dirinfo.getRelativePathToParent(context.directoryRoot).getWebPathBackslashFormat();
                if (rootrel == "/")
                {
                    rootrel = "";
                }

                pc.add(templateFieldBasic.root_relpath, rootrel);

                string output = template.applyToContent(false, pc);

                if (templateOutput == null)
                {
                    context.saveFileOutput(output, filepath, context.scope.path, description, name);
                }
                else
                {
                    pc.add(templateFieldSubcontent.main, output);

                    output = templateOutput.template.applyToContent(false, pc);

                    filepath = outputpath.toPathWithExtension(context.directoryRoot.FullName, templateOutput.format.getDefaultExtension());
                    context.saveFileOutput(output, filepath, context.scope.path, description, name);

                    //FileInfo fi = templateOutput.saveOutput(output, context.data, filepath);
                    //context.regFileOutput(fi.FullName, context.scope.path, description, name);
                }
            }
            else
            {
                context.log(name + " :: data field application the item: " + GetType().Name);
            }
        }