public IHttpActionResult PutScriptLayout(int id, ScriptLayout scriptLayout)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != scriptLayout.ScriptLayoutID)
            {
                return(BadRequest());
            }

            db.Entry(scriptLayout).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ScriptLayoutExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
		/// <summary>
		/// create a function call:
		/// functionName(arguments)
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="functionName"></param>
		/// <param name="arguments"></param>
        public JsCall(ScriptLayout layout, object functionName, JsArguments arguments)
			: base(layout)
		{
			FunctionName = functionName;

			Arguments = arguments;

		}
        public IHttpActionResult GetScriptLayout(int id)
        {
            ScriptLayout scriptLayout = db.ScriptLayouts.Find(id);

            if (scriptLayout == null)
            {
                return(NotFound());
            }

            return(Ok(scriptLayout));
        }
        public IHttpActionResult PostScriptLayout(ScriptLayout scriptLayout)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.ScriptLayouts.Add(scriptLayout);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = scriptLayout.ScriptLayoutID }, scriptLayout));
        }
        public IHttpActionResult DeleteScriptLayout(int id)
        {
            ScriptLayout scriptLayout = db.ScriptLayouts.Find(id);

            if (scriptLayout == null)
            {
                return(NotFound());
            }

            db.ScriptLayouts.Remove(scriptLayout);
            db.SaveChanges();

            return(Ok(scriptLayout));
        }
Exemple #6
0
        public string Render(Int32 id, ScreenViewer.Models.CriticalElements criticalelement, ControllerContext ContCont)
        {
            ScreenViewer.API.ScriptLayoutsController SC = new API.ScriptLayoutsController();
            var actionResult = SC.GetScriptLayout(Convert.ToInt32(id));
            var response     = actionResult as OkNegotiatedContentResult <ScriptLayout>;

            if (response != null)
            {
                ScriptLayout SL        = response.Content;
                string       qincluded = "";

                bool critItems = false;

                QuestionController QuestController = new QuestionController();
                QuestionLayout     questionLayout  = null;

                List <ScriptLayoutE> ScriptLayouts = new List <ScriptLayoutE>();

                foreach (ScriptLayoutDetail slitem in SL.ScriptLayoutDetails)
                {
                    ScriptLayoutE layout = new ScriptLayoutE();
                    string        aclass = "";
                    switch (slitem.ElementAlignment)
                    {
                    case "top-left":
                        aclass = "div_top text-left";
                        break;

                    case "top-center":
                        aclass = "div_top text-center";

                        break;

                    case "top-right":
                        aclass = "div_top text-right";

                        break;

                    case "middle-left":
                        aclass = "div_middle text-left";
                        break;

                    case "middle-center":
                        aclass = "div_middle text-center";

                        break;

                    case "middle-right":
                        aclass = "div_middle text-right";

                        break;

                    case "bottom-left":
                        aclass = "div_bottom text-left";

                        break;

                    case "bottom-center":
                        aclass = "div_bottom text-center";

                        break;

                    case "bottom-right":
                        aclass = "div_bottom text-right";

                        break;

                    default:
                        aclass = "div_top text-left";

                        break;
                    }


                    layout.Scriptlayoutdetail = slitem;
                    layout.AlignClass         = aclass;

                    if (slitem.ElementType == "Question")
                    {
                        qincluded = qincluded == "" ? slitem.ElementID.ToString() : qincluded + "," + slitem.ElementID.ToString();

                        if (criticalelement.CriticalItems)
                        {
                            if (criticalelement.CriticalQuestions.Contains(slitem.ElementID.ToString()))
                            {
                                layout.CriticalElement = true;
                            }
                        }
                    }
                    else if (slitem.ElementType == "OrderItem" && critItems)
                    {
                        layout.CriticalElement = true;
                    }
                    else
                    {
                        layout.CriticalElement = false;
                    }


                    switch (slitem.ElementType)
                    {
                    case "Question":

                        questionLayout = QuestController.RenderQuestionParts((decimal)layout.Scriptlayoutdetail.ElementID, layout.CriticalElement, ContCont);

                        questionLayout.QuestionHTML      = questionLayout.QuestionHTML.Replace("\r", "");
                        questionLayout.QuestionHTML      = questionLayout.QuestionHTML.Replace("\n", "");
                        questionLayout.QuestionHTML      = questionLayout.QuestionHTML.Replace(@"""", @"\""");
                        questionLayout.QuestionHTML      = questionLayout.QuestionHTML.Replace("</script>", string.Format("\" + {0} + \"", "unescape('%3C/script%3E')"));
                        questionLayout.QuestionLabelText = questionLayout.QuestionLabelText.Replace("\r", "");
                        questionLayout.QuestionLabelText = questionLayout.QuestionLabelText.Replace("\n", "");
                        questionLayout.QuestionLabelText = questionLayout.QuestionLabelText.Replace(@"""", @"\""");
                        layout.QuestionLayout            = questionLayout;
                        break;


                    case "TextHTML":
                        TextHTMLController THC = new TextHTMLController();
                        layout.TextHTMLLayout = THC.Render(Convert.ToInt32(layout.Scriptlayoutdetail.ElementID), ContCont);
                        layout.TextHTMLLayout = HttpUtility.HtmlDecode(layout.TextHTMLLayout);
                        layout.TextHTMLLayout = layout.TextHTMLLayout.Replace("\r", "");
                        layout.TextHTMLLayout = layout.TextHTMLLayout.Replace("\n", "");
                        layout.TextHTMLLayout = layout.TextHTMLLayout.Replace(@"""", @"\""");
                        layout.TextHTMLLayout = layout.TextHTMLLayout.Replace(@"\\", @"\");
                        layout.TextHTMLLayout = layout.TextHTMLLayout.Replace("</script>", string.Format("\" + {0} + \"", "unescape('%3C/script%3E')"));
                        layout.TextHTMLLayout = layout.TextHTMLLayout.Replace("'s", "&apos;s");
                        break;

                    case "Link":
                        LinkController LC = new LinkController();
                        layout.LinkLayout = LC.Render(Convert.ToInt32(layout.Scriptlayoutdetail.ElementID), ContCont);
                        layout.LinkLayout = layout.LinkLayout.Replace("\r", "");
                        layout.LinkLayout = layout.LinkLayout.Replace("\n", "");
                        layout.LinkLayout = layout.LinkLayout.Replace(@"""", @"\""");
                        layout.LinkLayout = layout.LinkLayout.Replace("</script>", string.Format("\" + {0} + \"", "unescape('%3C/script%3E')"));

                        break;
                    }

                    ScriptLayouts.Add(layout);
                }

                List <ScriptLayoutE> orderedLayout = ScriptLayouts.OrderBy(o => o.Scriptlayoutdetail.RowNumber).ThenBy(o => o.Scriptlayoutdetail.Sequence).ToList();

                ViewBag.QuestionList = qincluded;



                return(RenderHelper.RenderViewToString(ContCont, "~/Views/ScriptLayout/_ScriptLayout.cshtml", orderedLayout, ViewData));
            }
            else
            {
                return("");
            }
        }
		/// <summary>
		/// Create an empty item using a custom layout
		/// </summary>
		/// <param name="layout">override the default layout</param>
		public ScriptIndent(ScriptLayout layout) : base(layout) { }
		/// <summary>
		/// An item that lets you wrap objects before and/or after another item
		/// Useful to create effects like surrounding brackets
		/// </summary>
		/// <param name="layout">override the default layout</param>
		/// <param name="before">object to render before the item</param>
		/// <param name="item">the item to render</param>
		/// <param name="after">object to render after the item</param>
		/// <returns></returns>
		public static ScriptWrapper Wrapper(ScriptLayout layout, object before, IScriptItem item, object after)
		{
			return new ScriptWrapper(layout, before, item, after);
		}
		/// <summary>
		/// A collection of objects which will each be rendered on a new line
		/// </summary>
		/// <param name="layout">override the default layout</param>
		/// <param name="lines">collection of objects to render</param>
		/// <returns></returns>
		public static Script Script(ScriptLayout layout, params object[] lines)
		{
			return new Script(layout, lines);

		}
		/// <summary>
		/// Create a parameter list
		/// (param, param, param)
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="list"></param>
		public JsParameters(ScriptLayout layout, JsList list)
			: base(layout)
		{
			List = list;
		}
		/// <summary>
		/// Create an item using a custom layout from a collection of objects
		/// </summary>
		/// <param name="layout">override the default layout</param>
		/// <param name="lines">collection of objects</param>
		public ScriptLine(ScriptLayout layout, IEnumerable<object> lines) : base(layout, lines) { }
		/// <summary>
		/// Create an empty parameter list
		/// ()
		/// </summary>
		/// <param name="layout"></param>
		public JsParameters(ScriptLayout layout)
			: base(layout)
		{
			List = new JsList();
		}
		/// <summary>
		/// Renders function syntax:
		/// function(param, param) { scriptBlock } 
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="parameters"></param>
		/// <param name="scriptBlock"></param>
		/// <returns></returns>
		public static JsFunction Function(ScriptLayout layout, JsParameters parameters, JsBlock scriptBlock)
		{
			return new JsFunction(layout, parameters, scriptBlock);
		}
		/// <summary>
		/// Renders function call syntax:
		/// functionName(arg, arg) 
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="functionName"></param>
		/// <param name="args"></param>
		/// <returns></returns>
		public static JsCall Call(ScriptLayout layout, object functionName, params object[] args)
		{
			return new JsCall(layout, functionName, args);
		}
		/// <summary>
		/// Renders array syntax:
		/// [item, item, item]
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="list"></param>
		/// <returns></returns>
		public static JsArray Array(ScriptLayout layout, JsList list)
		{
			return new JsArray(layout, list);
		}
		/// <summary>
		/// Renders function syntax:
		/// function() { lines } 
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="lines"></param>
		/// <returns></returns>
		public static JsFunction Function(ScriptLayout layout, params object[] lines)
		{
			return new JsFunction(layout, lines);
		}
		/// <summary>
		/// Renders function syntax:
		/// function name(param, param) { lines } 
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="name"></param>
		/// <param name="parameters"></param>
		/// <param name="lines"></param>
		/// <returns></returns>
        public static JsFunction Function(ScriptLayout layout, object name, JsParameters parameters, params object[] lines)
		{
			return new JsFunction(layout, name, parameters, lines);

		}
		/// <summary>
		/// Renders function syntax:
		/// function() { scriptBlock } 
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="scriptBlock"></param>
		/// <returns></returns>
		public static JsFunction Function(ScriptLayout layout, JsBlock scriptBlock)
		{
			return new JsFunction(layout, scriptBlock);
		}
		/// <summary>
		/// Renders array syntax:
		/// [item, item, item]
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="list"></param>
		/// <returns></returns>
		public static JsArray Array(ScriptLayout layout, params object[] list)
		{
			return new JsArray(layout, list);
		}
		/// <summary>
		/// Create a parameter list
		/// (param, param, param)
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="items"></param>
		public JsParameters(ScriptLayout layout, params object[] items)
			: base(layout)
		{
			List = new JsList(items);
		}
		/// <summary>
		/// Renders function call syntax:
		/// functionName(arg, arg) 
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="functionName"></param>
		/// <param name="arguments"></param>
		/// <returns></returns>
        public static JsCall Call(ScriptLayout layout, object functionName, JsArguments arguments)
		{
			return new JsCall(layout, functionName, arguments);
		}
		/// <summary>
		/// Renders block syntax:
		/// { 
		///		line 
		///		line 
		///		line 
		/// }
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="lines"></param>
		/// <returns></returns>
		public static JsBlock Block(ScriptLayout layout, params object[] lines)
		{
			return new JsBlock(layout, lines);
		}
		/// <summary>
		/// Renders list syntax:
		/// item, item, item 
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="items"></param>
		/// <returns></returns>
		public static JsList List(ScriptLayout layout, params object[] items)
		{
			return new JsList(layout, items);
		}
		/// <summary>
		/// Renders statement syntax (concat items and add a semicolon):
		/// items; 
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="items"></param>
		/// <returns></returns>
		public static JsStatement Statement(ScriptLayout layout, params object[] items)
		{
			return new JsStatement(layout, items);
		}
		/// <summary>
		/// Create a parameter list
		/// (param, param, param)
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="items"></param>
		public JsParameters(ScriptLayout layout, IEnumerable<object> items)
			: base(layout)
		{
			List = new JsList(items);
		}
		/// <summary>
		/// Renders parameter syntax:
		/// (param, param, param)
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="parameters"></param>
		/// <returns></returns>
		public static JsParameters Parameters(ScriptLayout layout, params object[] parameters)
		{
			return new JsParameters(layout, parameters);
		}
		/// <summary>
		/// base the layout of the parameter list on our layout
		/// </summary>
		/// <param name="e"></param>
		protected override void OnLayoutChanged(LayoutChangedEventArgs e)
		{
			base.OnLayoutChanged(e);

			ScriptLayout layout = e.Layout;

			switch (layout)
			{
				case ScriptLayout.None:
					break;
				case ScriptLayout.NotAlreadyEstablished:
					break;
				case ScriptLayout.Default:
					break;
				case ScriptLayout.Inline:
					ListLayout =  ScriptLayout.Inline;
					break;
				case ScriptLayout.InlineBlock:
					ListLayout = ScriptLayout.Block;
					break;
				case ScriptLayout.Block:
					ListLayout = ScriptLayout.Block;
					break;
				default:
					break;
			}
		}
		/// <summary>
		/// Renders parameter syntax:
		/// (param, param, param)
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="parameters"></param>
		/// <returns></returns>
		public static JsParameters Parameters(ScriptLayout layout, JsList parameters)
		{
			return new JsParameters(layout, parameters);
		}
		/// <summary>
		/// Create an empty item using a custom layout
		/// </summary>
		/// <param name="layout">override the default layout</param>
		public ScriptLine(ScriptLayout layout) : base(layout) { }
		/// <summary>
		/// Renders argument syntax:
		/// (arg, arg, arg)
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="args"></param>
		/// <returns></returns>
		public static JsArguments Arguments(ScriptLayout layout, params object[] args)
		{
			return new JsArguments(layout, args);
		}
		/// <summary>
		/// Create an item using a custom layout from parameters
		/// </summary>
		/// <param name="layout">override the default layout</param>
		/// <param name="lines">set of paramters</param>
		public ScriptLine(ScriptLayout layout, params object[] lines) : base(layout, lines) { }
		/// <summary>
		/// Renders argument syntax:
		/// (arg, arg, arg)
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="args"></param>
		/// <returns></returns>
		public static JsArguments Arguments(ScriptLayout layout, JsList args)
		{
			return new JsArguments(layout, args);
		}
		/// <summary>
		/// Helper to try and set a layout for an item
		/// First checks if the sent object is an IScriptItem
		/// </summary>
		/// <param name="item">object to check</param>
		/// <param name="layout">preferred layout</param>
		public static void TrySetLayout(object item, ScriptLayout layout)
		{
			ScriptItem.ObjectTrySetLayout(item, layout);
		}
		/// <summary>
		/// Renders if syntax:
		/// if (condition) { trueItem }
		/// </summary>
		/// <param name="layout"></param>
		/// <param name="condition"></param>
		/// <param name="trueItem"></param>
		/// <returns></returns>
		public static JsIf If(ScriptLayout layout, object condition, object trueItem)
		{
			return new JsIf(layout, condition, trueItem);
		}
		/// <summary>
		/// A collection of objects which will each be rendered on a single line
		/// They will be concatinated together
		/// </summary>
		/// <param name="layout">override the default layout</param>
		/// <param name="parts">the objects to be concatinated</param>
		/// <returns></returns>
		public static ScriptLine Line(ScriptLayout layout, params object[] parts)
		{
			return new ScriptLine(layout, parts);
		}
Exemple #36
0
 public void Write(IWriter writer, StringIDSource stringIDs, int parameterCount, uint parameterAddress, ScriptLayout layout)
 {
     if (layout == ScriptLayout.HaloReach)
     {
         writer.WriteUInt32(stringIDs.FindOrAddStringID(Name).Value);
     }
     else
     {
         writer.WriteAscii(Name, 0x20);
     }
     writer.WriteInt16(ExecutionType);
     writer.WriteInt16(ReturnType);
     writer.WriteUInt32(RootExpressionIndex.Value);
     writer.WriteInt32(parameterCount);
     writer.WriteUInt32(parameterAddress);
     writer.WriteUInt32(0);
 }