PageRenderTime 49ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/sandbox/editor/frame.php

http://github.com/yui/yui3
PHP | 243 lines | 183 code | 29 blank | 31 comment | 1 complexity | 6c5e5994ff35bb4fc4c8165a79770805 MD5 | raw file
Possible License(s): MIT, Apache-2.0
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <title>YUI: Editor</title>
  5. <style type="text/css" media="screen">
  6. p, h2 {
  7. margin: 1em;
  8. }
  9. #test, #test2, #test3, #test4 {
  10. height: 300px;
  11. width: 300px;
  12. border: 3px solid red;
  13. margin: 1em;
  14. position: absolute;
  15. top: 100px;
  16. left: 100px;
  17. }
  18. #test2 {
  19. top: 200px;
  20. left: 550px;
  21. }
  22. #test3 {
  23. left: 950px;
  24. }
  25. #test4 {
  26. top: 500px;
  27. left: 250px;
  28. }
  29. #stub {
  30. display: none;
  31. }
  32. #arrow {
  33. position: absolute;
  34. display: none;
  35. height: 16px;
  36. width: 16px;
  37. background-image: url(arrow.png);
  38. }
  39. #out {
  40. position: absolute;
  41. top: 5px;
  42. right: 5px;
  43. width: 200px;
  44. border: 1px solid black;
  45. font-size: 10px;
  46. }
  47. #out p {
  48. margin: 0;
  49. }
  50. </style>
  51. </head>
  52. <body class="yui-skin-sam">
  53. <div id="out"></div>
  54. <div id="test">Click me to render the Frame</div>
  55. <div id="test2"></div>
  56. <div id="test3"></div>
  57. <div id="test4"></div>
  58. <div id="arrow"></div>
  59. <div id="stub">
  60. <?php
  61. $count = ($_GET['count']) ? $_GET['count'] : 2;
  62. foreach (range(0, $count) as $num) {
  63. $str .= <<<END
  64. <strong>Action</strong><br>
  65. <a href="http://yuilibrary.com/">Click Me</a><br>
  66. <ul>
  67. <li>Testing</li>
  68. <li dir="ltr">Testing</li>
  69. <li>Testing</li>
  70. </ul>
  71. <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse posuere pellentesque interdum.</p>
  72. <p>Quisque vel quam sapien. Aliquam quis ante libero. In lectus ipsum, eleifend ut fringilla sit amet, vehicula ac nisi.</p>
  73. <p>Phasellus malesuada consequat nunc, in pharetra sapien lobortis in. Maecenas in arcu vestibulum risus tristique tincidunt.</p>
  74. <p>Ut sem dui, pulvinar nec posuere a, lobortis a ipsum. Cras ut tellus in odio vehicula sagittis.</p>
  75. <p>Sed erat odio, scelerisque vel suscipit ac, semper eu risus. Proin vel adipiscing elit.</p>
  76. END;
  77. }
  78. echo($str);
  79. ?>
  80. </div>
  81. <script type="text/javascript" src="../../build/yui/yui-debug.js?bust=<?php echo(mktime()); ?>"></script>
  82. <script type="text/javascript" src="js/frame.js?bust=<?php echo(mktime()); ?>"></script>
  83. <script type="text/javascript">
  84. var yConfig = {
  85. debug: true,
  86. //base: '../../build/',
  87. filter: 'DEBUG',
  88. allowRollup: false,
  89. logExclude: {
  90. 'yui': true,
  91. 'event': true,
  92. base: true,
  93. attribute: true,
  94. augment: true,
  95. get: true,
  96. loader: true,
  97. Selector: true
  98. },
  99. throwFail: true
  100. };
  101. //YUI(yConfig).use('node', 'selector-css3', 'base', 'iframe', 'substitute', 'anim', 'dd', function(Y) {
  102. YUI(yConfig).use('node', 'selector-css3', 'base', 'frame', 'substitute', function(Y) {
  103. //console.log(Y, Y.id);
  104. var out = function(str) {
  105. Y.one('#out').prepend('<p>' + str + '</p>');
  106. };
  107. iframe = new Y.Frame({
  108. designMode: true,
  109. content: Y.one('#stub').get('innerHTML'),
  110. use: ['node','selector-css3', 'dd-drag', 'dd-ddm']
  111. });
  112. iframe.after('ready', function() {
  113. this.set('content', 'My <strong>new</strong> HTML');
  114. //console.info('After ready iframe #1');
  115. var Y = this.getInstance();
  116. Y.log(Y.DOM.IE, 'warn', 'DOM-IE');
  117. //Y.one('doc').set('designMode', 'On');
  118. Y.one('strong').set('innerHTML', 'Drag Me');
  119. out('frame1: ' + Y.all('p'));
  120. out('frame1: ' + Y.all('strong'));
  121. if (Y.DD) {
  122. //Y.one('strong').setStyle('position', 'relative').setXY([50, 50]);
  123. var dd = new Y.DD.Drag({ node: 'strong' });
  124. }
  125. this.delegate('click', function(e) {
  126. Y.all('p').setStyle('border', 'none');
  127. e.currentTarget.setStyle('border', '1px solid red');
  128. //console.log('iframe1 delegate', arguments);
  129. }, 'p');
  130. });
  131. //iframe.on('contentready', console.log);
  132. iframe.on('click', function(e) {
  133. //console.log(e.type, e);
  134. Y.one('#arrow').setStyle('display', 'block').setXY([e.frameX - 8, e.frameY - 20]);
  135. e.halt();
  136. });
  137. iframe.on('contextmenu', function(e) {
  138. //console.log(e.type, e);
  139. e.preventDefault();
  140. //e.halt();
  141. });
  142. Y.on('click', function(e) {
  143. //console.log('test one: ', e.target);
  144. e.target.set('innerHTML', '');
  145. iframe.render(e.target);
  146. }, '#test');
  147. var iframe2 = new Y.Frame({
  148. container: '#test2',
  149. dir: 'rtl',
  150. basehref: 'http://foo.com/assets/',
  151. content: Y.one('#stub').get('innerHTML'),
  152. use: ['node','selector-css3', 'anim']
  153. }).render();
  154. iframe2.after('ready', function() {
  155. //console.info('After ready iframe #2');
  156. var Y = this.getInstance();
  157. out('frame2: ' + Y.all('p'));
  158. out('frame2: ' + Y.all('strong'));
  159. //Y.one('doc').set('designMode', 'On');
  160. Y.one('strong').set('innerHTML', 'Click Me for Animation').on('click', function() {
  161. new Y.Anim({
  162. node: 'strong',
  163. to: {
  164. opacity: 0
  165. }
  166. }).run();
  167. });
  168. });
  169. iframe2.on('click', function(e) {
  170. //console.log(e);
  171. Y.one('#arrow').setStyle('display', 'block').setXY([e.frameX - 8, e.frameY - 20]);
  172. });
  173. Y.on('click', function(e) {
  174. //console.log('test one: ', e.target);
  175. e.target.set('innerHTML', '');
  176. iframe3.render(e.target);
  177. }, '#test3');
  178. var iframe3 = new Y.Frame({
  179. container: '#test3',
  180. //src: 'local.htm',
  181. content: Y.one('#stub').get('innerHTML'),
  182. use: ['node','selector-css3', 'anim']
  183. }).render();
  184. iframe3.after('ready', function() {
  185. //console.info('After ready iframe #2');
  186. var Y = this.getInstance();
  187. out('frame3: ' + Y.all('p'));
  188. out('frame3: ' + Y.all('strong'));
  189. //Y.one('doc').set('designMode', 'On');
  190. Y.one('strong').set('innerHTML', 'Click Me for Animation').on('click', function() {
  191. new Y.Anim({
  192. node: 'strong',
  193. to: {
  194. opacity: 0
  195. }
  196. }).run();
  197. });
  198. });
  199. iframe3.on('click', function(e) {
  200. //console.log(e);
  201. Y.one('#arrow').setStyle('display', 'block').setXY([e.frameX - 8, e.frameY - 20]);
  202. });
  203. var iframe4 = new Y.Frame({
  204. container: '#test4',
  205. src: 'local.htm',
  206. //content: Y.one('#stub').get('innerHTML'),
  207. use: ['node','selector-css3', 'anim']
  208. }).render();
  209. //console.log(iframe.get('id'));
  210. //console.log(iframe2.get('id'));
  211. });
  212. </script>
  213. </body>
  214. </html>