index.tpl 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. <!--
  2. @file vendor/phppe/Core/views/index.tpl
  3. @author bzt
  4. @date 1 Jan 2016
  5. @brief Self test view for PHPPE Core
  6. -->
  7. <style type='text/css' scoped>
  8. <!if !core.isInst("bootstrap")>
  9. @import url('http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css');
  10. <!/if>
  11. /* striped rows */
  12. DIV.panel DIV.row { padding:2px; }
  13. DIV.panel DIV.row:nth-of-type(even) { background:#f8f8f8; }
  14. /* scrollable dumps */
  15. DIV.dump PRE { overflow:auto;max-height:300px; }
  16. /* defaults for set selection boxes */
  17. .setsel_filters { text-align:right; }
  18. .setsel_box { border: inset 1px; height:300px; width:50%; float:left; box-sizing:border-box !important; clear:none;}
  19. .setsel_item { cursor:move; }
  20. .setsel_img { display: inline; float:left; }
  21. /* minimal design on wyswyg */
  22. .wyswyg { border: inset 1px; min-height:128px; }
  23. /* input with validation errors */
  24. .errinput { background:#fedede; }
  25. </style>
  26. <div class="toc"></div>
  27. <div class="container-fluid">
  28. <h1><!=L("PHPPE3 Self Test and Cheat Sheet Page")></h1>
  29. <p>
  30. <a href='http://validator.w3.org/check?uri=referer' target='_blank'>W3C HTML <!=L("Validator")></a> |
  31. <a href='http://jigsaw.w3.org/css-validator/check/referer' target='_blank'>W3C CSS <!=L("Validator")></a>
  32. </p>
  33. <div class="panel panel-primary">
  34. <div class="panel-heading"><b><!=L("Environment")></b></div>
  35. <div class="panel-body">
  36. <div class="row">
  37. <div class="col-sm-2" dir="ltr">Runlevel:</div>
  38. <div class="col-sm-4" dir="ltr">
  39. <!if core.runlevel==0><span class="text-success"><!/if>
  40. <!if core.runlevel==1><span class="text-info"><!/if>
  41. <!if core.runlevel==2><span class="text-warning"><!/if>
  42. <!if core.runlevel==3><span class="text-danger"><!/if><!=core.runlevel></span>
  43. </div>
  44. <div class="col-sm-6 text-muted small">
  45. <!if core.runlevel==0>Production mode. Normal<!/if>
  46. <!if core.runlevel==1>Verbose mode. Testing verbosity, check phppe/log<!/if>
  47. <!if core.runlevel==2>Developer mode. Extra verbose level, warnings on screen<!/if>
  48. <!if core.runlevel==3>Debug mode. Insane verbose level, warnings on screen<!/if>
  49. </div>
  50. </div>
  51. <div class="row">
  52. <div class="col-sm-2" dir="ltr">Data domain:</div>
  53. <div class="col-sm-4" dir="ltr">
  54. <!if core.lib('DS').name><span class="text-success"><!=core.lib('DS').name></span>
  55. <!else><span class="text-info">files</span><!/if>
  56. </div>
  57. <div class="col-sm-6 text-muted small">
  58. <!if core.lib('DS').name>Primary datasource<!else>Local files only in <i>data</i> directory<!/if>
  59. </div>
  60. </div>
  61. <div class="row">
  62. <div class="col-sm-2" dir="ltr">Edit mode:</div>
  63. <div class="col-sm-4" dir="ltr">
  64. <!if _SESSION['pe_e']><span class="text-danger"><!=L("Enabled")></span>
  65. <!else><span class="text-info"><!=L("Disabled")></span><!/if>
  66. </div>
  67. <div class="col-sm-6 text-muted small">
  68. Controls whether &lt;!VAR> tags hook "show" or "edit" method
  69. </div>
  70. </div>
  71. <div class="row">
  72. <div class="col-sm-2" dir="ltr">Configuration mode:</div>
  73. <div class="col-sm-4" dir="ltr">
  74. <!if _SESSION['pe_c']><span class="text-danger"><!=L("Enabled")></span>
  75. <!else><span class="text-info"><!=L("Disabled")></span><!/if>
  76. </div>
  77. <div class="col-sm-6 text-muted small">
  78. Controls whether &lt;!WIDGET> hooks "show" (widget face) or "edit" (configure) method
  79. </div>
  80. </div>
  81. <div class="row">
  82. <div class="col-sm-2" dir="ltr">Browser:</div>
  83. <div class="col-sm-4 text-info" dir="ltr">
  84. <!=client.agent>
  85. </div>
  86. <div class="col-sm-6 text-muted small">
  87. Your browser's type
  88. </div>
  89. </div>
  90. <div class="row">
  91. <div class="col-sm-2" dir="ltr">Client info:</div>
  92. <div class="col-sm-4 text-info" dir="ltr">
  93. <!if client.user><!=client.user><!else>(no http auth)<!/if>, <!=client.lang>, <!=client.tz>, <!=implode('x',client.screen)>
  94. </div>
  95. <div class="col-sm-6 text-muted small">
  96. Your authenticated user, browser's language, timezone and screen size
  97. </div>
  98. </div>
  99. <div class="row">
  100. <div class="col-sm-2" dir="ltr">Remote address:</div>
  101. <div class="col-sm-4 text-info" dir="ltr">
  102. <!=client.ip>
  103. </div>
  104. <div class="col-sm-6 text-muted small">
  105. Your real remote ip address (works if webserver is behind a http proxy or a load balancer)
  106. </div>
  107. </div>
  108. <div class="row">
  109. <div class="col-sm-2" dir="ltr">Session user:</div>
  110. <div class="col-sm-4 text-info" dir="ltr">
  111. <!if user.id><!=user.name> #<!=user.id><!else>none<!/if>
  112. </div>
  113. <div class="col-sm-6 text-muted small">
  114. For databaseless config, there's still an 'admin' user
  115. </div>
  116. </div>
  117. <div class="row">
  118. <div class="col-sm-6 text-muted small" dir="ltr">
  119. &lt;!-- MONITORING: <!if count(core.error())==0><!if core.runlevel==0><span class="text-success">OK</span><!else><span class="text-warning">WARNING</span><!/if><!else><span class="text-danger">ERROR</span><!/if>, page <s>0.0100</s> sec, db <s>0.000</s> sec, server <s>0.000</s> sec, mem <s>0.000</s> mb, mc -->
  120. </div>
  121. <div class="col-sm-6 text-muted small">
  122. There's a comment similar to the left just before the &lt;/body> tag.<br>OK - page was generated successfully in production mode.<br>WARNING - page was generated successfully, but in developer or debug mode, producing tons of logs.<br>ERROR - something bad happened (for example a validator returned false). The flag "mc" indicates that the page was generated from memory cache.
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. <div class="panel panel-primary">
  128. <div class="panel-heading"><b><!=L("Flow test")></b></div>
  129. <div class="panel-body">
  130. <div class="row">
  131. <div class="col-sm-2" dir="ltr">
  132. &lt;!foreach _SESSION>&lt;!=KEY>:&lt;!=VALUE>&lt;br>&lt;!/foreach>
  133. </div>
  134. <div class="col-sm-4">
  135. <!foreach _SESSION><!=KEY>:<!=VALUE><br><!/foreach>
  136. </div>
  137. <div class="col-sm-6 text-muted small">
  138. Example iteration on an array
  139. </div>
  140. </div>
  141. <div class="row">
  142. <div class="col-sm-2" dir="ltr">
  143. &lt;!foreach core.lib()><br>&nbsp;&nbsp;&lt;!=IDX>(&lt;!=ODD>)&lt;!=KEY>:&lt;!=name>&lt;br><br>&lt;!/foreach><br><br>
  144. </div>
  145. <div class="col-sm-4">
  146. <!foreach core.lib()><!=IDX>(<!=ODD>) <!=KEY>:<!=name><br><!/foreach>
  147. </div>
  148. <div class="col-sm-6 text-muted small">
  149. Example iteration on an array of objects
  150. </div>
  151. </div>
  152. <div class="row">
  153. <div class="col-sm-2" dir="ltr">
  154. &lt;!if core.noframe> fullscreen mode &lt;!else> normal mode &lt;!/if>
  155. </div>
  156. <div class="col-sm-4 text-info">
  157. <!if core.noframe>fullscreen mode<!else>normal mode<!/if>
  158. </div>
  159. <div class="col-sm-6 text-muted small">
  160. Expression dependent branches of output
  161. </div>
  162. </div>
  163. <div class="row">
  164. <div class="col-sm-2" dir="ltr">
  165. &lt;!include 404>
  166. </div>
  167. <div class="col-sm-4">
  168. <div style='border:1px dotted #000000;'><!include 404></div>
  169. </div>
  170. <div class="col-sm-6 text-muted small">
  171. Include another template
  172. </div>
  173. </div>
  174. <div class="row">
  175. <div class="col-sm-2" dir="ltr">
  176. &lt;!template><br>&lt;%=(&lt;!=core.now>+1)> &lt;/template>
  177. </div>
  178. <div class="col-sm-4">
  179. <!template><%=(<!=core.now>+1)><!/template>
  180. </div>
  181. <div class="col-sm-6 text-muted small">
  182. Generate template tags with templates, use &lt;% instead of &lt;! for second iteration
  183. </div>
  184. </div>
  185. </div>
  186. </div>
  187. <div class="panel panel-primary">
  188. <div class="panel-heading"><b><!=L("Output test")></b></div>
  189. <div class="panel-body">
  190. <div class="row">
  191. <div class="col-sm-2" dir="ltr">
  192. &lt;!=core.now>
  193. </div>
  194. <div class="col-sm-4">
  195. <!=core.now>
  196. </div>
  197. <div class="col-sm-6 text-muted small">
  198. Output the value of a property of an object. Should see current UNIX timestamp (seconds since 01/01/1970 00:00:00 UTC)
  199. </div>
  200. </div>
  201. <div class="row">
  202. <div class="col-sm-2" dir="ltr">
  203. &lt;!=(core.now/100+ (1-core.noframe))>
  204. </div>
  205. <div class="col-sm-4">
  206. <!=(core.now/100+(1-core.noframe))>
  207. </div>
  208. <div class="col-sm-6 text-muted small">
  209. Output the result of an expression (uses eval)
  210. </div>
  211. </div>
  212. <div class="row">
  213. <div class="col-sm-2" dir="ltr">
  214. &lt;!=sprintf('%012d', core.now/123)>
  215. </div>
  216. <div class="col-sm-4">
  217. <!=sprintf('%012d',core.now/123)>
  218. </div>
  219. <div class="col-sm-6 text-muted small">
  220. Output result with formatting using a function
  221. </div>
  222. </div>
  223. <div class="row">
  224. <div class="col-sm-2" dir="ltr">
  225. &lt;!date core.now>
  226. </div>
  227. <div class="col-sm-4">
  228. <!date core.now>
  229. </div>
  230. <div class="col-sm-6 text-muted small">
  231. Output timestamp in localized human readable format
  232. </div>
  233. </div>
  234. <div class="row">
  235. <div class="col-sm-2" dir="ltr">
  236. &lt;!time core.now>
  237. </div>
  238. <div class="col-sm-4">
  239. <!time core.now>
  240. </div>
  241. <div class="col-sm-6 text-muted small">
  242. Date and time. Your browser's timezone is: <!=_SESSION['pe_tz']>
  243. </div>
  244. </div>
  245. <div class="row">
  246. <div class="col-sm-2" dir="ltr">
  247. &lt;!L Cancel>
  248. </div>
  249. <div class="col-sm-4">
  250. <!L Cancel>
  251. </div>
  252. <div class="col-sm-6 text-muted small">
  253. Expected to be translated to your browser's language (<!=client.lang>)
  254. </div>
  255. </div>
  256. <div class="row">
  257. <div class="col-sm-2" dir="ltr">
  258. &lt;!L click_me>
  259. </div>
  260. <div class="col-sm-4">
  261. <!L click_me>
  262. </div>
  263. <div class="col-sm-6 text-muted small">
  264. Translate label. Should read "click me" (no translation specified)
  265. </div>
  266. </div>
  267. <div class="row">
  268. <div class="col-sm-2" dir="ltr">
  269. &lt;!=L("click me")>
  270. </div>
  271. <div class="col-sm-4">
  272. <!=L("click me")>
  273. </div>
  274. <div class="col-sm-6 text-muted small">
  275. Translate expression. Should read "click me" (no translation specified)
  276. </div>
  277. </div>
  278. <div class="row">
  279. <div class="col-sm-2" dir="ltr">
  280. &lt;!dump core.req2arr('obj')>
  281. </div>
  282. <div class="col-sm-4">
  283. <!dump core.req2arr('obj')>
  284. <!if !core.isBtn()><span class="text-warning">Press the "Save" button below the form to see it in action.</span><!/if>
  285. </div>
  286. <div class="col-sm-6 text-muted small">
  287. Built-in object dumper for debugging.
  288. </div>
  289. </div>
  290. </div>
  291. </div>
  292. <!if core.isError()>
  293. <div class='alert alert-danger'>
  294. <b><!=L("Form validation error!")></b><br/>
  295. <!foreach core.error()>
  296. <!foreach VALUE>
  297. &nbsp;&nbsp;<!=VALUE><br/>
  298. <!/foreach>
  299. <!/foreach>
  300. </div>
  301. <!/if>
  302. <!form obj>
  303. <div class="panel panel-primary">
  304. <div class="panel-heading"><b><!=L("Input test")></b></div>
  305. <div class="panel-body">
  306. <div class="row">
  307. <div class="col-sm-2" dir="ltr">
  308. &lt;!var text obj.var>
  309. </div>
  310. <div class="col-sm-4">
  311. <!var text obj.var>
  312. </div>
  313. <div class="col-sm-6 text-muted small">
  314. Acts as a field in edit mode, outputs the formatted value otherwise
  315. </div>
  316. </div>
  317. <div class="row">
  318. <div class="col-sm-2" dir="ltr">
  319. &lt;!widget text obj.widget>
  320. </div>
  321. <div class="col-sm-4">
  322. <!widget text obj.widget>
  323. </div>
  324. <div class="col-sm-6 text-muted small">
  325. Shows widget configuration (edit method) in conf mode, outputs widget face (show method) otherwise.
  326. </div>
  327. </div>
  328. <div class="row">
  329. <div class="col-sm-2" dir="ltr">
  330. &lt;!cms *text cms0>
  331. </div>
  332. <div class="col-sm-4">
  333. <!cms *text cms0>
  334. </div>
  335. <div class="col-sm-6 text-muted small">
  336. Shows a CMS edit icon when user is logged in has site administrator or web administrator access.
  337. Otherwise just displays the formatted value of the given property. Icon onclick will raise a modal.
  338. </div>
  339. </div>
  340. <div class="row">
  341. <div class="col-sm-2" dir="ltr">
  342. &lt;!cms(400,100) text cms1>
  343. </div>
  344. <div class="col-sm-4">
  345. <!cms(400,100) text(200,10) cms1>
  346. </div>
  347. <div class="col-sm-6 text-muted small">
  348. Specify dimensions of the modal, in case autodetection is not working for some reason. Without asterisk, the value is not shown.
  349. </div>
  350. </div>
  351. <div class="row">
  352. <div class="col-sm-2" dir="ltr">
  353. &lt;!cms(0,0,60) *text(200,2) cms2>
  354. </div>
  355. <div class="col-sm-4">
  356. <!cms(0,0,60) *text(200,2) cms2>
  357. </div>
  358. <div class="col-sm-6 text-muted small">
  359. Occupy percentage of screen.
  360. </div>
  361. </div>
  362. <div class="row">
  363. <div class="col-sm-2" dir="ltr">
  364. &lt;!cms *wyswyg cms3>
  365. </div>
  366. <div class="col-sm-4" style='background:#F0F0F0;'>
  367. <!cms *wyswyg cms3>
  368. </div>
  369. <div class="col-sm-6 text-muted small">
  370. AddOn to edit page parameter
  371. </div>
  372. </div>
  373. <div class="row">
  374. <div class="col-sm-2" dir="ltr">
  375. &lt;!field text obj.field>
  376. </div>
  377. <div class="col-sm-4">
  378. <!field text obj.field>
  379. </div>
  380. <div class="col-sm-6 text-muted small">
  381. Shows edit hook.
  382. </div>
  383. </div>
  384. <div class="row">
  385. <div class="col-sm-2" dir="ltr">
  386. &lt;!field label obj.text0 Some_string>
  387. </div>
  388. <div class="col-sm-4">
  389. <!field label obj.text0 Some_string>
  390. </div>
  391. <div class="col-sm-6 text-muted small">
  392. Shows a translated label for a field.
  393. </div>
  394. </div>
  395. <div class="row">
  396. <div class="col-sm-2" dir="ltr">
  397. &lt;!field *text obj.text0>
  398. </div>
  399. <div class="col-sm-4">
  400. <!field *text obj.text0>
  401. </div>
  402. <div class="col-sm-6 text-muted small">
  403. A manadatory field.
  404. </div>
  405. </div>
  406. <div class="row">
  407. <div class="col-sm-2" dir="ltr">
  408. &lt;!field text(<span title='maxlength'>32</span>) obj.text1 - - - search>
  409. </div>
  410. <div class="col-sm-4">
  411. <!field text(32) obj.text1 - - - Search>
  412. </div>
  413. <div class="col-sm-6 text-muted small">
  414. Text field with placeholder that accepts input up to 32 characters.
  415. </div>
  416. </div>
  417. <div class="row">
  418. <div class="col-sm-2" dir="ltr">
  419. &lt;!field text(<span title='maxlength'>80</span>,<span title='rows'>2</span>) obj.text2>
  420. </div>
  421. <div class="col-sm-4">
  422. <!field text(80,2) obj.text2>
  423. </div>
  424. <div class="col-sm-6 text-muted small">
  425. You don&acute;t have to know about textarea, just add the number of rows you want
  426. </div>
  427. </div>
  428. <div class="row">
  429. <div class="col-sm-2" dir="ltr">
  430. &lt;!field pass obj.pass - Password>
  431. </div>
  432. <div class="col-sm-4">
  433. <!field pass obj.pass - Password>
  434. </div>
  435. <div class="col-sm-6 text-muted small">
  436. Password input field
  437. </div>
  438. </div>
  439. <div class="row">
  440. <div class="col-sm-2" dir="ltr">
  441. &lt;!field select obj.select0 <span title='list values'>core.lib()</span>>
  442. </div>
  443. <div class="col-sm-4">
  444. <!field select obj.select0 core.lib()>
  445. </div>
  446. <div class="col-sm-6 text-muted small">
  447. An option list feeded by a function
  448. </div>
  449. </div>
  450. <div class="row">
  451. <div class="col-sm-2" dir="ltr">
  452. &lt;!field select(<span title='size'>3</span>,<span title='is multiple'>true</span>) obj.select1 <span title='list values'>_SERVER</span>>
  453. </div>
  454. <div class="col-sm-4">
  455. <!field select(3,true) obj.select1 _SERVER>
  456. </div>
  457. <div class="col-sm-6 text-muted small">
  458. Option list with more rows and multiple select options returning an array
  459. </div>
  460. </div>
  461. <div class="row">
  462. <div class="col-sm-2" dir="ltr">
  463. &lt;!field phone obj.phone>
  464. </div>
  465. <div class="col-sm-4">
  466. <!field phone obj.phone>
  467. </div>
  468. <div class="col-sm-6 text-muted small">
  469. Phone number with input validation
  470. </div>
  471. </div>
  472. <div class="row">
  473. <div class="col-sm-2" dir="ltr">
  474. &lt;!field email obj.email>
  475. </div>
  476. <div class="col-sm-4">
  477. <!field email obj.email>
  478. </div>
  479. <div class="col-sm-6 text-muted small">
  480. Email address with on blur validation
  481. </div>
  482. </div>
  483. <div class="row">
  484. <div class="col-sm-2" dir="ltr">
  485. &lt;div class="checkbox"><br>
  486. &lt;!field *check obj.field10 <span title='multilang label'>I_accept_the_terms</span>><br>
  487. &lt;/div>
  488. </div>
  489. <div class="col-sm-4">
  490. <div class="checkbox"><!field *check obj.check I_accept_the_terms></div>
  491. </div>
  492. <div class="col-sm-6 text-muted small">
  493. Mandatory check button with translated label
  494. </div>
  495. </div>
  496. <div class="row">
  497. <div class="col-sm-2" dir="ltr">
  498. &lt;!field radio(<span title='numeric value'>1</span>) obj.radio0 <span title='multilang label'>one</span>><br>&lt;!field radio(<span title='numeric value'>2</span>) obj.radio0 <span title='multilang label'>two</span>>
  499. </div>
  500. <div class="col-sm-4">
  501. <!field radio(1) obj.radio0 one> <!field radio(2) obj.radio0 two>
  502. </div>
  503. <div class="col-sm-6 text-muted small">
  504. Note the automatic clickable labels
  505. </div>
  506. </div>
  507. <div class="row">
  508. <div class="col-sm-2" dir="ltr">
  509. &lt;!field radio(<span title='string value'>'one'</span>) obj.radio1 <span title='multilang label'>one</span>><br>&lt;!field radio(<span title='string value'>'two'</span>) obj.radio1 <span title='multilang label'>two</span>>
  510. </div>
  511. <div class="col-sm-4">
  512. <!field radio('one') obj.field12 one> <!field radio('two') obj.field12 two>
  513. </div>
  514. <div class="col-sm-6 text-muted small">
  515. Similar, but return strings
  516. </div>
  517. </div>
  518. <div class="row">
  519. <div class="col-sm-2" dir="ltr">
  520. &lt;!field num obj.num0>
  521. </div>
  522. <div class="col-sm-4">
  523. <!field num obj.num0>
  524. </div>
  525. <div class="col-sm-6 text-muted small">
  526. Decimal number input
  527. </div>
  528. </div>
  529. <div class="row">
  530. <div class="col-sm-2" dir="ltr">
  531. &lt;!field num obj.num1(100,9000)>
  532. </div>
  533. <div class="col-sm-4">
  534. <!field num(100,9000) obj.num1>
  535. </div>
  536. <div class="col-sm-6 text-muted small">
  537. Number input with bound check and correction
  538. </div>
  539. </div>
  540. <div class="row">
  541. <div class="col-sm-2" dir="ltr">
  542. &lt;!field file obj.file>
  543. </div>
  544. <div class="col-sm-4">
  545. <!field file obj.file>
  546. </div>
  547. <div class="col-sm-6 text-muted small">
  548. File upload
  549. </div>
  550. </div>
  551. <div class="row">
  552. <div class="col-sm-2" dir="ltr">
  553. &lt;!field color obj.color>
  554. </div>
  555. <div class="col-sm-4">
  556. <!field color obj.color>
  557. </div>
  558. <div class="col-sm-6 text-muted small">
  559. Color picker
  560. </div>
  561. </div>
  562. <div class="row">
  563. <div class="col-sm-2" dir="ltr">
  564. &lt;!field date obj.datetime1>
  565. </div>
  566. <div class="col-sm-4">
  567. <!field date obj.datetime1>
  568. </div>
  569. <div class="col-sm-6 text-muted small">
  570. Date picker
  571. </div>
  572. </div>
  573. <div class="row">
  574. <div class="col-sm-2" dir="ltr">
  575. &lt;!field time obj.datetime2>
  576. </div>
  577. <div class="col-sm-4">
  578. <!field time obj.datetime2>
  579. </div>
  580. <div class="col-sm-6 text-muted small">
  581. Date and time picker
  582. </div>
  583. </div>
  584. <div class="row">
  585. <div class="col-sm-2" dir="ltr">
  586. &lt;!field something obj.fieldX>
  587. </div>
  588. <div class="col-sm-4">
  589. <!field something obj.fieldX>
  590. </div>
  591. <div class="col-sm-6 text-muted small">
  592. A warning shown if no AddOn found for the specified field.
  593. </div>
  594. </div>
  595. <div class="row">
  596. <div class="col-sm-2" dir="ltr">
  597. &lt;!field update> &lt;!field update Save>
  598. </div>
  599. <div class="col-sm-4">
  600. <!field update> <!field update Save>
  601. </div>
  602. <div class="col-sm-6 text-muted small">
  603. Form post with more buttons
  604. </div>
  605. </div>
  606. <div class="row">
  607. <div class="col-sm-2" dir="ltr">
  608. &lt;!field button>
  609. </div>
  610. <div class="col-sm-4">
  611. <!field button>
  612. </div>
  613. <div class="col-sm-6 text-muted small">
  614. HTML5 button with javascript handler
  615. </div>
  616. </div>
  617. </div>
  618. </div>
  619. <div class="panel panel-primary">
  620. <div class="panel-heading"><b><!=L("Library test")></b></div>
  621. <div class="panel-body">
  622. <div class="row">
  623. <div class="col-sm-2" dir="ltr">
  624. &lt;!field setsel(0,0,'','%KEY%') obj.setsel core.lib()>
  625. </div>
  626. <div class="col-sm-6">
  627. <!field setsel(0,0,'','%KEY%') obj.setsel core.lib()>
  628. </div>
  629. <div class="col-sm-4 text-muted small">
  630. Select multiple values from a set. Drag'n'drop elements and reaarange them as you wish.
  631. </div>
  632. </div>
  633. <div class="row">
  634. <div class="col-sm-2" dir="ltr">
  635. &lt;!field imglist obj.imglist crousel>
  636. </div>
  637. <div class="col-sm-6">
  638. <!field imglist obj.imglist crousel>
  639. </div>
  640. <div class="col-sm-4 text-muted small">
  641. Select images for crousel, rearrange them as you like.
  642. <!cms imglist(128) crousel>Single image selection also available.<!cms img(128) picture>
  643. </div>
  644. </div>
  645. <div class="row">
  646. <div class="col-sm-2" dir="ltr">
  647. &lt;!field doclist obj.doclist legal>
  648. </div>
  649. <div class="col-sm-6">
  650. <!field doclist obj.doclist legal>
  651. </div>
  652. <div class="col-sm-4 text-muted small">
  653. Select documents for attachments, rearrange them as you like.
  654. <!cms doclist legal>Single document selection also available.<!cms doc attach>
  655. </div>
  656. </div>
  657. <div class="row">
  658. <div class="col-sm-2" dir="ltr">
  659. &lt;!field wyswyg obj.wyswyg>
  660. </div>
  661. <div class="col-sm-6">
  662. <!field wyswyg obj.wyswyg>
  663. </div>
  664. <div class="col-sm-4 text-muted small">
  665. What You See is What You Get html editor
  666. </div>
  667. </div>
  668. <div class="row">
  669. <div class="col-sm-2" dir="ltr">
  670. </div>
  671. <div class="col-sm-4">
  672. </div>
  673. <div class="col-sm-6 text-muted small">
  674. </div>
  675. </div>
  676. </div>
  677. </div>
  678. </form>
  679. <div class="panel panel-primary">
  680. <div class="panel-heading"><b><!=L("Environment dump")></b></div>
  681. <div class="panel-body">
  682. <div class="row">
  683. <div class="col-lg-6">
  684. <!dump _SERVER>
  685. </div>
  686. <div class="col-lg-6">
  687. <!dump _SESSION>
  688. </div>
  689. </div>
  690. <div class="row">
  691. <div class="col-lg-6">
  692. <!dump core>
  693. </div>
  694. <div class="col-lg-6">
  695. <!dump array_reverse(get_declared_classes())>
  696. </div>
  697. </div>
  698. </div>
  699. </div>
  700. <!--
  701. Useful translations, not used by the Core itself, but most likely many Extensions will.
  702. These are so that lang utility can detect them when parsing Core.
  703. Languages
  704. <!L en><!L hu><!L ch><!L fr><!L ru><!L de><!L es><!L he><!L ar>
  705. Date stuff
  706. <!L dateformat><!L yesterday><!L today><!L tomorrow>
  707. <!L month01><!L month02><!L month03><!L month04><!L month05><!L month06><!L month07><!L month08><!L month09><!L month10><!L month11><!L month12>
  708. <!L dayfirst><!L day0><!L day1><!L day2><!L day3><!L day4><!L day5><!L day6>
  709. <!L sec><!L secs><!L min><!L mins><!L hour><!L hours><!L day><!L days>
  710. Default values for built-ins and phrases
  711. <!L Users><!L Login><!L Cache><!L Image><!L Help><!L Press me><!L Okay><!L Cancel><!L Name><!L Date><!L Time><!L Address><!L Group>
  712. Actions
  713. <!L Save><!L Delete><!L Update><!L Upload><!L Help><!L Yes><!L No>
  714. Selections
  715. <!L Any><!L Empty><!L All><!L None><!L Other><!L true><!L false>
  716. Numbers
  717. <!L zero><!L one><!L two><!L three><!L four><!L five><!L six><!L seven><!L eight><!L nine><!L ten><!L eleven><!L twelve>
  718. Validations
  719. <!L Bad arguments> <!L failed to upload file.><!L not a valid password! [a-zA-Z0-9]*6><!L not enough!><!L too much!><!L invalid phone number><!L invalid email address><!L bad date>
  720. -->
  721. <br><br>
  722. </div>