some fixes fore movable apps

This commit is contained in:
Georg Ehrke 2012-04-26 14:52:55 +02:00
parent b75f680b8e
commit 3f64eb25ab
10 changed files with 67 additions and 49 deletions

View File

@ -20,7 +20,7 @@
<div id="firstrun" style="display: none;"> <div id="firstrun" style="display: none;">
<?php <?php
echo $l->t('You have no bookmarks'); echo $l->t('You have no bookmarks');
require_once('bookmarklet.php'); require_once(OC::$APPSROOT . '/apps/bookmarks/templates/bookmarklet.php');
createBookmarklet(); createBookmarklet();
?> ?>
</div> </div>

View File

@ -20,7 +20,7 @@
#new>ul>li>p { cursor:pointer; } #new>ul>li>p { cursor:pointer; }
#new>ul>li>input { padding:0.3em; margin:-0.3em; } #new>ul>li>input { padding:0.3em; margin:-0.3em; }
#file_newfolder_name { background-image:url('../../../core/img/places/folder.svg'); font-weight:normal; width:7em; } #file_newfolder_name { background-image:url('%webroot%/core/img/places/folder.svg'); font-weight:normal; width:7em; }
.file_upload_start, .file_upload_filename { font-size:1em; } .file_upload_start, .file_upload_filename { font-size:1em; }
#file_newfolder_submit, #file_upload_submit { width:3em; } #file_newfolder_submit, #file_upload_submit { width:3em; }
.file_upload_target { display:none; } .file_upload_target { display:none; }
@ -81,7 +81,7 @@ a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; }
.selectedActions a img { position:relative; top:.3em; } .selectedActions a img { position:relative; top:.3em; }
/* add breadcrumb divider to the File item in navigation panel */ /* add breadcrumb divider to the File item in navigation panel */
#navigation>ul>li:first-child { background:url('../../../core/img/breadcrumb-start.svg') no-repeat 12.5em 0px; width:12.5em; padding-right:1em; position:fixed; } #navigation>ul>li:first-child { background:url('%webroot%/core/img/breadcrumb-start.svg') no-repeat 12.5em 0px; width:12.5em; padding-right:1em; position:fixed; }
#navigation>ul>li:first-child+li { padding-top:2.9em; } #navigation>ul>li:first-child+li { padding-top:2.9em; }
#scanning-message{ top:40%; left:40%; position:absolute; display:none } #scanning-message{ top:40%; left:40%; position:absolute; display:none }

View File

@ -35,7 +35,7 @@
left: 0; left: 0;
width: 40px; width: 40px;
height: 480px; height: 480px;
background-image: url('../img/fancybox.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png');
} }
#fancybox-overlay { #fancybox-overlay {
@ -99,7 +99,7 @@
right: -15px; right: -15px;
width: 30px; width: 30px;
height: 30px; height: 30px;
background: transparent url('../img/fancybox.png') -40px 0px; background: transparent url('%appswebroot%/apps/files_imageviewer/img/fancybox.png') -40px 0px;
cursor: pointer; cursor: pointer;
z-index: 1103; z-index: 1103;
display: none; display: none;
@ -137,7 +137,7 @@
width: 35%; width: 35%;
cursor: pointer; cursor: pointer;
outline: none; outline: none;
background: transparent url('../img/blank.gif'); background: transparent url('%appswebroot%/apps/files_imageviewer/img/blank.gif');
z-index: 1102; z-index: 1102;
display: none; display: none;
} }
@ -163,12 +163,12 @@
} }
#fancybox-left-ico { #fancybox-left-ico {
background-image: url('../img/fancybox.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png');
background-position: -40px -30px; background-position: -40px -30px;
} }
#fancybox-right-ico { #fancybox-right-ico {
background-image: url('../img/fancybox.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png');
background-position: -40px -60px; background-position: -40px -60px;
} }
@ -199,13 +199,13 @@
top: -20px; top: -20px;
left: 0; left: 0;
width: 100%; width: 100%;
background-image: url('../img/fancybox-x.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox-x.png');
} }
#fancybox-bg-ne { #fancybox-bg-ne {
top: -20px; top: -20px;
right: -20px; right: -20px;
background-image: url('../img/fancybox.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png');
background-position: -40px -162px; background-position: -40px -162px;
} }
@ -213,14 +213,14 @@
top: 0; top: 0;
right: -20px; right: -20px;
height: 100%; height: 100%;
background-image: url('../img/fancybox-y.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox-y.png');
background-position: -20px 0px; background-position: -20px 0px;
} }
#fancybox-bg-se { #fancybox-bg-se {
bottom: -20px; bottom: -20px;
right: -20px; right: -20px;
background-image: url('../img/fancybox.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png');
background-position: -40px -182px; background-position: -40px -182px;
} }
@ -228,14 +228,14 @@
bottom: -20px; bottom: -20px;
left: 0; left: 0;
width: 100%; width: 100%;
background-image: url('../img/fancybox-x.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox-x.png');
background-position: 0px -20px; background-position: 0px -20px;
} }
#fancybox-bg-sw { #fancybox-bg-sw {
bottom: -20px; bottom: -20px;
left: -20px; left: -20px;
background-image: url('../img/fancybox.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png');
background-position: -40px -142px; background-position: -40px -142px;
} }
@ -243,13 +243,13 @@
top: 0; top: 0;
left: -20px; left: -20px;
height: 100%; height: 100%;
background-image: url('../img/fancybox-y.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox-y.png');
} }
#fancybox-bg-nw { #fancybox-bg-nw {
top: -20px; top: -20px;
left: -20px; left: -20px;
background-image: url('../img/fancybox.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png');
background-position: -40px -122px; background-position: -40px -122px;
} }
@ -282,7 +282,7 @@
#fancybox-title-over { #fancybox-title-over {
padding: 10px; padding: 10px;
background-image: url('../img/fancy_title_over.png'); background-image: url('%appswebroot%/apps/files_imageviewer/img/fancy_title_over.png');
display: block; display: block;
} }
@ -306,7 +306,7 @@
#fancybox-title-float-left { #fancybox-title-float-left {
padding: 0 0 0 15px; padding: 0 0 0 15px;
background: url('../img/fancybox.png') -40px -90px no-repeat; background: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png') -40px -90px no-repeat;
} }
#fancybox-title-float-main { #fancybox-title-float-main {
@ -314,25 +314,25 @@
line-height: 29px; line-height: 29px;
font-weight: bold; font-weight: bold;
padding: 0 0 3px 0; padding: 0 0 3px 0;
background: url('../img/fancybox-x.png') 0px -40px; background: url('%appswebroot%/apps/files_imageviewer/img/fancybox-x.png') 0px -40px;
} }
#fancybox-title-float-right { #fancybox-title-float-right {
padding: 0 0 0 15px; padding: 0 0 0 15px;
background: url('../img/fancybox.png') -55px -90px no-repeat; background: url('%appswebroot%/apps/files_imageviewer/img/fancybox.png') -55px -90px no-repeat;
} }
/* IE6 */ /* IE6 */
.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_close.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_close.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_nav_left.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_nav_left.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_nav_right.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_nav_right.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_title_over.png', sizingMethod='scale'); zoom: 1; } .fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_title_left.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_title_left.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_title_main.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_title_main.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_title_right.png', sizingMethod='scale'); } .fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_title_right.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame { .fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
height: expression(this.parentNode.clientHeight + "px"); height: expression(this.parentNode.clientHeight + "px");
@ -343,17 +343,17 @@
top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'); top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
} }
#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_loading.png', sizingMethod='scale'); } #fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_loading.png', sizingMethod='scale'); }
/* IE6, IE7, IE8 */ /* IE6, IE7, IE8 */
.fancybox-ie .fancybox-bg { background: transparent !important; } .fancybox-ie .fancybox-bg { background: transparent !important; }
.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_shadow_n.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_shadow_n.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_shadow_ne.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_shadow_ne.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_shadow_e.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_shadow_e.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_shadow_se.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_shadow_se.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_shadow_s.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_shadow_s.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_shadow_sw.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_shadow_sw.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_shadow_w.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_shadow_w.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/fancy_shadow_nw.png', sizingMethod='scale'); } .fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%appswebroot%/apps/files_imageviewer/img/fancy_shadow_nw.png', sizingMethod='scale'); }

View File

@ -5,4 +5,4 @@ div.gallery_box:hover { color: black; }
div.gallery_box h1 {font-size: 17px; font-weight: normal;} div.gallery_box h1 {font-size: 17px; font-weight: normal;}
div#breadcrumb { border: 0; width: 70%; margin: 0 auto; padding: 25px 0; font-family: Verdana; text-align: center;} div#breadcrumb { border: 0; width: 70%; margin: 0 auto; padding: 25px 0; font-family: Verdana; text-align: center;}
span.breadcrumbelement { margin: 10px; margin-right: 0; cursor: pointer;} span.breadcrumbelement { margin: 10px; margin-right: 0; cursor: pointer;}
span.inside { background-image: url('../img/breadcrumb.png'); padding-left: 20px; background-position: left; background-repeat: no-repeat;} span.inside { background-image: url('%appswebroot%/apps/gallery/img/breadcrumb.png'); padding-left: 20px; background-position: left; background-repeat: no-repeat;}

View File

@ -53,7 +53,7 @@ OC={
filePath:function(app,type,file){ filePath:function(app,type,file){
var isCore=OC.coreApps.indexOf(app)!=-1; var isCore=OC.coreApps.indexOf(app)!=-1;
var link=OC.webroot; var link=OC.webroot;
if(file.substring(file.length-3) == 'php' && !isCore){ if((file.substring(file.length-3) == 'php' || file.substring(file.length-3) == 'css') && !isCore){
link+='/?app=' + app + '&getfile='; link+='/?app=' + app + '&getfile=';
if(type){ if(type){
link+=encodeURI(type + '/'); link+=encodeURI(type + '/');

View File

@ -107,7 +107,7 @@ OCdialogs = {
$(c_id + ' #dirtree').focus(function() { var t = $(this); t.data('oldval', t.val())}) $(c_id + ' #dirtree').focus(function() { var t = $(this); t.data('oldval', t.val())})
.change({dcid: c_id}, OC.dialogs.handleTreeListSelect); .change({dcid: c_id}, OC.dialogs.handleTreeListSelect);
$(c_id).ready(function(){ $(c_id).ready(function(){
$.getJSON(OC.webroot+'/files/ajax/rawlist.php', {mimetype: mimetype_filter} ,function(r){OC.dialogs.fillFilePicker(r, c_id, callback)}); $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), {mimetype: mimetype_filter} ,function(r){OC.dialogs.fillFilePicker(r, c_id, callback)});
}).data('multiselect', multiselect).data('mimetype',mimetype_filter); }).data('multiselect', multiselect).data('mimetype',mimetype_filter);
// build buttons // build buttons
var b = [ var b = [
@ -222,7 +222,7 @@ OCdialogs = {
$(this).children().each(function(i, element) { if (skip_first) {skip_first = false; return; }path += '/'+$(element).text(); }); $(this).children().each(function(i, element) { if (skip_first) {skip_first = false; return; }path += '/'+$(element).text(); });
$(event.data.dcid).data('path', path); $(event.data.dcid).data('path', path);
$(event.data.dcid + ' .filepicker_loader').css('visibility', 'visible'); $(event.data.dcid + ' .filepicker_loader').css('visibility', 'visible');
$.getJSON(OC.webroot+'/files/ajax/rawlist.php', {dir: path, mimetype: $(event.data.dcid).data('mimetype')}, function(r){OC.dialogs.fillFilePicker(r, event.data.dcid)}); $.getJSON(OC.filePath('files', 'ajax', 'rawlist.php'), {dir: path, mimetype: $(event.data.dcid).data('mimetype')}, function(r){OC.dialogs.fillFilePicker(r, event.data.dcid)});
}, },
// this function is in early development state, please dont use it unlsess you know what you are doing // this function is in early development state, please dont use it unlsess you know what you are doing
handlePickerClick:function(element, name, dcid) { handlePickerClick:function(element, name, dcid) {

View File

@ -50,14 +50,12 @@ if($_SERVER['REQUEST_METHOD']=='PROPFIND'){
// Someone is logged in : // Someone is logged in :
elseif(OC_User::isLoggedIn()) { elseif(OC_User::isLoggedIn()) {
if(isset($_GET["logout"]) and ($_GET["logout"])) {
OC_App::loadApps(); OC_App::loadApps();
if(isset($_GET["logout"]) and ($_GET["logout"])) {
OC_User::logout(); OC_User::logout();
header("Location: ".OC::$WEBROOT.'/'); header("Location: ".OC::$WEBROOT.'/');
exit(); exit();
} }else{
else {
OC_App::loadApps();
if(is_null(OC::$REQUESTEDFILE)){ if(is_null(OC::$REQUESTEDFILE)){
OC::loadapp(); OC::loadapp();
}else{ }else{

View File

@ -279,13 +279,24 @@ class OC{
if(file_exists(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP)){ if(file_exists(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP)){
require_once(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP . '/index.php'); require_once(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP . '/index.php');
}else{ }else{
trigger_error('The requested App was not found.', E_USER_ERROR); trigger_error('The requested App was not found.', E_USER_ERROR);//load default app instead?
} }
} }
public static function loadfile(){ public static function loadfile(){
if(file_exists(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP . '/' . OC::$REQUESTEDFILE)){ if(file_exists(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP . '/' . OC::$REQUESTEDFILE)){
if(substr(OC::$REQUESTEDFILE, -3) == 'css'){
$appswebroot = (string) OC::$APPSWEBROOT;
$webroot = (string) OC::$WEBROOT;
$cssfile = file_get_contents(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP . '/' . OC::$REQUESTEDFILE);
$cssfile = str_replace('%appswebroot%', $appswebroot, $cssfile);
$cssfile = str_replace('%webroot%', $webroot, $cssfile);
header('Content-Type: text/css');
echo $cssfile;
exit;
}elseif(substr(OC::$REQUESTEDFILE, -3) == 'php'){
require_once(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP . '/' . OC::$REQUESTEDFILE); require_once(OC::$APPSROOT . '/apps/' . OC::$REQUESTEDAPP . '/' . OC::$REQUESTEDFILE);
}
}else{ }else{
header('HTTP/1.0 404 Not Found'); header('HTTP/1.0 404 Not Found');
exit; exit;

View File

@ -41,11 +41,11 @@ class OC_Helper {
$app .= '/'; $app .= '/';
// Check if the app is in the app folder // Check if the app is in the app folder
if( file_exists( OC::$APPSROOT . '/apps/'. $app.$file )){ if( file_exists( OC::$APPSROOT . '/apps/'. $app.$file )){
if(substr($file, -3) == 'php'){ if(substr($file, -3) == 'php' || substr($file, -3) == 'css'){
if(substr($app, -1, 1) == '/'){ if(substr($app, -1, 1) == '/'){
$app = substr($app, 0, strlen($app) - 1); $app = substr($app, 0, strlen($app) - 1);
} }
$urlLinkTo = OC::$APPSWEBROOT . '/?app=' . $app; $urlLinkTo = OC::$WEBROOT . '/?app=' . $app;
$urlLinkTo .= ($file!='index.php')?'&getfile=' . urlencode($file):''; $urlLinkTo .= ($file!='index.php')?'&getfile=' . urlencode($file):'';
}else{ }else{
$urlLinkTo = OC::$APPSWEBROOT . '/apps/' . $app . $file; $urlLinkTo = OC::$APPSWEBROOT . '/apps/' . $app . $file;

View File

@ -323,7 +323,16 @@ class OC_Template{
*/ */
public function appendIfExist($type, $root, $web, $file) { public function appendIfExist($type, $root, $web, $file) {
if (is_file($root.'/'.$file)) { if (is_file($root.'/'.$file)) {
if($type == 'cssfiles' && $root == OC::$APPSROOT){
$pathes = explode('/', $file);
$app = $pathes['1'];
unset($pathes['0']);
unset($pathes['1']);
$path = implode('/', $pathes);
$this->append( $type, OC_Helper::linkTo($app, $path));
}else{
$this->append( $type, $web.'/'.$file); $this->append( $type, $web.'/'.$file);
}
return true; return true;
} }
return false; return false;