00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 @require_once('config.inc.php');
00013 require_once('common.inc.php');
00014 require_once('html.inc.php');
00015 require_once('util.inc.php');
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 function page_clear_background_img($args)
00030 {
00031 if (!isset($args['page'])) {
00032 return response('Required argument "page" missing', 400);
00033 }
00034 if (!page_exists($args['page'])) {
00035 return response('Page '.quot($args['page']).' does not exist', 400);
00036 }
00037
00038 load_modules('glue');
00039 $obj = load_object(array('name'=>$args['page'].'.page'));
00040 if ($obj['#error']) {
00041
00042 return response(true);
00043 } else {
00044 $obj = $obj['#data'];
00045 }
00046
00047 if (!empty($obj['page-background-file'])) {
00048
00049 delete_upload(array('pagename'=>array_shift(expl('.', $args['page'])), 'file'=>$obj['page-background-file'], 'max_cnt'=>1));
00050
00051 return object_remove_attr(array('name'=>$obj['name'], 'attr'=>array('page-background-file', 'page-background-mime')));
00052 } else {
00053 return response(true);
00054 }
00055 }
00056
00057 register_service('page.clear_background_img', 'page_clear_background_img', array('auth'=>true));
00058
00059
00060 function page_delete_page($args)
00061 {
00062 $page = $args['page'];
00063
00064
00065 $obj = load_object(array('name'=>$page.'.page'));
00066 if ($obj['#error']) {
00067 return false;
00068 } else {
00069 $obj = $obj['#data'];
00070 }
00071
00072 if (!empty($obj['page-background-file'])) {
00073
00074 delete_upload(array('pagename'=>array_shift(expl('.', $page)), 'file'=>$obj['page-background-file'], 'max_cnt'=>1));
00075 return true;
00076 } else {
00077 return false;
00078 }
00079 }
00080
00081
00082 function page_has_reference($args)
00083 {
00084 $obj = $args['obj'];
00085 if (array_pop(expl('.', $obj['name'])) != 'page') {
00086 return false;
00087 }
00088
00089 if (!empty($obj['page-background-file']) && $obj['page-background-file'] == $args['file']) {
00090 return true;
00091 } else {
00092 return false;
00093 }
00094 }
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 function page_get_grid($args)
00105 {
00106 if (($s = @file_get_contents(CONTENT_DIR.'/grid')) !== false) {
00107 $a = expl(' ', $s);
00108 return response(array('x'=>intval($a[0]), 'y'=>intval($a[1])));
00109 } else {
00110 return response(array('x'=>PAGE_DEFAULT_GRID_X, 'y'=>PAGE_DEFAULT_GRID_Y));
00111 }
00112 }
00113
00114 register_service('page.get_grid', 'page_get_grid');
00115
00116
00117 function page_render_object($args)
00118 {
00119 $obj = $args['obj'];
00120 $a = expl('.', $obj['name']);
00121 if ($a[2] != 'page') {
00122 return false;
00123 }
00124
00125
00126 if (!empty($obj['page-background-attachment'])) {
00127 html_css('background-attachment', $obj['page-background-attachment']);
00128 }
00129
00130 if (!empty($obj['page-background-color'])) {
00131 html_css('background-color', $obj['page-background-color']);
00132 }
00133
00134 if (!empty($obj['page-background-file'])) {
00135 if (SHORT_URLS) {
00136 html_css('background-image', 'url('.base_url().htmlspecialchars(urlencode($obj['name']), ENT_NOQUOTES, 'UTF-8').')');
00137 } else {
00138 html_css('background-image', 'url('.base_url().'?'.htmlspecialchars(urlencode($obj['name']), ENT_NOQUOTES, 'UTF-8').')');
00139 }
00140 }
00141
00142 if (!empty($obj['page-background-image-position'])) {
00143 html_css('background-position', $obj['page-background-image-position']);
00144 }
00145
00146 if (isset($obj['page-title'])) {
00147 html_title($obj['page-title']);
00148 }
00149 }
00150
00151
00152 function page_render_page_early($args)
00153 {
00154 if ($args['edit']) {
00155 if (USE_MIN_FILES) {
00156 html_add_js(base_url().'modules/page/page-edit.min.js');
00157 } else {
00158 html_add_js(base_url().'modules/page/page-edit.js');
00159 }
00160 html_add_css(base_url().'modules/page/page-edit.css');
00161
00162
00163 $grid = page_get_grid(array());
00164 $grid = $grid['#data'];
00165 html_add_js_var('$.glue.conf.page.default_grid_x', $grid['x']);
00166 html_add_js_var('$.glue.conf.page.default_grid_y', $grid['y']);
00167
00168
00169 $guide = expl(' ', PAGE_GUIDES_X);
00170 for ($i=0; $i < count($guide); $i++) {
00171 $guide[$i] = intval(trim($guide[$i]));
00172 }
00173 html_add_js_var('$.glue.conf.page.guides_x', $guide);
00174 $guide = expl(' ', PAGE_GUIDES_Y);
00175 for ($i=0; $i < count($guide); $i++) {
00176 $guide[$i] = intval(trim($guide[$i]));
00177 }
00178 html_add_js_var('$.glue.conf.page.guides_y', $guide);
00179 }
00180
00181
00182 html_title(page_short($args['page']));
00183 }
00184
00185
00186 function page_serve_resource($args)
00187 {
00188 $obj = $args['obj'];
00189 if (array_pop(expl('.', $obj['name'])) != 'page') {
00190 return false;
00191 }
00192 $pn = array_shift(expl('.', $obj['name']));
00193
00194 if (!empty($obj['page-background-file'])) {
00195 $fn = CONTENT_DIR.'/'.$pn.'/shared/'.$obj['page-background-file'];
00196 if (isset($obj['page-background-mime'])) {
00197 $mime = $obj['page-background-mime'];
00198 } else {
00199 $mime = '';
00200 }
00201 serve_file($fn, false, $mime);
00202 }
00203
00204
00205 return false;
00206 }
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217 function page_set_grid($args)
00218 {
00219 if (($x = @intval($args['x'])) == 0) {
00220 return response('Required argument "x" missing or invalid', 400);
00221 }
00222 if (($y = @intval($args['y'])) == 0) {
00223 return response('Required argument "y" missing or invalid', 400);
00224 }
00225
00226 $m = umask(0111);
00227 if (!@file_put_contents(CONTENT_DIR.'/grid', $x.' '.$y)) {
00228 umask($m);
00229 return response('Error saving to global grid file', 500);
00230 } else {
00231 umask($m);
00232 return response(true);
00233 }
00234 }
00235
00236 register_service('page.set_grid', 'page_set_grid', array('auth'=>true));
00237
00238
00239 function page_upload($args)
00240 {
00241
00242 if (empty($args['preferred_module']) || $args['preferred_module'] != 'page') {
00243 return false;
00244 }
00245
00246 if (!in_array($args['mime'], array('image/jpeg', 'image/png', 'image/gif')) || ($args['mime'] == '' && !in_array(filext($args['file']), array('jpg', 'jpeg', 'png', 'gif')))) {
00247 return false;
00248 }
00249
00250
00251 $obj = load_object(array('name'=>$args['page'].'.page'));
00252 if (!$obj['#error']) {
00253 $obj = $obj['#data'];
00254 if (!empty($obj['page-background-file'])) {
00255 delete_upload(array('pagename'=>array_shift(expl('.', $args['page'])), 'file'=>$obj['page-background-file'], 'max_cnt'=>1));
00256 }
00257 }
00258
00259
00260 $obj = array();
00261 $obj['name'] = $args['page'].'.page';
00262 $obj['page-background-file'] = $args['file'];
00263 $obj['page-background-mime'] = $args['mime'];
00264
00265
00266 load_modules('glue');
00267 $ret = update_object($obj);
00268 if ($ret['#error']) {
00269 log_msg('page_upload: error updating page object: '.quot($ret['#data']));
00270 return false;
00271 } else {
00272
00273
00274 return true;
00275 }
00276 }