Advertisement
Guest User

Untitled

a guest
Feb 12th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. int GetIspId(const mgr_xml::XmlNode &) {
  2.   static int cnt = 0;
  3.   return ++cnt;
  4. }
  5.  
  6. struct eAdditionOrderParam : Event {
  7.   eAdditionOrderParam()
  8.       : Event("addition.order.param", "addition_dropdown_2") {}
  9.  
  10.   void BeforeExecute(Session &ses) const override {
  11.     // комментируем if ниже -- элементы дублируются
  12.     if (!ses.xml.GetNode("//slist[@name='item']")) {
  13.       ses.NewSelect("item");
  14.       auto soft = InternalCall(ses, "soft");
  15.       for (auto item : soft.GetNodes("//elem")) {
  16.         ses.AddChildNode("val", item.FindNode("name").Str())
  17.             .SetProp("key", GetIspId(item));
  18.       }
  19.     }
  20.   }
  21.  
  22.   void AfterExecute(Session &ses) const override {
  23.     // Комментируем if ниже -- появляется два select.
  24.     if (!ses.xml.GetNode("//metadata/form/field[@name='item']/select")) {
  25.       auto item_field = ses.xml.GetNode("//metadata/form/field[@name='item']");
  26.       if (item_field) {
  27.         item_field.FindNode("input").Unlink();
  28.         item_field.AppendChild("select").SetProp("name", "item");
  29.       }
  30.     }
  31.   }
  32. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement