00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 @require_once('config.inc.php');
00013 require_once('html.inc.php');
00014 require_once('html_parse.inc.php');
00015 require_once('modules.inc.php');
00016
00017
00018
00019
00020
00021
00022
00023 function iframe_alter_save($args)
00024 {
00025 $elem = $args['elem'];
00026 $obj = &$args['obj'];
00027 if (!elem_has_class($elem, 'iframe')) {
00028 return false;
00029 }
00030
00031
00032 $childs = html_parse(elem_val($elem));
00033 $i = false;
00034 foreach ($childs as $c) {
00035 if (elem_tag($c) == 'iframe') {
00036 $i = $c;
00037 break;
00038 }
00039 }
00040 if (!$i) {
00041 log_msg('warn', 'iframe_alter_save: no iframe element found, inner html is '.var_dump_inl($childs));
00042 return false;
00043 }
00044
00045
00046 if (elem_attr($i, 'src') !== NULL) {
00047 $obj['iframe-url'] = elem_attr($i, 'src');
00048 } else {
00049 unset($obj['iframe-url']);
00050 }
00051
00052 if (elem_css($i, 'overflow') == 'hidden' || (elem_css($i, 'overflow-x') == 'hidden' && elem_css($i, 'overflow-y') == 'hidden')) {
00053 unset($obj['iframe-scroll']);
00054 } else {
00055 $obj['iframe-scroll'] = 'scroll';
00056 }
00057
00058 return true;
00059 }
00060
00061
00062 function iframe_alter_render_early($args)
00063 {
00064 $elem = &$args['elem'];
00065 $obj = $args['obj'];
00066 if (!elem_has_class($elem, 'iframe')) {
00067 return false;
00068 }
00069
00070
00071 $i = elem('iframe');
00072
00073
00074
00075
00076
00077 elem_attr($i, 'name', $obj['name']);
00078 if (!$args['edit']) {
00079
00080 elem_attr($i, 'sandbox', 'allow-forms allow-same-origin allow-scripts allow-top-navigation');
00081 }
00082 elem_css($i, 'background-color', 'transparent');
00083 elem_css($i, 'border-width', '0px');
00084 elem_css($i, 'height', '100%');
00085 elem_css($i, 'position', 'absolute');
00086 elem_css($i, 'width', '100%');
00087
00088 if (!empty($obj['iframe-url'])) {
00089 elem_attr($i, 'src', $obj['iframe-url']);
00090 } else {
00091 elem_attr($i, 'src', '');
00092 }
00093
00094 if (isset($obj['iframe-scroll']) && $obj['iframe-scroll'] == 'scroll') {
00095 elem_css($i, 'overflow', 'auto');
00096
00097
00098 elem_attr($i, 'scrolling', 'auto');
00099 } else {
00100 elem_css($i, 'overflow', 'hidden');
00101 elem_attr($i, 'scrolling', 'no');
00102 elem_attr($i, 'seamless', 'seamless');
00103 }
00104 elem_append($elem, $i);
00105 if ($args['edit']) {
00106
00107 $s = elem('div');
00108 elem_add_class($s, 'glue-iframe-shield');
00109 elem_add_class($s, 'glue-ui');
00110 elem_css($s, 'height', '100%');
00111 elem_css($s, 'position', 'absolute');
00112 elem_css($s, 'width', '100%');
00113 elem_attr($s, 'title', 'visitors will be able to interact with the webpage below');
00114 elem_append($elem, $s);
00115 }
00116
00117 return true;
00118 }
00119
00120
00121 function iframe_render_object($args)
00122 {
00123 $obj = $args['obj'];
00124 if (!isset($obj['type']) || $obj['type'] != 'iframe') {
00125 return false;
00126 }
00127
00128 $e = elem('div');
00129 elem_attr($e, 'id', $obj['name']);
00130 elem_add_class($e, 'iframe');
00131 elem_add_class($e, 'resizable');
00132 elem_add_class($e, 'object');
00133
00134
00135 invoke_hook_first('alter_render_early', 'iframe', array('obj'=>$obj, 'elem'=>&$e, 'edit'=>$args['edit']));
00136 $html = elem_finalize($e);
00137 invoke_hook_last('alter_render_late', 'iframe', array('obj'=>$obj, 'html'=>&$html, 'elem'=>$e, 'edit'=>$args['edit']));
00138
00139 return $html;
00140 }
00141
00142
00143 function iframe_render_page_early($args)
00144 {
00145 if ($args['edit']) {
00146 if (USE_MIN_FILES) {
00147 html_add_js(base_url().'modules/iframe/iframe-edit.min.js');
00148 } else {
00149 html_add_js(base_url().'modules/iframe/iframe-edit.js');
00150 }
00151 html_add_css(base_url().'modules/iframe/iframe-edit.css');
00152 }
00153 }
00154
00155
00156 function iframe_save_state($args)
00157 {
00158 $elem = $args['elem'];
00159 $obj = $args['obj'];
00160 if (array_shift(elem_classes($elem)) != 'iframe') {
00161 return false;
00162 }
00163
00164
00165 $obj['type'] = 'iframe';
00166 $obj['module'] = 'iframe';
00167
00168
00169 invoke_hook('alter_save', array('obj'=>&$obj, 'elem'=>$elem));
00170
00171 load_modules('glue');
00172 $ret = save_object($obj);
00173 if ($ret['#error']) {
00174 log_msg('error', 'iframe_save_state: save_object returned '.quot($ret['#data']));
00175 return false;
00176 } else {
00177 return true;
00178 }
00179 }