diff options
90 files changed, 3490 insertions, 709 deletions
diff --git a/apps/bookmarks/ajax/addBookmark.php b/apps/bookmarks/ajax/addBookmark.php index 483716405a1..c8a64d531c9 100644 --- a/apps/bookmarks/ajax/addBookmark.php +++ b/apps/bookmarks/ajax/addBookmark.php @@ -21,11 +21,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); @@ -34,4 +29,4 @@ OCP\JSON::checkAppEnabled('bookmarks'); require_once(OC_App::getAppPath('bookmarks').'/bookmarksHelper.php'); $id = addBookmark($_POST['url'], $_POST['title'], $_POST['tags']); -OCP\JSON::success(array('data' => $id));
\ No newline at end of file +OCP\JSON::success(array('data' => $id)); diff --git a/apps/bookmarks/ajax/delBookmark.php b/apps/bookmarks/ajax/delBookmark.php index f40f02ebab7..ba1dfff3bed 100644 --- a/apps/bookmarks/ajax/delBookmark.php +++ b/apps/bookmarks/ajax/delBookmark.php @@ -21,11 +21,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); diff --git a/apps/bookmarks/ajax/editBookmark.php b/apps/bookmarks/ajax/editBookmark.php index 0b37d161af1..ad43be064f0 100644 --- a/apps/bookmarks/ajax/editBookmark.php +++ b/apps/bookmarks/ajax/editBookmark.php @@ -21,11 +21,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); diff --git a/apps/bookmarks/ajax/recordClick.php b/apps/bookmarks/ajax/recordClick.php index 1eee1718d13..0283f09f60d 100644 --- a/apps/bookmarks/ajax/recordClick.php +++ b/apps/bookmarks/ajax/recordClick.php @@ -21,11 +21,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('bookmarks'); diff --git a/apps/bookmarks/ajax/updateList.php b/apps/bookmarks/ajax/updateList.php index 4de2475d067..cf9a2cf9183 100644 --- a/apps/bookmarks/ajax/updateList.php +++ b/apps/bookmarks/ajax/updateList.php @@ -22,11 +22,6 @@ * */ -//no apps or filesystem -$RUNTIME_NOSETUPFS=true; - - - // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('bookmarks'); diff --git a/apps/calendar/ajax/calendar/overview.php b/apps/calendar/ajax/calendar/overview.php index 9d43364ffbf..1d8e49ea5f2 100644 --- a/apps/calendar/ajax/calendar/overview.php +++ b/apps/calendar/ajax/calendar/overview.php @@ -4,9 +4,7 @@ * This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. - */ - - + */ $l10n = OC_L10N::get('calendar'); OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('calendar'); diff --git a/apps/calendar/appinfo/app.php b/apps/calendar/appinfo/app.php index 72ddde60152..9ae255853d5 100644 --- a/apps/calendar/appinfo/app.php +++ b/apps/calendar/appinfo/app.php @@ -35,7 +35,6 @@ OCP\App::addNavigationEntry( array( 'href' => OCP\Util::linkTo( 'calendar', 'index.php' ), 'icon' => OCP\Util::imagePath( 'calendar', 'icon.svg' ), 'name' => $l->t('Calendar'))); -OCP\App::registerPersonal('calendar', 'settings'); OC_Search::registerProvider('OC_Search_Provider_Calendar'); OCP\Share::registerBackend('calendar', 'OC_Share_Backend_Calendar'); OCP\Share::registerBackend('event', 'OC_Share_Backend_Event'); diff --git a/apps/calendar/calendar.php b/apps/calendar/calendar.php new file mode 100644 index 00000000000..2c0bee9d233 --- /dev/null +++ b/apps/calendar/calendar.php @@ -0,0 +1,12 @@ +<?php +/** + * Copyright (c) 2012 Georg Ehrke <ownClouddev at georgswebsite.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ +$l10n = OC_L10N::get('calendar'); +OCP\JSON::checkLoggedIn(); +OCP\JSON::checkAppEnabled('calendar'); +$tmpl = new OCP\Template('calendar', 'part.choosecalendar'); +$tmpl->printpage();
\ No newline at end of file diff --git a/apps/calendar/css/style.css b/apps/calendar/css/style.css index 373a4565638..5cda4b1beff 100644 --- a/apps/calendar/css/style.css +++ b/apps/calendar/css/style.css @@ -19,7 +19,7 @@ #loading { display: none;margin: 0;padding:0;margin-top:5px;} -#calendar_holder {position: relative;bottom: 0; right: 0; left: 0; top: 3em;} +#fullcalendar {position: relative;bottom: 0; right: 0; left: 0; top: 3em;} .fc-content{padding:2px 4px;} #listview {margin: 0; padding: 10px; background: #EEEEEE;} #listview #more_before, #listview #more_after {border: 1px solid #1a1a1a; width:25em;padding: 3px;text-align: center;} @@ -133,3 +133,12 @@ padding:0 8px 2px; line-height:1.2; margin-bottom:4px; } + +#choosecalendar a.settings{ + margin-top: 25px; + margin-right: 10px; +} + +#fullcalendar{ + overflow: scroll; +}
\ No newline at end of file diff --git a/apps/calendar/index.php b/apps/calendar/index.php index cbfe0027b7b..352c295c437 100644 --- a/apps/calendar/index.php +++ b/apps/calendar/index.php @@ -5,8 +5,7 @@ * later. * See the COPYING-README file. */ - - +DEFINE('DEBUG', TRUE); OCP\User::checkLoggedIn(); OCP\App::checkAppEnabled('calendar'); diff --git a/apps/calendar/js/calendar.js b/apps/calendar/js/calendar.js index 25311fa0df4..23846c89b84 100644 --- a/apps/calendar/js/calendar.js +++ b/apps/calendar/js/calendar.js @@ -18,7 +18,7 @@ Calendar={ startEventDialog:function(){ Calendar.UI.loading(false); $('.tipsy').remove(); - $('#calendar_holder').fullCalendar('unselect'); + $('#fullcalendar').fullCalendar('unselect'); Calendar.UI.lockTime(); $( "#from" ).datepicker({ dateFormat : 'dd-mm-yy' @@ -88,7 +88,7 @@ Calendar={ $.post(url, post, function(data){ Calendar.UI.loading(false); if(data.status == 'success'){ - $('#calendar_holder').fullCalendar('removeEvents', $('#event_form input[name=id]').val()); + $('#fullcalendar').fullCalendar('removeEvents', $('#event_form input[name=id]').val()); $('#event').dialog('destroy').remove(); } else { $('#errorbox').html(t('calendar', 'Deletion failed')); @@ -133,7 +133,7 @@ Calendar={ } else if(data.status == 'success'){ $('#event').dialog('destroy').remove(); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } },"json"); }, @@ -148,7 +148,7 @@ Calendar={ console.log("Event moved successfully"); }else{ revertFunc(); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } }); }, @@ -163,7 +163,7 @@ Calendar={ console.log("Event resized successfully"); }else{ revertFunc(); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } }); }, @@ -239,11 +239,11 @@ Calendar={ doc_height = $(document).height(), win_height = $(window).height(); if(direction == 'down' && win_height == (doc_height - scroll)){ - $('#calendar_holder').fullCalendar('next'); + $('#fullcalendar').fullCalendar('next'); $(document).scrollTop(0); event.preventDefault(); }else if (direction == 'top' && scroll == 0) { - $('#calendar_holder').fullCalendar('prev'); + $('#fullcalendar').fullCalendar('prev'); $(document).scrollTop(win_height); event.preventDefault(); } @@ -398,9 +398,9 @@ Calendar={ if (data.status == 'success'){ checkbox.checked = data.active == 1; if (data.active == 1){ - $('#calendar_holder').fullCalendar('addEventSource', data.eventSource); + $('#fullcalendar').fullCalendar('addEventSource', data.eventSource); }else{ - $('#calendar_holder').fullCalendar('removeEventSource', data.eventSource.url); + $('#fullcalendar').fullCalendar('removeEventSource', data.eventSource.url); } } }); @@ -426,10 +426,10 @@ Calendar={ function(data) { if (data.status == 'success'){ var url = 'ajax/events.php?calendar_id='+calid; - $('#calendar_holder').fullCalendar('removeEventSource', url); + $('#fullcalendar').fullCalendar('removeEventSource', url); $('#choosecalendar_dialog').dialog('destroy').remove(); Calendar.UI.Calendar.overview(); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } }); } @@ -456,8 +456,8 @@ Calendar={ function(data){ if(data.status == 'success'){ $(button).closest('tr').prev().html(data.page).show().next().remove(); - $('#calendar_holder').fullCalendar('removeEventSource', data.eventSource.url); - $('#calendar_holder').fullCalendar('addEventSource', data.eventSource); + $('#fullcalendar').fullCalendar('removeEventSource', data.eventSource.url); + $('#fullcalendar').fullCalendar('addEventSource', data.eventSource); if (calendarid == 'new'){ $('#choosecalendar_dialog > table:first').append('<tr><td colspan="6"><a href="#" onclick="Calendar.UI.Calendar.newCalendar(this);"><input type="button" value="' + newcalendar + '"></a></td></tr>'); } @@ -504,7 +504,7 @@ Calendar={ idtype: '', activation:function(object,owner,id){ $.post(OC.filePath('calendar', 'ajax/share', 'activation.php'),{id:id, idtype:'calendar', activation:object.checked?1:0}); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); }, dropdown:function(userid, calid){ $('.calendar_share_dropdown').remove(); @@ -612,7 +612,7 @@ Calendar={ console.log('The drop-import feature is not supported in your browser :('); return false; } - droparea = document.getElementById('calendar_holder'); + droparea = document.getElementById('fullcalendar'); droparea.ondrop = function(e){ e.preventDefault(); Calendar.UI.Drop.drop(e); @@ -626,7 +626,7 @@ Calendar={ reader = new FileReader(); reader.onload = function(event){ Calendar.UI.Drop.import(event.target.result); - $('#calendar_holder').fullCalendar('refetchEvents'); + $('#fullcalendar').fullCalendar('refetchEvents'); } reader.readAsDataURL(file); } @@ -634,7 +634,7 @@ Calendar={ import:function(data){ $.post(OC.filePath('calendar', 'ajax/import', 'dropimport.php'), {'data':data},function(result) { if(result.status == 'success'){ - $('#calendar_holder').fullCalendar('addEventSource', result.eventSource); + $('#fullcalendar').fullCalendar('addEventSource', result.eventSource); $('#notification').html(result.message); $('#notification').slideDown(); window.setTimeout(function(){$('#notification').slideUp();}, 5000); @@ -647,7 +647,11 @@ Calendar={ }); } } - } + }, + Settings:{ + // + }, + } $.fullCalendar.views.list = ListView; function ListView(element, calendar) { @@ -815,7 +819,7 @@ function ListView(element, calendar) { } $(document).ready(function(){ Calendar.UI.initScroll(); - $('#calendar_holder').fullCalendar({ + $('#fullcalendar').fullCalendar({ header: false, firstDay: firstDay, editable: true, @@ -851,10 +855,10 @@ $(document).ready(function(){ } Calendar.UI.setViewActive(view.name); if (view.name == 'agendaWeek') { - $('#calendar_holder').fullCalendar('option', 'aspectRatio', 0.1); + $('#fullcalendar').fullCalendar('option', 'aspectRatio', 0.1); } else { - $('#calendar_holder').fullCalendar('option', 'aspectRatio', 1.35); + $('#fullcalendar').fullCalendar('option', 'aspectRatio', 1.35); } }, columnFormat: { @@ -888,7 +892,7 @@ $(document).ready(function(){ changeYear: true, showButtonPanel: true, beforeShow: function(input, inst) { - var calendar_holder = $('#calendar_holder'); + var calendar_holder = $('#fullcalendar'); var date = calendar_holder.fullCalendar('getDate'); inst.input.datepicker('setDate', date); inst.input.val(calendar_holder.fullCalendar('getView').title); @@ -896,30 +900,36 @@ $(document).ready(function(){ }, onSelect: function(value, inst) { var date = inst.input.datepicker('getDate'); - $('#calendar_holder').fullCalendar('gotoDate', date); + $('#fullcalendar').fullCalendar('gotoDate', date); } }); fillWindow($('#content')); OCCategories.changed = Calendar.UI.categoriesChanged; OCCategories.app = 'calendar'; $('#oneweekview_radio').click(function(){ - $('#calendar_holder').fullCalendar('changeView', 'agendaWeek'); + $('#fullcalendar').fullCalendar('changeView', 'agendaWeek'); }); $('#onemonthview_radio').click(function(){ - $('#calendar_holder').fullCalendar('changeView', 'month'); + $('#fullcalendar').fullCalendar('changeView', 'month'); }); $('#listview_radio').click(function(){ - $('#calendar_holder').fullCalendar('changeView', 'list'); + $('#fullcalendar').fullCalendar('changeView', 'list'); }); $('#today_input').click(function(){ - $('#calendar_holder').fullCalendar('today'); + $('#fullcalendar').fullCalendar('today'); }); $('#datecontrol_left').click(function(){ - $('#calendar_holder').fullCalendar('prev'); + $('#fullcalendar').fullCalendar('prev'); }); $('#datecontrol_right').click(function(){ - $('#calendar_holder').fullCalendar('next'); + $('#fullcalendar').fullCalendar('next'); }); Calendar.UI.Share.init(); Calendar.UI.Drop.init(); + $('#choosecalendar .generalsettings').on('click keydown', function() { + OC.appSettings({appid:'calendar', loadJS:true, cache:false}); + }); + $('#choosecalendar .calendarsettings').on('click keydown', function() { + OC.appSettings({appid:'calendar', loadJS:true, cache:false, scriptName:'calendar.php'}); + }); }); diff --git a/apps/calendar/js/settings.js b/apps/calendar/js/settings.js index 60741f2b6fc..20753a7b8fe 100644 --- a/apps/calendar/js/settings.js +++ b/apps/calendar/js/settings.js @@ -1,11 +1,7 @@ $(document).ready(function(){ $('#timezone').change( function(){ - OC.msg.startSaving('#calendar .msg') - // Serialize the data var post = $( '#timezone' ).serialize(); - $.post( OC.filePath('calendar', 'ajax/settings', 'settimezone.php'), post, function(data){ - //OC.msg.finishedSaving('#calendar .msg', data); - }); + $.post( OC.filePath('calendar', 'ajax/settings', 'settimezone.php'), post, function(data){return;}); return false; }); $('#timezone').chosen(); @@ -52,6 +48,7 @@ $(document).ready(function(){ }); }); calendarcachecheck(); + }); function calendarcachecheck(){ $.getJSON(OC.filePath('calendar', 'ajax/cache', 'status.php'), function(jsondata, status) { diff --git a/apps/calendar/settings.php b/apps/calendar/settings.php index eaa20c6c9b4..f563518046d 100644 --- a/apps/calendar/settings.php +++ b/apps/calendar/settings.php @@ -14,4 +14,4 @@ $tmpl->assign('calendars', OC_Calendar_Calendar::allCalendars(OCP\USER::getUser( OCP\Util::addscript('calendar','settings'); -return $tmpl->fetchPage(); +$tmpl->printPage();
\ No newline at end of file diff --git a/apps/calendar/templates/calendar.php b/apps/calendar/templates/calendar.php index 29b9bf6bc54..c94cc755ab3 100644 --- a/apps/calendar/templates/calendar.php +++ b/apps/calendar/templates/calendar.php @@ -33,6 +33,7 @@ ?> }); </script> + <div id="notification" style="display:none;"></div> <div id="controls"> <form id="view"> <input type="button" value="<?php echo $l->t('Week');?>" id="oneweekview_radio"/> @@ -41,8 +42,9 @@ <img id="loading" src="<?php echo OCP\Util::imagePath('core', 'loading.gif'); ?>" /> </form> <form id="choosecalendar"> - <input type="button" id="today_input" value="<?php echo $l->t("Today");?>"/> - <input type="button" id="choosecalendar_input" value="<?php echo $l->t("Calendars");?>" onclick="Calendar.UI.Calendar.overview();" /> + <!--<input type="button" id="today_input" value="<?php echo $l->t("Today");?>"/>--> + <a class="settings calendarsettings" title="<?php echo $l->t('Settings'); ?>"><img class="svg" src="<?php echo OCP\Util::imagePath('calendar', 'icon.svg'); ?>" alt="<?php echo $l->t('Settings'); ?>" /></a> + <a class="settings generalsettings" title="<?php echo $l->t('Settings'); ?>"><img class="svg" src="core/img/actions/settings.svg" alt="<?php echo $l->t('Settings'); ?>" /></a> </form> <form id="datecontrol"> <input type="button" value=" < " id="datecontrol_left"/> @@ -50,12 +52,6 @@ <input type="button" value=" > " id="datecontrol_right"/> </form> </div> - <div id="notification" style="display:none;"></div> - <div id="calendar_holder"> - </div> - <!-- Dialogs --> + <div id="fullcalendar"></div> <div id="dialog_holder"></div> - <div id="parsingfail_dialog" title="Parsing Fail"> - <?php echo $l->t("There was a fail, while parsing the file."); ?> - </div> - <!-- End of Dialogs --> + <div id="appsettings" class="popup topright hidden"></div>
\ No newline at end of file diff --git a/apps/calendar/templates/part.choosecalendar.php b/apps/calendar/templates/part.choosecalendar.php index 8d621cc3630..ad2f9e753f2 100644 --- a/apps/calendar/templates/part.choosecalendar.php +++ b/apps/calendar/templates/part.choosecalendar.php @@ -1,51 +1,52 @@ -<div id="choosecalendar_dialog" title="<?php echo $l->t("Choose active calendars"); ?>"> -<p><b><?php echo $l->t('Your calendars'); ?>:</b></p> -<table width="100%" style="border: 0;"> -<?php -$option_calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser()); -for($i = 0; $i < count($option_calendars); $i++){ - echo "<tr>"; - $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields'); - $tmpl->assign('calendar', $option_calendars[$i]); - if(OC_Calendar_Share::allUsersSharedwith($option_calendars[$i]['id'], OC_Calendar_Share::CALENDAR) == array()){ - $shared = false; - }else{ - $shared = true; +<form id="calendar"> + <p><b><?php echo $l->t('Your calendars'); ?>:</b></p> + <table width="100%" style="border: 0;"> + <?php + $option_calendars = OC_Calendar_Calendar::allCalendars(OCP\USER::getUser()); + for($i = 0; $i < count($option_calendars); $i++){ + echo "<tr>"; + $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields'); + $tmpl->assign('calendar', $option_calendars[$i]); + if(OC_Calendar_Share::allUsersSharedwith($option_calendars[$i]['id'], OC_Calendar_Share::CALENDAR) == array()){ + $shared = false; + }else{ + $shared = true; + } + $tmpl->assign('shared', $shared); + $tmpl->printpage(); + echo "</tr>"; } - $tmpl->assign('shared', $shared); - $tmpl->printpage(); - echo "</tr>"; -} -?> -<tr> - <td colspan="6"> - <a href="#" onclick="Calendar.UI.Calendar.newCalendar(this);"><input type="button" value="<?php echo $l->t('New Calendar') ?>"></a> - </td> -</tr> -<tr> - <td colspan="6"> - <p style="margin: 0 auto;width: 90%;"><input style="display:none;width: 90%;float: left;" type="text" id="caldav_url" onmouseover="$('#caldav_url').select();" title="<?php echo $l->t("CalDav Link"); ?>"><img id="caldav_url_close" style="height: 20px;vertical-align: middle;display: none;" src="<?php echo OCP\Util::imagePath('core', 'actions/delete.svg') ?>" alt="close" onclick="$('#caldav_url').hide();$('#caldav_url_close').hide();"/></p> - </td> -</tr> -</table><br> -<p><b><?php echo $l->t('Shared calendars'); ?>: </b></p> -<table width="100%" style="border: 0;"> -<?php -$share = OC_Calendar_Share::allSharedwithuser(OCP\USER::getUser(), OC_Calendar_Share::CALENDAR); -$count = count($share); -for($i = 0; $i < $count; $i++){ - $share[$i]['calendar'] = OC_Calendar_App::getCalendar($share[$i]['calendarid'], false, false); - echo '<tr>'; - $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields.shared'); - $tmpl->assign('share', $share[$i]); - $tmpl->printpage(); - echo '</tr>'; -} -?> -</table> -<?php -if($count == 0){ - echo '<p style="text-align:center;"><b>' . $l->t('No shared calendars') . '</b></p>'; -} -?> -</div>
\ No newline at end of file + ?> + <tr> + <td colspan="6"> + <a href="#" onclick="Calendar.UI.Calendar.newCalendar(this);"><input type="button" value="<?php echo $l->t('New Calendar') ?>"></a> + </td> + </tr> + <tr> + <td colspan="6"> + <p style="margin: 0 auto;width: 90%;"><input style="display:none;width: 90%;float: left;" type="text" id="caldav_url" onmouseover="$('#caldav_url').select();" title="<?php echo $l->t("CalDav Link"); ?>"><img id="caldav_url_close" style="height: 20px;vertical-align: middle;display: none;" src="<?php echo OCP\Util::imagePath('core', 'actions/delete.svg') ?>" alt="close" onclick="$('#caldav_url').hide();$('#caldav_url_close').hide();"/></p> + </td> + </tr> + </table><br> + <p><b><?php echo $l->t('Shared calendars'); ?>: </b></p> + <table width="100%" style="border: 0;"> + <?php + $share = OC_Calendar_Share::allSharedwithuser(OCP\USER::getUser(), OC_Calendar_Share::CALENDAR); + $count = count($share); + for($i = 0; $i < $count; $i++){ + $share[$i]['calendar'] = OC_Calendar_App::getCalendar($share[$i]['calendarid'], false, false); + echo '<tr>'; + $tmpl = new OCP\Template('calendar', 'part.choosecalendar.rowfields.shared'); + $tmpl->assign('share', $share[$i]); + $tmpl->printpage(); + echo '</tr>'; + } + ?> + </table> + <?php + if($count == 0){ + echo '<p style="text-align:center;"><b>' . $l->t('No shared calendars') . '</b></p>'; + } + ?> + </fieldset> +</form>
\ No newline at end of file diff --git a/apps/calendar/templates/settings.php b/apps/calendar/templates/settings.php index 28c357621a8..56a6a42ee0e 100644 --- a/apps/calendar/templates/settings.php +++ b/apps/calendar/templates/settings.php @@ -7,11 +7,16 @@ * See the COPYING-README file. */ ?> -<form id="calendar"> - <fieldset class="personalblock"> - <legend><?php echo $l->t('Calendar'); ?></legend> - <table class="nostyle"> - <tr><td><label for="timezone" class="bold"><?php echo $l->t('Timezone');?></label></td><td><select style="display: none;" id="timezone" name="timezone"> +<h2 id="title_general"><?php echo $l->t('General'); ?></h2> +<div id="general"> + <table class="nostyle"> + <tr> + <td> + <label for="timezone" class="bold"><?php echo $l->t('Timezone');?></label> + + </td> + <td> + <select style="display: none;" id="timezone" name="timezone"> <?php $continent = ''; foreach($_['timezones'] as $timezone): @@ -27,29 +32,58 @@ $city=strtr($ex[1], '_', ' '); $continent=$ex[0]; echo '<option value="'.$timezone.'"'.($_['timezone'] == $timezone?' selected="selected"':'').'>'.$city.'</option>'; + var_dump($_['timezone']); endforeach;?> - </select><input type="checkbox" name="timezonedetection" id="timezonedetection"><label for="timezonedetection"><?php echo $l->t('Check always for changes of the timezone'); ?></label></td></tr> - - <tr><td><label for="timeformat" class="bold"><?php echo $l->t('Timeformat');?></label></td><td> + </select> + </td> + </tr> + <tr> + <td> + + </td> + <td> + <input type="checkbox" name="timezonedetection" id="timezonedetection"> + + <label for="timezonedetection"><?php echo $l->t('Update timezone automatically'); ?></label> + </td> + </tr> + <tr> + <td> + <label for="timeformat" class="bold"><?php echo $l->t('Time format');?></label> + + </td> + <td> <select style="display: none; width: 60px;" id="timeformat" title="<?php echo "timeformat"; ?>" name="timeformat"> <option value="24" id="24h"><?php echo $l->t("24h"); ?></option> <option value="ampm" id="ampm"><?php echo $l->t("12h"); ?></option> </select> - </td></tr> - - <tr><td><label for="firstday" class="bold"><?php echo $l->t('First day of the week');?></label></td><td> + </td> + </tr> + <tr> + <td> + <label for="firstday" class="bold"><?php echo $l->t('Start week on');?></label> + + </td> + <td> <select style="display: none;" id="firstday" title="<?php echo "First day"; ?>" name="firstday"> <option value="mo" id="mo"><?php echo $l->t("Monday"); ?></option> <option value="su" id="su"><?php echo $l->t("Sunday"); ?></option> </select> - </td></tr> - - <tr><td><label for="" class="bold"><?php echo $l->t('Cache');?></label></td><td> - <input id="cleancalendarcache" type="button" class="button" value="<?php echo $l->t('Clear cache for repeating events');?>"> - </td></tr> - - </table> - + </td> + </tr> + <tr class="advancedsettings"> + <td> + <label for="" class="bold"><?php echo $l->t('Cache');?></label> + + </td> + <td> + <input id="cleancalendarcache" type="button" class="button" value="<?php echo $l->t('Clear cache for repeating events');?>"> + </td> + </tr> + </table> +</div> +<h2 id="title_urls"><?php echo $l->t('URLs'); ?></h2> +<div id="urls"> <?php echo $l->t('Calendar CalDAV syncing addresses'); ?> (<a href="http://owncloud.org/synchronisation/" target="_blank"><?php echo $l->t('more info'); ?></a>) <dl> <dt><?php echo $l->t('Primary address (Kontact et al)'); ?></dt> @@ -63,5 +97,5 @@ <?php } ?> </dd> </dl> - </fieldset> -</form> + </div> +</div>
\ No newline at end of file diff --git a/apps/contacts/ajax/contact/add.php b/apps/contacts/ajax/contact/add.php index 6aaf5a9df35..043e947dc4b 100644 --- a/apps/contacts/ajax/contact/add.php +++ b/apps/contacts/ajax/contact/add.php @@ -49,4 +49,10 @@ if(!$id) { exit(); } -OCP\JSON::success(array('data' => array( 'id' => $id, 'aid' => $aid ))); +OCP\JSON::success(array( + 'data' => array( + 'id' => $id, + 'aid' => $aid, + 'lastmodified' => OC_Contacts_VCard::lastModified($vcard)->format('U') + ) +)); diff --git a/apps/contacts/ajax/contact/addproperty.php b/apps/contacts/ajax/contact/addproperty.php index 58b857547fb..df064367ef1 100644 --- a/apps/contacts/ajax/contact/addproperty.php +++ b/apps/contacts/ajax/contact/addproperty.php @@ -25,7 +25,7 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); -require_once 'loghandler.php'; +require_once __DIR__.'/../loghandler.php'; $id = isset($_POST['id'])?$_POST['id']:null; $name = isset($_POST['name'])?$_POST['name']:null; @@ -48,9 +48,9 @@ if(!$vcard) { if(!is_array($value)) { $value = trim($value); - if(!$value + if(!$value && in_array( - $name, + $name, array('TEL', 'EMAIL', 'ORG', 'BDAY', 'URL', 'NICKNAME', 'NOTE')) ) { bailOut($l10n->t('Cannot add empty property.')); @@ -78,9 +78,9 @@ foreach($current as $item) { } if(is_array($value)) { - // NOTE: Important, otherwise the compound value will + // NOTE: Important, otherwise the compound value will // be set in the order the fields appear in the form! - ksort($value); + ksort($value); $value = array_map('strip_tags', $value); } else { $value = strip_tags($value); @@ -123,10 +123,10 @@ switch($name) { $line = count($vcard->children) - 1; -// Apparently Sabre_VObject_Parameter doesn't do well with +// Apparently Sabre_VObject_Parameter doesn't do well with // multiple values or I don't know how to do it. Tanghus. foreach ($parameters as $key=>$element) { - if(is_array($element) && strtoupper($key) == 'TYPE') { + if(is_array($element) && strtoupper($key) == 'TYPE') { // NOTE: Maybe this doesn't only apply for TYPE? // And it probably shouldn't be done here anyways :-/ foreach($element as $e) { @@ -144,4 +144,9 @@ if(!OC_Contacts_VCard::edit($id, $vcard)) { bailOut($l10n->t('Error adding contact property: '.$name)); } -OCP\JSON::success(array('data' => array( 'checksum' => $checksum ))); +OCP\JSON::success(array( + 'data' => array( + 'checksum' => $checksum, + 'lastmodified' => OC_Contacts_VCard::lastModified($vcard)->format('U')) + ) +); diff --git a/apps/contacts/ajax/contact/delete.php b/apps/contacts/ajax/contact/delete.php index 9777046fc82..def98b36705 100644 --- a/apps/contacts/ajax/contact/delete.php +++ b/apps/contacts/ajax/contact/delete.php @@ -23,7 +23,8 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); -require_once 'loghandler.php'; + +require_once __DIR__.'/../loghandler.php'; $id = isset($_POST['id'])?$_POST['id']:null; if(!$id) { diff --git a/apps/contacts/ajax/contact/deleteproperty.php b/apps/contacts/ajax/contact/deleteproperty.php index 205df8bc184..d7545ff1fbf 100644 --- a/apps/contacts/ajax/contact/deleteproperty.php +++ b/apps/contacts/ajax/contact/deleteproperty.php @@ -24,7 +24,8 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); OCP\JSON::callCheck(); -require_once 'loghandler.php'; + +require_once __DIR__.'/../loghandler.php'; $id = $_POST['id']; $checksum = $_POST['checksum']; @@ -43,4 +44,9 @@ if(!OC_Contacts_VCard::edit($id, $vcard)) { bailOut($l10n->t('Error deleting contact property.')); } -OCP\JSON::success(array('data' => array( 'id' => $id ))); +OCP\JSON::success(array( + 'data' => array( + 'id' => $id, + 'lastmodified' => OC_Contacts_VCard::lastModified($vcard)->format('U'), + ) +)); diff --git a/apps/contacts/ajax/contact/details.php b/apps/contacts/ajax/contact/details.php index 0e07f9ec3d8..c22f18937d7 100644 --- a/apps/contacts/ajax/contact/details.php +++ b/apps/contacts/ajax/contact/details.php @@ -53,5 +53,6 @@ if(isset($details['PHOTO'])) { $details['id'] = $id; $details['displayname'] = $card['fullname']; $details['addressbookid'] = $card['addressbookid']; +$details['lastmodified'] = OC_Contacts_App::lastModified($vcard)->format('U'); OC_Contacts_App::setLastModifiedHeader($vcard); OCP\JSON::success(array('data' => $details)); diff --git a/apps/contacts/ajax/contact/saveproperty.php b/apps/contacts/ajax/contact/saveproperty.php index ef4d1b26c5b..799038b6f1d 100644 --- a/apps/contacts/ajax/contact/saveproperty.php +++ b/apps/contacts/ajax/contact/saveproperty.php @@ -19,7 +19,9 @@ * License along with this library. If not, see <http://www.gnu.org/licenses/>. * */ -require_once 'loghandler.php'; + +require_once __DIR__.'/../loghandler.php'; + // Check if we are a user OCP\JSON::checkLoggedIn(); OCP\JSON::checkAppEnabled('contacts'); @@ -146,5 +148,6 @@ if(!OC_Contacts_VCard::edit($id, $vcard)) { OCP\JSON::success(array('data' => array( 'line' => $line, 'checksum' => $checksum, - 'oldchecksum' => $_POST['checksum'])) -); + 'oldchecksum' => $_POST['checksum'] + 'lastmodified' => OC_Contacts_VCard::lastModified($vcard)->format('U') +)); diff --git a/apps/contacts/ajax/savecrop.php b/apps/contacts/ajax/savecrop.php index 1df5299c7a6..2483d0f7128 100644 --- a/apps/contacts/ajax/savecrop.php +++ b/apps/contacts/ajax/savecrop.php @@ -62,17 +62,17 @@ if($data) { if($image->crop($x1, $y1, $w, $h)) { if(($image->width() <= 200 && $image->height() <= 200) || $image->resize(200)) { - $card = OC_Contacts_App::getContactVCard($id); - if(!$card) { + $vcard = OC_Contacts_App::getContactVCard($id); + if(!$vcard) { OC_Cache::remove($tmpkey); bailOut(OC_Contacts_App::$l10n ->t('Error getting contact object.')); } - if($card->__isset('PHOTO')) { + if($vcard->__isset('PHOTO')) { OCP\Util::writeLog('contacts', 'savecrop.php: PHOTO property exists.', OCP\Util::DEBUG); - $property = $card->__get('PHOTO'); + $property = $vcard->__get('PHOTO'); if(!$property) { OC_Cache::remove($tmpkey); bailOut(OC_Contacts_App::$l10n @@ -83,27 +83,28 @@ if($data) { = new Sabre_VObject_Parameter('ENCODING', 'b'); $property->parameters[] = new Sabre_VObject_Parameter('TYPE', $image->mimeType()); - $card->__set('PHOTO', $property); + $vcard->__set('PHOTO', $property); } else { OCP\Util::writeLog('contacts', 'savecrop.php: files: Adding PHOTO property.', OCP\Util::DEBUG); - $card->addProperty('PHOTO', + $vcard->addProperty('PHOTO', $image->__toString(), array('ENCODING' => 'b', 'TYPE' => $image->mimeType())); } $now = new DateTime; - $card->setString('REV', $now->format(DateTime::W3C)); - if(!OC_Contacts_VCard::edit($id, $card)) { + $vcard->setString('REV', $now->format(DateTime::W3C)); + if(!OC_Contacts_VCard::edit($id, $vcard)) { bailOut(OC_Contacts_App::$l10n->t('Error saving contact.')); } - $tmpl = new OCP\Template("contacts", "part.contactphoto"); - $tmpl->assign('id', $id); - $tmpl->assign('refresh', true); - $tmpl->assign('width', $image->width()); - $tmpl->assign('height', $image->height()); - $page = $tmpl->fetchPage(); - OCP\JSON::success(array('data' => array('page'=>$page))); + OCP\JSON::success(array( + 'data' => array( + 'id' => $id, + 'width' => $image->width(), + 'height' => $image->height(), + 'lastmodified' => OC_Contacts_App::lastModified($vcard)->format('U') + ) + )); } else { bailOut(OC_Contacts_App::$l10n->t('Error resizing image')); } diff --git a/apps/contacts/css/contacts.css b/apps/contacts/css/contacts.css index df9bba2dd3e..ad8762167b5 100644 --- a/apps/contacts/css/contacts.css +++ b/apps/contacts/css/contacts.css @@ -141,4 +141,7 @@ input[type="checkbox"] { width: 20px; height: 20px; vertical-align: bottom; } .addressbooks-settings .actions * { float: left; } .addressbooks-settings .actions input.name { width: 5em; } .addressbooks-settings .actions input.name { width: 7em; } +.addressbooks-settings a.action { opacity: 0.2; } +.addressbooks-settings a.action:hover { opacity: 1; } +.addressbooks-settings td.active, .addressbooks-settings td.action { width: 20px; } diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js index 9aec02557fc..67bfa9847ee 100644 --- a/apps/contacts/js/contacts.js +++ b/apps/contacts/js/contacts.js @@ -835,7 +835,7 @@ OC.Contacts={ OC.Contacts.propertyContainerFor(obj).data('checksum', ''); if(proptype == 'PHOTO') { OC.Contacts.Contacts.refreshThumbnail(OC.Contacts.Card.id); - OC.Contacts.Card.loadPhoto(true); + OC.Contacts.Card.loadPhoto(); } else if(proptype == 'NOTE') { $('#note').find('textarea').val(''); OC.Contacts.propertyContainerFor(obj).hide(); @@ -1218,9 +1218,9 @@ OC.Contacts={ } }); }, - loadPhoto:function(refresh){ + loadPhoto:function(){ var self = this; - var refreshstr = (refresh?'&refresh=1'+Math.random():'') + var refreshstr = ''; //'&refresh='+Math.random(); $('#phototools li a').tipsy('hide'); var wrapper = $('#contacts_details_photo_wrapper'); wrapper.addClass('loading').addClass('wait'); @@ -1278,7 +1278,7 @@ OC.Contacts={ var response=jQuery.parseJSON(target.contents().text()); if(response != undefined && response.status == 'success'){ // load cropped photo. - self.loadPhoto(true); + self.loadPhoto(); OC.Contacts.Card.data.PHOTO = true; }else{ OC.dialogs.alert(response.data.message, t('contacts', 'Error')); diff --git a/apps/contacts/js/settings.js b/apps/contacts/js/settings.js index ee8d889d722..69cf473e06a 100644 --- a/apps/contacts/js/settings.js +++ b/apps/contacts/js/settings.js @@ -90,8 +90,7 @@ OC.Contacts.Settings = OC.Contacts.Settings || { + '<td class="action"><a class="svg action globe" title="'+t('contacts', 'Show CardDav link')+'"></a></td>' + '<td class="action"><a class="svg action cloud" title="'+t('contacts', 'Show read-only VCF link')+'"></a></td>' + '<td class="action"><a class="svg action download" title="'+t('contacts', 'Download')+'" ' - + 'href="'+totalurl+'/'+encodeURIComponent(oc_current_user)+'/' - + encodeURIComponent(jsondata.data.addressbook.uri)+'?export"></a></td>' + + 'href="'+OC.linkTo('contacts', 'export.php')+'?bookid='+jsondata.data.addressbook.id+'"></a></td>' + '<td class="action"><a class="svg action edit" title="'+t('contacts', 'Edit')+'"></a></td>' + '<td class="action"><a class="svg action delete" title="'+t('contacts', 'Delete')+'"></a></td>' + '</tr>'); @@ -107,17 +106,27 @@ OC.Contacts.Settings = OC.Contacts.Settings || { } }); }, + showLink:function(id, row, link) { + console.log('row:', row.length); + row.next('tr.link').remove(); + var linkrow = $('<tr class="link"><td colspan="5"><input style="width: 95%;" type="text" value="'+link+'" /></td>' + + '<td colspan="3"><button>'+t('contacts', 'Cancel')+'</button></td></tr>').insertAfter(row); + linkrow.find('input').focus().select(); + linkrow.find('button').click(function() { + $(this).parents('tr').first().remove(); + }); + }, showCardDAV:function(id) { console.log('showCardDAV: ', id); var row = this.adrsettings.find('tr[data-id="'+id+'"]'); - this.adractions.find('.link').val(totalurl+'/'+encodeURIComponent(oc_current_user)+'/'); - this.showActions(['link','cancel']); + this.showLink(id, row, totalurl+'/'+encodeURIComponent(oc_current_user)); }, showVCF:function(id) { console.log('showVCF: ', id); var row = this.adrsettings.find('tr[data-id="'+id+'"]'); - this.adractions.find('.link').val(totalurl+'/'+encodeURIComponent(oc_current_user)+'/'+encodeURIComponent(row.data('uri'))+'?export'); - this.showActions(['link','cancel']); + var link = totalurl+'/'+encodeURIComponent(oc_current_user)+'/'+encodeURIComponent(row.data('uri'))+'?export'; + console.log(link); + this.showLink(id, row, link); } } }; diff --git a/apps/contacts/l10n/de.php b/apps/contacts/l10n/de.php index 08e28f3fd0d..5fa5bb4f9dd 100644 --- a/apps/contacts/l10n/de.php +++ b/apps/contacts/l10n/de.php @@ -108,6 +108,8 @@ "Next contact in list" => "Nächster Kontakt aus der Liste", "Previous contact in list" => "Vorheriger Kontakt aus der Liste", "Expand/collapse current addressbook" => "Ausklappen/Einklappen des Adressbuches", +"Next addressbook" => "Nächstes Adressbuch", +"Previous addressbook" => "Vorheriges Adressbuch", "Actions" => "Aktionen", "Refresh contacts list" => "Kontaktliste neu laden", "Add new contact" => "Neuen Kontakt hinzufügen", diff --git a/apps/contacts/l10n/fr.php b/apps/contacts/l10n/fr.php index 88521f84e88..9b4822bd976 100644 --- a/apps/contacts/l10n/fr.php +++ b/apps/contacts/l10n/fr.php @@ -63,6 +63,8 @@ "Result: " => "Résultat :", " imported, " => "importé,", " failed." => "échoué.", +"Displayname cannot be empty." => "Le nom d'affichage ne peut pas être vide.", +"Addressbook not found: " => "Carnet d'adresse introuvable : ", "This is not your addressbook." => "Ce n'est pas votre carnet d'adresses.", "Contact could not be found." => "Ce contact n'a pu être trouvé.", "Address" => "Adresse", @@ -97,6 +99,7 @@ "Contact" => "Contact", "Add Contact" => "Ajouter un Contact", "Import" => "Importer", +"Settings" => "Paramètres", "Addressbooks" => "Carnets d'adresses", "Close" => "Fermer", "Keyboard shortcuts" => "Raccourcis clavier", @@ -104,6 +107,8 @@ "Next contact in list" => "Contact suivant dans la liste", "Previous contact in list" => "Contact précédent dans la liste", "Expand/collapse current addressbook" => "Dé/Replier le carnet d'adresses courant", +"Next addressbook" => "Carnet d'adresses suivant", +"Previous addressbook" => "Carnet d'adresses précédent", "Actions" => "Actions", "Refresh contacts list" => "Actualiser la liste des contacts", "Add new contact" => "Ajouter un nouveau contact", @@ -190,9 +195,13 @@ "more info" => "Plus d'infos", "Primary address (Kontact et al)" => "Adresse principale", "iOS/OS X" => "iOS/OS X", +"Show CardDav link" => "Afficher le lien CardDav", "Download" => "Télécharger", "Edit" => "Modifier", "New Address Book" => "Nouveau Carnet d'adresses", +"Name" => "Nom", +"Description" => "Description", "Save" => "Sauvegarder", -"Cancel" => "Annuler" +"Cancel" => "Annuler", +"More..." => "Plus…" ); diff --git a/apps/contacts/lib/app.php b/apps/contacts/lib/app.php index e8d9abac417..f6ce213c49b 100644 --- a/apps/contacts/lib/app.php +++ b/apps/contacts/lib/app.php @@ -243,6 +243,18 @@ class OC_Contacts_App { self::getVCategories()->loadFromVObject($contact, true); } + /** + * @brief Get the last modification time. + * @param $vcard OC_VObject + * $return DateTime | null + */ + public static function lastModified($vcard) { + $rev = $vcard->getAsString('REV'); + if ($rev) { + return DateTime::createFromFormat(DateTime::W3C, $rev); + } + } + public static function setLastModifiedHeader($contact) { $rev = $contact->getAsString('REV'); if ($rev) { diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php index a93ca399d3a..4cc18027acf 100644 --- a/apps/contacts/lib/vcard.php +++ b/apps/contacts/lib/vcard.php @@ -282,12 +282,13 @@ class OC_Contacts_VCard{ /** * @brief Adds a card - * @param integer $aid Addressbook id - * @param OC_VObject $card vCard file - * @param string $uri the uri of the card, default based on the UID + * @param $aid integer Addressbook id + * @param $card OC_VObject vCard file + * @param $uri string the uri of the card, default based on the UID + * @param $isChecked boolean If the vCard should be checked for validity and version. * @return insertid on success or false. */ - public static function add($aid, OC_VObject $card, $uri=null, $isnew=false){ + public static function add($aid, OC_VObject $card, $uri=null, $isChecked=false){ if(is_null($card)) { OCP\Util::writeLog('contacts', 'OC_Contacts_VCard::add. No vCard supplied', OCP\Util::ERROR); return null; @@ -295,22 +296,13 @@ class OC_Contacts_VCard{ $addressbook = OC_Contacts_Addressbook::find($aid); if ($addressbook['userid'] != OCP\User::getUser()) { $sharedAddressbook = OCP\Share::getItemSharedWithBySource('addressbook', $aid); - if (!$sharedAddressbook) { + if (!$sharedAddressbook || !($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_CREATE)) { return false; } - } else { - $sharedAddressbook = false; } - if(!$isnew) { - if ($sharedAddressbook && !($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_UPDATE)) { - return false; - } + if(!$isChecked) { OC_Contacts_App::loadCategoriesFromVCard($card); self::updateValuesFromAdd($aid, $card); - } else { - if ($sharedAddressbook && !($sharedAddressbook['permissions'] & OCP\Share::PERMISSION_CREATE)) { - return false; - } } $card->setString('VERSION', '3.0'); // Add product ID is missing. diff --git a/apps/contacts/photo.php b/apps/contacts/photo.php index efdf157cd95..f5c8e6fe4bd 100644 --- a/apps/contacts/photo.php +++ b/apps/contacts/photo.php @@ -20,14 +20,15 @@ function getStandardImage() { } $id = isset($_GET['id']) ? $_GET['id'] : null; -$caching = isset($_GET['refresh']) ? 0 : null; +$etag = null; +$caching = null; if(is_null($id)) { getStandardImage(); } if(!extension_loaded('gd') || !function_exists('gd_info')) { - OCP\Util::writeLog('contacts', + OCP\Util::writeLog('contacts', 'photo.php. GD module not installed', OCP\Util::DEBUG); getStandardImage(); } @@ -39,25 +40,34 @@ if (!$image) { } // invalid vcard if (is_null($contact)) { - OCP\Util::writeLog('contacts', - 'photo.php. The VCard for ID ' . $id . ' is not RFC compatible', + OCP\Util::writeLog('contacts', + 'photo.php. The VCard for ID ' . $id . ' is not RFC compatible', OCP\Util::ERROR); } else { - OCP\Response::enableCaching($caching); - OC_Contacts_App::setLastModifiedHeader($contact); - // Photo :-) if ($image->loadFromBase64($contact->getAsString('PHOTO'))) { // OK - OCP\Response::setETagHeader(md5($contact->getAsString('PHOTO'))); + $etag = md5($contact->getAsString('PHOTO')); } else // Logo :-/ if ($image->loadFromBase64($contact->getAsString('LOGO'))) { // OK - OCP\Response::setETagHeader(md5($contact->getAsString('LOGO'))); + $etag = md5($contact->getAsString('LOGO')); } if ($image->valid()) { + $modified = OC_Contacts_App::lastModified($contact); + // Force refresh if modified within the last minute. + if(!is_null($modified)) { + $caching = (time() - $modified->format('U') > 60) ? null : 0; + } + OCP\Response::enableCaching($caching); + if(!is_null($modified)) { + OCP\Response::setLastModifiedHeader($modified); + } + if($etag) { + OCP\Response::setETagHeader($etag); + } $max_size = 200; if ($image->width() > $max_size || $image->height() > $max_size) { $image->resize($max_size); diff --git a/apps/contacts/templates/settings.php b/apps/contacts/templates/settings.php index c9713451c8a..e3536c7b461 100644 --- a/apps/contacts/templates/settings.php +++ b/apps/contacts/templates/settings.php @@ -27,8 +27,7 @@ </td> <td class="action"> <a class="svg action download" title="<?php echo $l->t('Download'); ?>" - href="<?php echo OCP\Util::linkToRemote('carddav').'addressbooks/'.OCP\USER::getUser().'/' - .rawurlencode($addressbook['uri']) ?>?export"></a> + href="<?php echo OCP\Util::linkToAbsolute('contacts', 'export.php'); ?>?bookid=<?php echo $addressbook['id'] ?>"></a> </td> <td class="action"> <a class="svg action edit" title="<?php echo $l->t("Edit"); ?>"></a> @@ -44,7 +43,6 @@ <button class="new"><?php echo $l->t('New Address Book') ?></button> <input class="name hidden" type="text" autofocus="autofocus" placeholder="<?php echo $l->t('Name'); ?>" /> <input class="description hidden" type="text" placeholder="<?php echo $l->t('Description'); ?>" /> - <input class="link hidden" style="width: 80%" type="text" autofocus="autofocus" /> <button class="save hidden"><?php echo $l->t('Save') ?></button> <button class="cancel hidden"><?php echo $l->t('Cancel') ?></button> </div> diff --git a/apps/contacts/thumbnail.php b/apps/contacts/thumbnail.php index 6deb5ca379e..1e3714ae6c6 100644 --- a/apps/contacts/thumbnail.php +++ b/apps/contacts/thumbnail.php @@ -26,27 +26,26 @@ OCP\App::checkAppEnabled('contacts'); session_write_close(); function getStandardImage() { - //OCP\Response::setExpiresHeader('P10D'); OCP\Response::enableCaching(); OCP\Response::redirect(OCP\Util::imagePath('contacts', 'person.png')); } if(!extension_loaded('gd') || !function_exists('gd_info')) { - OCP\Util::writeLog('contacts', + OCP\Util::writeLog('contacts', 'thumbnail.php. GD module not installed', OCP\Util::DEBUG); getStandardImage(); exit(); } $id = $_GET['id']; -$caching = isset($_GET['refresh']) ? 0 : null; +$caching = null; $contact = OC_Contacts_App::getContactVCard($id); // invalid vcard if(is_null($contact)) { - OCP\Util::writeLog('contacts', - 'thumbnail.php. The VCard for ID ' . $id . ' is not RFC compatible', + OCP\Util::writeLog('contacts', + 'thumbnail.php. The VCard for ID ' . $id . ' is not RFC compatible', OCP\Util::ERROR); getStandardImage(); exit(); @@ -60,30 +59,39 @@ $thumbnail_size = 23; $image = new OC_Image(); $photo = $contact->getAsString('PHOTO'); if($photo) { - OCP\Response::setETagHeader(md5($photo)); if($image->loadFromBase64($photo)) { if($image->centerCrop()) { if($image->resize($thumbnail_size)) { + $modified = OC_Contacts_App::lastModified($contact); + // Force refresh if modified within the last minute. + if(!is_null($modified)) { + $caching = (time() - $modified->format('U') > 60) ? null : 0; + } + OCP\Response::enableCaching($caching); + if(!is_null($modified)) { + OCP\Response::setLastModifiedHeader($modified); + } + OCP\Response::setETagHeader(md5($photo)); if($image->show()) { exit(); } else { - OCP\Util::writeLog('contacts', - 'thumbnail.php. Couldn\'t display thumbnail for ID ' . $id, + OCP\Util::writeLog('contacts', + 'thumbnail.php. Couldn\'t display thumbnail for ID ' . $id, OCP\Util::ERROR); } } else { - OCP\Util::writeLog('contacts', - 'thumbnail.php. Couldn\'t resize thumbnail for ID ' . $id, + OCP\Util::writeLog('contacts', + 'thumbnail.php. Couldn\'t resize thumbnail for ID ' . $id, OCP\Util::ERROR); } }else{ - OCP\Util::writeLog('contacts', - 'thumbnail.php. Couldn\'t crop thumbnail for ID ' . $id, + OCP\Util::writeLog('contacts', + 'thumbnail.php. Couldn\'t crop thumbnail for ID ' . $id, OCP\Util::ERROR); } } else { - OCP\Util::writeLog('contacts', - 'thumbnail.php. Couldn\'t load image string for ID ' . $id, + OCP\Util::writeLog('contacts', + 'thumbnail.php. Couldn\'t load image string for ID ' . $id, OCP\Util::ERROR); } } diff --git a/apps/files/ajax/mimeicon.php b/apps/files/ajax/mimeicon.php index 80d50f84528..dbb8b60112a 100644 --- a/apps/files/ajax/mimeicon.php +++ b/apps/files/ajax/mimeicon.php @@ -1,9 +1,3 @@ <?php -// no need for apps -$RUNTIME_NOAPPS=false; - -// Init owncloud - - print OC_Helper::mimetypeIcon($_GET['mime']); diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php index 1f4b076ee47..9569735d54c 100644 --- a/apps/files/l10n/de.php +++ b/apps/files/l10n/de.php @@ -9,12 +9,17 @@ "Files" => "Dateien", "Unshare" => "Nicht mehr teilen", "Delete" => "Löschen", +"already exists" => "ist bereits vorhanden", +"replace" => "Ersetzen", +"cancel" => "Abbrechen", +"replaced" => "Ersetzt", +"with" => "mit", "undo" => "rückgängig machen", "deleted" => "gelöscht", "generating ZIP-file, it may take some time." => "Erstelle ZIP-Datei. Dies kann eine Weile dauern.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Datei kann nicht hochgeladen werden da sie ein Verzeichniss ist oder 0 bytes hat.", +"Unable to upload your file as it is a directory or has 0 bytes" => "Datei kann nicht hochgeladen werden da sie ein Verzeichnis ist oder 0 Bytes hat.", "Upload Error" => "Fehler beim Hochladen", -"Pending" => "Anstehend", +"Pending" => "Ausstehend", "Upload cancelled." => "Hochladen abgebrochen.", "Invalid name, '/' is not allowed." => "Ungültiger Name, \"/\" ist nicht erlaubt.", "Size" => "Größe", @@ -36,7 +41,7 @@ "From url" => "Von der URL", "Upload" => "Hochladen", "Cancel upload" => "Upload abbrechen", -"Nothing in here. Upload something!" => "Alles leer. Lad’ was hoch!", +"Nothing in here. Upload something!" => "Alles leer. Lade etwas hoch!", "Name" => "Name", "Share" => "Teilen", "Download" => "Herunterladen", diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php index 77173d28364..aa6559022f7 100644 --- a/apps/files/l10n/fa.php +++ b/apps/files/l10n/fa.php @@ -8,6 +8,8 @@ "Failed to write to disk" => "نوشتن بر روی دیسک سخت ناموفق بود", "Files" => "فایل ها", "Delete" => "پاک کردن", +"already exists" => "وجود دارد", +"deleted" => "حذف شده", "generating ZIP-file, it may take some time." => "در حال ساخت فایل فشرده ممکن است زمان زیادی به طول بیانجامد", "Unable to upload your file as it is a directory or has 0 bytes" => "ناتوان در بارگذاری یا فایل یک پوشه است یا 0بایت دارد", "Upload Error" => "خطا در بار گذاری", diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php index e037c7a2f4b..70af377b170 100644 --- a/apps/files/l10n/fr.php +++ b/apps/files/l10n/fr.php @@ -9,6 +9,11 @@ "Files" => "Fichiers", "Unshare" => "Ne plus partager", "Delete" => "Supprimer", +"already exists" => "existe déjà", +"replace" => "remplacer", +"cancel" => "annuler", +"replaced" => "remplacé", +"with" => "avec", "undo" => "annuler", "deleted" => "supprimé", "generating ZIP-file, it may take some time." => "Générer un fichier ZIP, cela peut prendre du temps", diff --git a/apps/files_sharing/get.php b/apps/files_sharing/get.php index 70a5162d382..1d219719b2d 100644 --- a/apps/files_sharing/get.php +++ b/apps/files_sharing/get.php @@ -1,6 +1,4 @@ <?php -$RUNTIME_NOSETUPFS=true; //don't setup the fs yet - // only need authentication apps $RUNTIME_APPTYPES=array('authentication'); OC_App::loadApps($RUNTIME_APPTYPES); diff --git a/apps/files_sharing/sharedstorage.php b/apps/files_sharing/sharedstorage.php index ca811a16fef..fc2e6e32c7c 100644 --- a/apps/files_sharing/sharedstorage.php +++ b/apps/files_sharing/sharedstorage.php @@ -343,6 +343,25 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { public function fopen($path, $mode) { if ($source = $this->getSourcePath($path)) { + switch ($mode) { + case 'r+': + case 'rb+': + case 'w+': + case 'wb+': + case 'x+': + case 'xb+': + case 'a+': + case 'ab+': + case 'w': + case 'wb': + case 'x': + case 'xb': + case 'a': + case 'ab': + if (!$this->isUpdatable($path)) { + return false; + } + } $info = array( 'target' => $this->sharedFolder.$path, 'source' => $source, diff --git a/apps/media/ajax/autoupdate.php b/apps/media/ajax/autoupdate.php index c2dbf27a004..a5801f1a0e0 100644 --- a/apps/media/ajax/autoupdate.php +++ b/apps/media/ajax/autoupdate.php @@ -23,11 +23,6 @@ header('Content-type: text/html; charset=UTF-8') ; -//no apps or filesystem -$RUNTIME_NOAPPS=true; -$RUNTIME_NOSETUPFS=true; - - OCP\JSON::checkAppEnabled('media'); $autoUpdate=(isset($_GET['autoupdate']) and $_GET['autoupdate']=='true'); diff --git a/apps/remoteStorage/ajax/revokeToken.php b/apps/remoteStorage/ajax/revokeToken.php index 322d9ed7279..e6a68189945 100644 --- a/apps/remoteStorage/ajax/revokeToken.php +++ b/apps/remoteStorage/ajax/revokeToken.php @@ -25,10 +25,6 @@ * */ - -// Do not load FS ... -$RUNTIME_NOSETUPFS = true; - OCP\App::checkAppEnabled('remoteStorage'); require_once('remoteStorage/lib_remoteStorage.php'); diff --git a/apps/remoteStorage/auth.php b/apps/remoteStorage/auth.php index 99e2272d3ab..91ca43ea076 100644 --- a/apps/remoteStorage/auth.php +++ b/apps/remoteStorage/auth.php @@ -27,9 +27,6 @@ header("X-Frame-Options: Sameorigin"); -// Do not load FS ... -$RUNTIME_NOSETUPFS = true; - OCP\App::checkAppEnabled('remoteStorage'); require_once('Sabre/autoload.php'); require_once('lib_remoteStorage.php'); @@ -60,64 +57,23 @@ if($userId && $appUrl && $categories) { header('Location: '.$_GET['redirect_uri'].'#access_token='.$existingToken.'&token_type=bearer'); } else { //params ok, logged in ok, but need to click Allow still: -?> -<!DOCTYPE html> -<html> - <head> - <title>ownCloud</title> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <link rel="shortcut icon" href="../../../core/img/favicon.png" /><link rel="apple-touch-icon-precomposed" href="../../../core/img/favicon-touch.png" /> - <link rel="stylesheet" href="../../../core/css/styles.css" type="text/css" media="screen" /> - <link rel="stylesheet" href="../../../core/css/auth.css" type="text/css" media="screen" /> - </head> - <body id="body-login"> - <div id="login"> - <header> - <div id="header"> - <img src="../../../core/img/logo.png" alt="ownCloud" /> - </div> - </header> - <section id="main"> - <div id="oauth"> - <h2><img src="../../../core/img/remoteStorage-big.png" alt="remoteStorage" /></h2> - <p><strong><?php $appUrlParts = explode('/', $_GET['redirect_uri']); echo htmlentities($appUrlParts[2]); ?></strong> - requests read & write access to your - <?php - $categories = explode(',', htmlentities($_GET['scope'])); - if(!count($categories)) { - echo htmlentities($_GET['scope']); - } else { - echo '<em>'.$categories[0].'</em>'; - if(count($categories)==2) { - echo ' and <em>'.$categories[1].'</em>'; - } else if(count($categories)>2) { - for($i=1; $i<count($categories)-1; $i++) { - echo ', <em>'.$categories[$i].'</em>'; - } - echo ', and <em>'.$categories[$i].'</em>'; - } - } - ?>. - </p> - <form accept-charset="UTF-8" method="post"> - <input id="allow-auth" name="allow" type="submit" value="Allow" /> - <input id="deny-auth" name="deny" type="submit" value="Deny" /> - </form> - </div> - </section> - </div> - <footer><p class="info"><a href="http://owncloud.org/">ownCloud</a> – web services under your control</p></footer> - </body> -</html> -<?php - }//end 'need to click Allow still' + $appUrlParts = explode('/', $_GET['redirect_uri']); + $host = $appUrlParts[2]; + $categories = explode(',', $_GET['scope']); + OCP\Util::addStyle('', 'auth'); + OCP\Template::printGuestPage('remoteStorage', 'auth', array( + 'host' => $host, + 'categories' => $categories, + )); + }//end 'need to click Allow still' } else {//login not ok if($currUser) { die('You are logged in as '.$currUser.' instead of '.htmlentities($userId)); } else { - header('Location: /?redirect_url='.urlencode('/apps/remoteStorage/auth.php'.$_SERVER['PATH_INFO'].'?'.$_SERVER['QUERY_STRING'])); + // this will display the login page for us + OCP\Util::checkLoggedIn(); } } } else {//params not ok - die('please use e.g. /?app=remoteStorage&getfile=auth.php&userid=admin&redirect_uri=http://host/path&scope=...'); + die('please use e.g. '.OCP\Util::linkTo('remoteStorage', 'auth.php').'?userid=admin&redirect_uri=http://host/path&scope=...'); } diff --git a/apps/remoteStorage/templates/auth.php b/apps/remoteStorage/templates/auth.php new file mode 100644 index 00000000000..6a7054eabb0 --- /dev/null +++ b/apps/remoteStorage/templates/auth.php @@ -0,0 +1,28 @@ + <section id="main"> + <div id="oauth"> + <h2><img src="<?php echo image_path('', 'remoteStorage-big.png'); ?>" alt="remoteStorage" /></h2> + <p><strong><?php echo $_['host'] ?></strong> + requests read & write access to your + <?php + $categories = $_['categories']; + if(!count($categories)) { + echo $categories[0]; + } else { + echo '<em>'.$categories[0].'</em>'; + if(count($categories)==2) { + echo ' and <em>'.$categories[1].'</em>'; + } else if(count($categories)>2) { + for($i=1; $i<count($categories)-1; $i++) { + echo ', <em>'.$categories[$i].'</em>'; + } + echo ', and <em>'.$categories[$i].'</em>'; + } + } + ?>. + </p> + <form accept-charset="UTF-8" method="post"> + <input id="allow-auth" name="allow" type="submit" value="Allow" /> + <input id="deny-auth" name="deny" type="submit" value="Deny" /> + </form> + </div> + </section> diff --git a/core/l10n/de.php b/core/l10n/de.php index 121d17f6a8b..b0959a5412b 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -39,8 +39,8 @@ "Admin" => "Admin", "Help" => "Hilfe", "Access forbidden" => "Zugang verboten", -"Cloud not found" => "Cloud nicht verfügbar", -"Edit categories" => "Kategorien ändern", +"Cloud not found" => "Cloud nicht gefunden", +"Edit categories" => "Kategorien editieren", "Add" => "Hinzufügen", "Create an <strong>admin account</strong>" => "<strong>Administrator-Konto</strong> anlegen", "Password" => "Passwort", @@ -53,7 +53,7 @@ "Database name" => "Datenbank-Name", "Database host" => "Datenbank-Host", "Finish setup" => "Installation abschließen", -"web services under your control" => "web services under your control", +"web services under your control" => "Web Services unter ihrer Kontrolle", "Log out" => "Abmelden", "Lost your password?" => "Passwort vergessen?", "remember" => "merken", diff --git a/files/webdav.php b/files/webdav.php index 53673dbeca2..c19c4c6b72f 100644 --- a/files/webdav.php +++ b/files/webdav.php @@ -23,8 +23,6 @@ * */ -// Do not load FS ... -$RUNTIME_NOSETUPFS = true; // only need filesystem apps $RUNTIME_APPTYPES=array('filesystem','authentication'); require_once('../lib/base.php'); diff --git a/index.php b/index.php index e3c94adf66f..4ffd013aa86 100755 --- a/index.php +++ b/index.php @@ -26,98 +26,21 @@ $RUNTIME_NOAPPS = TRUE; //no apps, yet require_once('lib/base.php'); -// Setup required : -$not_installed = !OC_Config::getValue('installed', false); -if($not_installed) { - // Check for autosetup: - $autosetup_file = OC::$SERVERROOT."/config/autoconfig.php"; - if( file_exists( $autosetup_file )){ - OC_Log::write('core','Autoconfig file found, setting up owncloud...',OC_Log::INFO); - include( $autosetup_file ); - $_POST['install'] = 'true'; - $_POST = array_merge ($_POST, $AUTOCONFIG); - unlink($autosetup_file); - } - OC_Util::addScript('setup'); - require_once('setup.php'); - exit(); -} - -// Handle WebDAV -if($_SERVER['REQUEST_METHOD']=='PROPFIND'){ - header('location: '.OC_Helper::linkToRemote('webdav')); - exit(); -} -elseif(!OC_User::isLoggedIn() && substr(OC::$REQUESTEDFILE,-3) == 'css'){ - OC_App::loadApps(); - OC::loadfile(); -} -// Someone is logged in : -elseif(OC_User::isLoggedIn()) { - OC_App::loadApps(); - if(isset($_GET["logout"]) and ($_GET["logout"])) { - OC_User::logout(); - header("Location: ".OC::$WEBROOT.'/'); - exit(); - }else{ - if(is_null(OC::$REQUESTEDFILE)){ - OC::loadapp(); - }else{ - OC::loadfile(); - } - } - -// For all others cases, we display the guest page : -} else { +if (!OC::handleRequest()) { +// Not handled -> we display the login page: OC_App::loadApps(array('prelogin')); $error = false; // remember was checked after last login - if(isset($_COOKIE["oc_remember_login"]) && isset($_COOKIE["oc_token"]) && isset($_COOKIE["oc_username"]) && $_COOKIE["oc_remember_login"]) { - OC_App::loadApps(array('authentication')); - if(defined("DEBUG") && DEBUG) { - OC_Log::write('core','Trying to login from cookie',OC_Log::DEBUG); - } - // confirm credentials in cookie - if(isset($_COOKIE['oc_token']) && OC_User::userExists($_COOKIE['oc_username']) && - OC_Preferences::getValue($_COOKIE['oc_username'], "login", "token") == $_COOKIE['oc_token']) { - OC_User::setUserId($_COOKIE['oc_username']); - OC_Util::redirectToDefaultPage(); - } - else { - OC_User::unsetMagicInCookie(); - } + if (OC::tryRememberLogin()) { + // nothing more to do // Someone wants to log in : - } elseif(isset($_POST["user"]) and isset($_POST['password']) and isset($_SESSION['sectoken']) and isset($_POST['sectoken']) and ($_SESSION['sectoken']==$_POST['sectoken']) ) { - OC_App::loadApps(); - if(OC_User::login($_POST["user"], $_POST["password"])) { - if(!empty($_POST["remember_login"])){ - if(defined("DEBUG") && DEBUG) { - OC_Log::write('core','Setting remember login to cookie',OC_Log::DEBUG); - } - $token = md5($_POST["user"].time().$_POST['password']); - OC_Preferences::setValue($_POST['user'], 'login', 'token', $token); - OC_User::setMagicInCookie($_POST["user"], $token); - } - else { - OC_User::unsetMagicInCookie(); - } - OC_Util::redirectToDefaultPage(); - } else { - $error = true; - } + } elseif (OC::tryFormLogin()) { + $error = true; // The user is already authenticated using Apaches AuthType Basic... very usable in combination with LDAP - } elseif(isset($_SERVER["PHP_AUTH_USER"]) && isset($_SERVER["PHP_AUTH_PW"])){ - OC_App::loadApps(array('authentication')); - if (OC_User::login($_SERVER["PHP_AUTH_USER"],$_SERVER["PHP_AUTH_PW"])) { - //OC_Log::write('core',"Logged in with HTTP Authentication",OC_Log::DEBUG); - OC_User::unsetMagicInCookie(); - $_REQUEST['redirect_url'] = (isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:''); - OC_Util::redirectToDefaultPage(); - }else{ - $error = true; - } + } elseif(OC::tryBasicAuthLogin()) { + $error = true; } if(!array_key_exists('sectoken', $_SESSION) || (array_key_exists('sectoken', $_SESSION) && is_null(OC::$REQUESTEDFILE)) || substr(OC::$REQUESTEDFILE, -3) == 'php'){ $sectoken=rand(1000000,9999999); diff --git a/l10n/ca/settings.po b/l10n/ca/settings.po index 0909e05d48e..4157d36cb19 100644 --- a/l10n/ca/settings.po +++ b/l10n/ca/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-05 19:00+0200\n" -"PO-Revision-Date: 2012-08-05 17:01+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:05+0200\n" +"PO-Revision-Date: 2012-08-06 07:32+0000\n" +"Last-Translator: rogerc <rcalvoi@yahoo.com>\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,7 +21,7 @@ msgstr "" #: ajax/apps/ocs.php:23 msgid "Unable to load list from App Store" -msgstr "" +msgstr "No s'ha pogut carregar la llista des de l'App Store" #: ajax/lostpassword.php:14 msgid "Email saved" @@ -49,7 +49,7 @@ msgstr "S'ha canviat l'idioma" #: js/apps.js:18 msgid "Error" -msgstr "" +msgstr "Error" #: js/apps.js:39 js/apps.js:73 msgid "Disable" diff --git a/l10n/de/contacts.po b/l10n/de/contacts.po index e41c0bc864d..05b7ba69ed5 100644 --- a/l10n/de/contacts.po +++ b/l10n/de/contacts.po @@ -22,8 +22,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-04 02:02+0200\n" -"PO-Revision-Date: 2012-08-04 00:02+0000\n" +"POT-Creation-Date: 2012-08-07 02:04+0200\n" +"PO-Revision-Date: 2012-08-06 16:13+0000\n" "Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" @@ -489,11 +489,11 @@ msgstr "Ausklappen/Einklappen des Adressbuches" #: templates/index.php:48 msgid "Next addressbook" -msgstr "" +msgstr "Nächstes Adressbuch" #: templates/index.php:50 msgid "Previous addressbook" -msgstr "" +msgstr "Vorheriges Adressbuch" #: templates/index.php:54 msgid "Actions" @@ -545,7 +545,7 @@ msgstr "Name ändern" #: templates/part.contact.php:40 templates/part.contact.php:42 #: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:34 +#: templates/part.contact.php:50 templates/settings.php:33 msgid "Delete" msgstr "Löschen" @@ -856,30 +856,30 @@ msgstr "Schreibgeschützten VCF-Link anzeigen" msgid "Download" msgstr "Herunterladen" -#: templates/settings.php:31 +#: templates/settings.php:30 msgid "Edit" msgstr "Bearbeiten" -#: templates/settings.php:41 +#: templates/settings.php:40 msgid "New Address Book" msgstr "Neues Adressbuch" -#: templates/settings.php:42 +#: templates/settings.php:41 msgid "Name" msgstr "Name" -#: templates/settings.php:43 +#: templates/settings.php:42 msgid "Description" msgstr "Beschreibung" -#: templates/settings.php:45 +#: templates/settings.php:43 msgid "Save" msgstr "Speichern" -#: templates/settings.php:46 +#: templates/settings.php:44 msgid "Cancel" msgstr "Abbrechen" -#: templates/settings.php:51 +#: templates/settings.php:49 msgid "More..." msgstr "Mehr..." diff --git a/l10n/de/core.po b/l10n/de/core.po index bee17cb2809..2360a0297ae 100644 --- a/l10n/de/core.po +++ b/l10n/de/core.po @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-02 02:02+0200\n" -"PO-Revision-Date: 2012-08-02 00:03+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:04+0200\n" +"PO-Revision-Date: 2012-08-06 19:45+0000\n" +"Last-Translator: designpoint <info@designpoint.ch>\n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -45,51 +45,51 @@ msgstr "ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" msgid "Settings" msgstr "Einstellungen" -#: js/js.js:573 +#: js/js.js:572 msgid "January" msgstr "Januar" -#: js/js.js:573 +#: js/js.js:572 msgid "February" msgstr "Februar" -#: js/js.js:573 +#: js/js.js:572 msgid "March" msgstr "März" -#: js/js.js:573 +#: js/js.js:572 msgid "April" msgstr "April" -#: js/js.js:573 +#: js/js.js:572 msgid "May" msgstr "Mai" -#: js/js.js:573 +#: js/js.js:572 msgid "June" msgstr "Juni" -#: js/js.js:574 +#: js/js.js:573 msgid "July" msgstr "Juli" -#: js/js.js:574 +#: js/js.js:573 msgid "August" msgstr "August" -#: js/js.js:574 +#: js/js.js:573 msgid "September" msgstr "September" -#: js/js.js:574 +#: js/js.js:573 msgid "October" msgstr "Oktober" -#: js/js.js:574 +#: js/js.js:573 msgid "November" msgstr "November" -#: js/js.js:574 +#: js/js.js:573 msgid "December" msgstr "Dezember" @@ -188,11 +188,11 @@ msgstr "Zugang verboten" #: templates/404.php:12 msgid "Cloud not found" -msgstr "Cloud nicht verfügbar" +msgstr "Cloud nicht gefunden" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" -msgstr "Kategorien ändern" +msgstr "Kategorien editieren" #: templates/edit_categories_dialog.php:14 msgid "Add" @@ -245,7 +245,7 @@ msgstr "Installation abschließen" #: templates/layout.guest.php:42 msgid "web services under your control" -msgstr "web services under your control" +msgstr "Web Services unter ihrer Kontrolle" #: templates/layout.user.php:49 msgid "Log out" diff --git a/l10n/de/files.po b/l10n/de/files.po index e79d129b345..f495a374d08 100644 --- a/l10n/de/files.po +++ b/l10n/de/files.po @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-31 20:54+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:04+0200\n" +"PO-Revision-Date: 2012-08-06 20:04+0000\n" +"Last-Translator: designpoint <info@designpoint.ch>\n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -69,23 +69,23 @@ msgstr "Löschen" #: js/filelist.js:141 msgid "already exists" -msgstr "" +msgstr "ist bereits vorhanden" #: js/filelist.js:141 msgid "replace" -msgstr "" +msgstr "Ersetzen" #: js/filelist.js:141 msgid "cancel" -msgstr "" +msgstr "Abbrechen" #: js/filelist.js:195 msgid "replaced" -msgstr "" +msgstr "Ersetzt" #: js/filelist.js:195 msgid "with" -msgstr "" +msgstr "mit" #: js/filelist.js:195 js/filelist.js:256 msgid "undo" @@ -101,7 +101,7 @@ msgstr "Erstelle ZIP-Datei. Dies kann eine Weile dauern." #: js/files.js:199 msgid "Unable to upload your file as it is a directory or has 0 bytes" -msgstr "Datei kann nicht hochgeladen werden da sie ein Verzeichniss ist oder 0 bytes hat." +msgstr "Datei kann nicht hochgeladen werden da sie ein Verzeichnis ist oder 0 Bytes hat." #: js/files.js:199 msgid "Upload Error" @@ -109,7 +109,7 @@ msgstr "Fehler beim Hochladen" #: js/files.js:227 js/files.js:318 js/files.js:347 msgid "Pending" -msgstr "Anstehend" +msgstr "Ausstehend" #: js/files.js:332 msgid "Upload cancelled." @@ -119,27 +119,27 @@ msgstr "Hochladen abgebrochen." msgid "Invalid name, '/' is not allowed." msgstr "Ungültiger Name, \"/\" ist nicht erlaubt." -#: js/files.js:631 templates/index.php:55 +#: js/files.js:694 templates/index.php:55 msgid "Size" msgstr "Größe" -#: js/files.js:632 templates/index.php:56 +#: js/files.js:695 templates/index.php:56 msgid "Modified" msgstr "Bearbeitet" -#: js/files.js:659 +#: js/files.js:722 msgid "folder" msgstr "Ordner" -#: js/files.js:661 +#: js/files.js:724 msgid "folders" msgstr "Ordner" -#: js/files.js:669 +#: js/files.js:732 msgid "file" msgstr "Datei" -#: js/files.js:671 +#: js/files.js:734 msgid "files" msgstr "Dateien" @@ -197,7 +197,7 @@ msgstr "Upload abbrechen" #: templates/index.php:39 msgid "Nothing in here. Upload something!" -msgstr "Alles leer. Lad’ was hoch!" +msgstr "Alles leer. Lade etwas hoch!" #: templates/index.php:47 msgid "Name" diff --git a/l10n/de/settings.po b/l10n/de/settings.po index 4525a95c34c..30f4a024dde 100644 --- a/l10n/de/settings.po +++ b/l10n/de/settings.po @@ -15,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-05 19:00+0200\n" -"PO-Revision-Date: 2012-08-05 17:01+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:05+0200\n" +"PO-Revision-Date: 2012-08-06 19:52+0000\n" +"Last-Translator: designpoint <info@designpoint.ch>\n" "Language-Team: German (http://www.transifex.com/projects/p/owncloud/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,7 +27,7 @@ msgstr "" #: ajax/apps/ocs.php:23 msgid "Unable to load list from App Store" -msgstr "" +msgstr "Liste der Apps im Store konnte nicht geladen werden." #: ajax/lostpassword.php:14 msgid "Email saved" @@ -55,7 +55,7 @@ msgstr "Sprache geändert" #: js/apps.js:18 msgid "Error" -msgstr "" +msgstr "Fehler" #: js/apps.js:39 js/apps.js:73 msgid "Disable" @@ -115,7 +115,7 @@ msgstr "Große Dateien verwalten" #: templates/help.php:10 msgid "Ask a question" -msgstr "Stell' eine Frage" +msgstr "Stell eine Frage" #: templates/help.php:22 msgid "Problems connecting to help database." diff --git a/l10n/fa/files.po b/l10n/fa/files.po index 636f1077ab5..d83a2a2427f 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/files.po @@ -4,13 +4,14 @@ # # Translators: # Hossein nag <h.sname@yahoo.com>, 2012. +# vahid chakoshy <vchakoshy@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-31 20:54+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:04+0200\n" +"PO-Revision-Date: 2012-08-06 01:10+0000\n" +"Last-Translator: vahid chakoshy <vchakoshy@gmail.com>\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -62,7 +63,7 @@ msgstr "پاک کردن" #: js/filelist.js:141 msgid "already exists" -msgstr "" +msgstr "وجود دارد" #: js/filelist.js:141 msgid "replace" @@ -86,7 +87,7 @@ msgstr "" #: js/filelist.js:256 msgid "deleted" -msgstr "" +msgstr "حذف شده" #: js/files.js:170 msgid "generating ZIP-file, it may take some time." @@ -112,27 +113,27 @@ msgstr "بار گذاری لغو شد" msgid "Invalid name, '/' is not allowed." msgstr "نام نامناسب '/' غیرفعال است" -#: js/files.js:631 templates/index.php:55 +#: js/files.js:694 templates/index.php:55 msgid "Size" msgstr "اندازه" -#: js/files.js:632 templates/index.php:56 +#: js/files.js:695 templates/index.php:56 msgid "Modified" msgstr "تغییر یافته" -#: js/files.js:659 +#: js/files.js:722 msgid "folder" msgstr "پوشه" -#: js/files.js:661 +#: js/files.js:724 msgid "folders" msgstr "پوشه ها" -#: js/files.js:669 +#: js/files.js:732 msgid "file" msgstr "پرونده" -#: js/files.js:671 +#: js/files.js:734 msgid "files" msgstr "پرونده ها" diff --git a/l10n/fa/settings.po b/l10n/fa/settings.po index a1f86934a11..1959264ab44 100644 --- a/l10n/fa/settings.po +++ b/l10n/fa/settings.po @@ -4,13 +4,14 @@ # # Translators: # Hossein nag <h.sname@yahoo.com>, 2012. +# vahid chakoshy <vchakoshy@gmail.com>, 2012. msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-05 19:00+0200\n" -"PO-Revision-Date: 2012-08-05 17:01+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:05+0200\n" +"PO-Revision-Date: 2012-08-06 01:13+0000\n" +"Last-Translator: vahid chakoshy <vchakoshy@gmail.com>\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -48,7 +49,7 @@ msgstr "زبان تغییر کرد" #: js/apps.js:18 msgid "Error" -msgstr "" +msgstr "خطا" #: js/apps.js:39 js/apps.js:73 msgid "Disable" @@ -68,7 +69,7 @@ msgstr "__language_name__" #: templates/admin.php:14 msgid "Security Warning" -msgstr "" +msgstr "اخطار امنیتی" #: templates/admin.php:28 msgid "Log" diff --git a/l10n/fi/bookmarks.po b/l10n/fi/bookmarks.po new file mode 100644 index 00000000000..eb0373eb8ac --- /dev/null +++ b/l10n/fi/bookmarks.po @@ -0,0 +1,60 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2012-07-27 22:17+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: appinfo/app.php:14 +msgid "Bookmarks" +msgstr "" + +#: bookmarksHelper.php:99 +msgid "unnamed" +msgstr "" + +#: templates/bookmarklet.php:5 +msgid "" +"Drag this to your browser bookmarks and click it, when you want to bookmark " +"a webpage quickly:" +msgstr "" + +#: templates/bookmarklet.php:7 +msgid "Read later" +msgstr "" + +#: templates/list.php:13 +msgid "Address" +msgstr "" + +#: templates/list.php:14 +msgid "Title" +msgstr "" + +#: templates/list.php:15 +msgid "Tags" +msgstr "" + +#: templates/list.php:16 +msgid "Save bookmark" +msgstr "" + +#: templates/list.php:22 +msgid "You have no bookmarks" +msgstr "" + +#: templates/settings.php:11 +msgid "Bookmarklet <br />" +msgstr "" diff --git a/l10n/fi/calendar.po b/l10n/fi/calendar.po new file mode 100644 index 00000000000..8bf64c073a3 --- /dev/null +++ b/l10n/fi/calendar.po @@ -0,0 +1,814 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2011-09-03 16:52+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/cache/status.php:19 +msgid "Not all calendars are completely cached" +msgstr "" + +#: ajax/cache/status.php:21 +msgid "Everything seems to be completely cached" +msgstr "" + +#: ajax/categories/rescan.php:29 +msgid "No calendars found." +msgstr "" + +#: ajax/categories/rescan.php:37 +msgid "No events found." +msgstr "" + +#: ajax/event/edit.form.php:20 +msgid "Wrong calendar" +msgstr "" + +#: ajax/import/dropimport.php:29 ajax/import/import.php:64 +msgid "" +"The file contained either no events or all events are already saved in your " +"calendar." +msgstr "" + +#: ajax/import/dropimport.php:31 ajax/import/import.php:67 +msgid "events has been saved in the new calendar" +msgstr "" + +#: ajax/import/import.php:56 +msgid "Import failed" +msgstr "" + +#: ajax/import/import.php:69 +msgid "events has been saved in your calendar" +msgstr "" + +#: ajax/settings/guesstimezone.php:25 +msgid "New Timezone:" +msgstr "" + +#: ajax/settings/settimezone.php:23 +msgid "Timezone changed" +msgstr "" + +#: ajax/settings/settimezone.php:25 +msgid "Invalid request" +msgstr "" + +#: appinfo/app.php:35 templates/calendar.php:15 +#: templates/part.eventform.php:33 templates/part.showevent.php:33 +#: templates/settings.php:12 +msgid "Calendar" +msgstr "" + +#: js/calendar.js:828 +msgid "ddd" +msgstr "" + +#: js/calendar.js:829 +msgid "ddd M/d" +msgstr "" + +#: js/calendar.js:830 +msgid "dddd M/d" +msgstr "" + +#: js/calendar.js:833 +msgid "MMMM yyyy" +msgstr "" + +#: js/calendar.js:835 +msgid "MMM d[ yyyy]{ '—'[ MMM] d yyyy}" +msgstr "" + +#: js/calendar.js:837 +msgid "dddd, MMM d, yyyy" +msgstr "" + +#: lib/app.php:121 +msgid "Birthday" +msgstr "" + +#: lib/app.php:122 +msgid "Business" +msgstr "" + +#: lib/app.php:123 +msgid "Call" +msgstr "" + +#: lib/app.php:124 +msgid "Clients" +msgstr "" + +#: lib/app.php:125 +msgid "Deliverer" +msgstr "" + +#: lib/app.php:126 +msgid "Holidays" +msgstr "" + +#: lib/app.php:127 +msgid "Ideas" +msgstr "" + +#: lib/app.php:128 +msgid "Journey" +msgstr "" + +#: lib/app.php:129 +msgid "Jubilee" +msgstr "" + +#: lib/app.php:130 +msgid "Meeting" +msgstr "" + +#: lib/app.php:131 +msgid "Other" +msgstr "" + +#: lib/app.php:132 +msgid "Personal" +msgstr "" + +#: lib/app.php:133 +msgid "Projects" +msgstr "" + +#: lib/app.php:134 +msgid "Questions" +msgstr "" + +#: lib/app.php:135 +msgid "Work" +msgstr "" + +#: lib/app.php:351 lib/app.php:361 +msgid "by" +msgstr "" + +#: lib/app.php:359 lib/app.php:399 +msgid "unnamed" +msgstr "" + +#: lib/import.php:184 templates/calendar.php:12 +#: templates/part.choosecalendar.php:22 +msgid "New Calendar" +msgstr "" + +#: lib/object.php:372 +msgid "Does not repeat" +msgstr "" + +#: lib/object.php:373 +msgid "Daily" +msgstr "" + +#: lib/object.php:374 +msgid "Weekly" +msgstr "" + +#: lib/object.php:375 +msgid "Every Weekday" +msgstr "" + +#: lib/object.php:376 +msgid "Bi-Weekly" +msgstr "" + +#: lib/object.php:377 +msgid "Monthly" +msgstr "" + +#: lib/object.php:378 +msgid "Yearly" +msgstr "" + +#: lib/object.php:388 +msgid "never" +msgstr "" + +#: lib/object.php:389 +msgid "by occurrences" +msgstr "" + +#: lib/object.php:390 +msgid "by date" +msgstr "" + +#: lib/object.php:400 +msgid "by monthday" +msgstr "" + +#: lib/object.php:401 +msgid "by weekday" +msgstr "" + +#: lib/object.php:411 templates/calendar.php:5 templates/settings.php:42 +msgid "Monday" +msgstr "" + +#: lib/object.php:412 templates/calendar.php:5 +msgid "Tuesday" +msgstr "" + +#: lib/object.php:413 templates/calendar.php:5 +msgid "Wednesday" +msgstr "" + +#: lib/object.php:414 templates/calendar.php:5 +msgid "Thursday" +msgstr "" + +#: lib/object.php:415 templates/calendar.php:5 +msgid "Friday" +msgstr "" + +#: lib/object.php:416 templates/calendar.php:5 +msgid "Saturday" +msgstr "" + +#: lib/object.php:417 templates/calendar.php:5 templates/settings.php:43 +msgid "Sunday" +msgstr "" + +#: lib/object.php:427 +msgid "events week of month" +msgstr "" + +#: lib/object.php:428 +msgid "first" +msgstr "" + +#: lib/object.php:429 +msgid "second" +msgstr "" + +#: lib/object.php:430 +msgid "third" +msgstr "" + +#: lib/object.php:431 +msgid "fourth" +msgstr "" + +#: lib/object.php:432 +msgid "fifth" +msgstr "" + +#: lib/object.php:433 +msgid "last" +msgstr "" + +#: lib/object.php:467 templates/calendar.php:7 +msgid "January" +msgstr "" + +#: lib/object.php:468 templates/calendar.php:7 +msgid "February" +msgstr "" + +#: lib/object.php:469 templates/calendar.php:7 +msgid "March" +msgstr "" + +#: lib/object.php:470 templates/calendar.php:7 +msgid "April" +msgstr "" + +#: lib/object.php:471 templates/calendar.php:7 +msgid "May" +msgstr "" + +#: lib/object.php:472 templates/calendar.php:7 +msgid "June" +msgstr "" + +#: lib/object.php:473 templates/calendar.php:7 +msgid "July" +msgstr "" + +#: lib/object.php:474 templates/calendar.php:7 +msgid "August" +msgstr "" + +#: lib/object.php:475 templates/calendar.php:7 +msgid "September" +msgstr "" + +#: lib/object.php:476 templates/calendar.php:7 +msgid "October" +msgstr "" + +#: lib/object.php:477 templates/calendar.php:7 +msgid "November" +msgstr "" + +#: lib/object.php:478 templates/calendar.php:7 +msgid "December" +msgstr "" + +#: lib/object.php:488 +msgid "by events date" +msgstr "" + +#: lib/object.php:489 +msgid "by yearday(s)" +msgstr "" + +#: lib/object.php:490 +msgid "by weeknumber(s)" +msgstr "" + +#: lib/object.php:491 +msgid "by day and month" +msgstr "" + +#: lib/search.php:35 lib/search.php:37 lib/search.php:40 +msgid "Date" +msgstr "" + +#: lib/search.php:43 +msgid "Cal." +msgstr "" + +#: templates/calendar.php:6 +msgid "Sun." +msgstr "" + +#: templates/calendar.php:6 +msgid "Mon." +msgstr "" + +#: templates/calendar.php:6 +msgid "Tue." +msgstr "" + +#: templates/calendar.php:6 +msgid "Wed." +msgstr "" + +#: templates/calendar.php:6 +msgid "Thu." +msgstr "" + +#: templates/calendar.php:6 +msgid "Fri." +msgstr "" + +#: templates/calendar.php:6 +msgid "Sat." +msgstr "" + +#: templates/calendar.php:8 +msgid "Jan." +msgstr "" + +#: templates/calendar.php:8 +msgid "Feb." +msgstr "" + +#: templates/calendar.php:8 +msgid "Mar." +msgstr "" + +#: templates/calendar.php:8 +msgid "Apr." +msgstr "" + +#: templates/calendar.php:8 +msgid "May." +msgstr "" + +#: templates/calendar.php:8 +msgid "Jun." +msgstr "" + +#: templates/calendar.php:8 +msgid "Jul." +msgstr "" + +#: templates/calendar.php:8 +msgid "Aug." +msgstr "" + +#: templates/calendar.php:8 +msgid "Sep." +msgstr "" + +#: templates/calendar.php:8 +msgid "Oct." +msgstr "" + +#: templates/calendar.php:8 +msgid "Nov." +msgstr "" + +#: templates/calendar.php:8 +msgid "Dec." +msgstr "" + +#: templates/calendar.php:11 +msgid "All day" +msgstr "" + +#: templates/calendar.php:13 +msgid "Missing fields" +msgstr "" + +#: templates/calendar.php:14 templates/part.eventform.php:19 +#: templates/part.showevent.php:11 +msgid "Title" +msgstr "" + +#: templates/calendar.php:16 +msgid "From Date" +msgstr "" + +#: templates/calendar.php:17 +msgid "From Time" +msgstr "" + +#: templates/calendar.php:18 +msgid "To Date" +msgstr "" + +#: templates/calendar.php:19 +msgid "To Time" +msgstr "" + +#: templates/calendar.php:20 +msgid "The event ends before it starts" +msgstr "" + +#: templates/calendar.php:21 +msgid "There was a database fail" +msgstr "" + +#: templates/calendar.php:38 +msgid "Week" +msgstr "" + +#: templates/calendar.php:39 +msgid "Month" +msgstr "" + +#: templates/calendar.php:40 +msgid "List" +msgstr "" + +#: templates/calendar.php:44 +msgid "Today" +msgstr "" + +#: templates/calendar.php:45 +msgid "Calendars" +msgstr "" + +#: templates/calendar.php:59 +msgid "There was a fail, while parsing the file." +msgstr "" + +#: templates/part.choosecalendar.php:1 +msgid "Choose active calendars" +msgstr "" + +#: templates/part.choosecalendar.php:2 +msgid "Your calendars" +msgstr "" + +#: templates/part.choosecalendar.php:27 +#: templates/part.choosecalendar.rowfields.php:11 +msgid "CalDav Link" +msgstr "" + +#: templates/part.choosecalendar.php:31 +msgid "Shared calendars" +msgstr "" + +#: templates/part.choosecalendar.php:48 +msgid "No shared calendars" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:8 +msgid "Share Calendar" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:14 +msgid "Download" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:17 +msgid "Edit" +msgstr "" + +#: templates/part.choosecalendar.rowfields.php:20 +#: templates/part.editevent.php:9 +msgid "Delete" +msgstr "" + +#: templates/part.choosecalendar.rowfields.shared.php:4 +msgid "shared with you by" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "New calendar" +msgstr "" + +#: templates/part.editcalendar.php:9 +msgid "Edit calendar" +msgstr "" + +#: templates/part.editcalendar.php:12 +msgid "Displayname" +msgstr "" + +#: templates/part.editcalendar.php:23 +msgid "Active" +msgstr "" + +#: templates/part.editcalendar.php:29 +msgid "Calendar color" +msgstr "" + +#: templates/part.editcalendar.php:42 +msgid "Save" +msgstr "" + +#: templates/part.editcalendar.php:42 templates/part.editevent.php:8 +#: templates/part.newevent.php:6 +msgid "Submit" +msgstr "" + +#: templates/part.editcalendar.php:43 +msgid "Cancel" +msgstr "" + +#: templates/part.editevent.php:1 +msgid "Edit an event" +msgstr "" + +#: templates/part.editevent.php:10 +msgid "Export" +msgstr "" + +#: templates/part.eventform.php:8 templates/part.showevent.php:3 +msgid "Eventinfo" +msgstr "" + +#: templates/part.eventform.php:9 templates/part.showevent.php:4 +msgid "Repeating" +msgstr "" + +#: templates/part.eventform.php:10 templates/part.showevent.php:5 +msgid "Alarm" +msgstr "" + +#: templates/part.eventform.php:11 templates/part.showevent.php:6 +msgid "Attendees" +msgstr "" + +#: templates/part.eventform.php:13 +msgid "Share" +msgstr "" + +#: templates/part.eventform.php:21 +msgid "Title of the Event" +msgstr "" + +#: templates/part.eventform.php:27 templates/part.showevent.php:19 +msgid "Category" +msgstr "" + +#: templates/part.eventform.php:29 +msgid "Separate categories with commas" +msgstr "" + +#: templates/part.eventform.php:30 +msgid "Edit categories" +msgstr "" + +#: templates/part.eventform.php:56 templates/part.showevent.php:52 +msgid "All Day Event" +msgstr "" + +#: templates/part.eventform.php:60 templates/part.showevent.php:56 +msgid "From" +msgstr "" + +#: templates/part.eventform.php:68 templates/part.showevent.php:64 +msgid "To" +msgstr "" + +#: templates/part.eventform.php:76 templates/part.showevent.php:72 +msgid "Advanced options" +msgstr "" + +#: templates/part.eventform.php:81 templates/part.showevent.php:77 +msgid "Location" +msgstr "" + +#: templates/part.eventform.php:83 +msgid "Location of the Event" +msgstr "" + +#: templates/part.eventform.php:89 templates/part.showevent.php:85 +msgid "Description" +msgstr "" + +#: templates/part.eventform.php:91 +msgid "Description of the Event" +msgstr "" + +#: templates/part.eventform.php:100 templates/part.showevent.php:95 +msgid "Repeat" +msgstr "" + +#: templates/part.eventform.php:107 templates/part.showevent.php:102 +msgid "Advanced" +msgstr "" + +#: templates/part.eventform.php:151 templates/part.showevent.php:146 +msgid "Select weekdays" +msgstr "" + +#: templates/part.eventform.php:164 templates/part.eventform.php:177 +#: templates/part.showevent.php:159 templates/part.showevent.php:172 +msgid "Select days" +msgstr "" + +#: templates/part.eventform.php:169 templates/part.showevent.php:164 +msgid "and the events day of year." +msgstr "" + +#: templates/part.eventform.php:182 templates/part.showevent.php:177 +msgid "and the events day of month." +msgstr "" + +#: templates/part.eventform.php:190 templates/part.showevent.php:185 +msgid "Select months" +msgstr "" + +#: templates/part.eventform.php:203 templates/part.showevent.php:198 +msgid "Select weeks" +msgstr "" + +#: templates/part.eventform.php:208 templates/part.showevent.php:203 +msgid "and the events week of year." +msgstr "" + +#: templates/part.eventform.php:214 templates/part.showevent.php:209 +msgid "Interval" +msgstr "" + +#: templates/part.eventform.php:220 templates/part.showevent.php:215 +msgid "End" +msgstr "" + +#: templates/part.eventform.php:233 templates/part.showevent.php:228 +msgid "occurrences" +msgstr "" + +#: templates/part.import.php:14 +msgid "create a new calendar" +msgstr "" + +#: templates/part.import.php:17 +msgid "Import a calendar file" +msgstr "" + +#: templates/part.import.php:24 +msgid "Please choose a calendar" +msgstr "" + +#: templates/part.import.php:36 +msgid "Name of new calendar" +msgstr "" + +#: templates/part.import.php:44 +msgid "Take an available name!" +msgstr "" + +#: templates/part.import.php:45 +msgid "" +"A Calendar with this name already exists. If you continue anyhow, these " +"calendars will be merged." +msgstr "" + +#: templates/part.import.php:47 +msgid "Import" +msgstr "" + +#: templates/part.import.php:56 +msgid "Close Dialog" +msgstr "" + +#: templates/part.newevent.php:1 +msgid "Create a new event" +msgstr "" + +#: templates/part.showevent.php:1 +msgid "View an event" +msgstr "" + +#: templates/part.showevent.php:23 +msgid "No categories selected" +msgstr "" + +#: templates/part.showevent.php:37 +msgid "of" +msgstr "" + +#: templates/part.showevent.php:59 templates/part.showevent.php:67 +msgid "at" +msgstr "" + +#: templates/settings.php:14 +msgid "Timezone" +msgstr "" + +#: templates/settings.php:31 +msgid "Check always for changes of the timezone" +msgstr "" + +#: templates/settings.php:33 +msgid "Timeformat" +msgstr "" + +#: templates/settings.php:35 +msgid "24h" +msgstr "" + +#: templates/settings.php:36 +msgid "12h" +msgstr "" + +#: templates/settings.php:40 +msgid "First day of the week" +msgstr "" + +#: templates/settings.php:47 +msgid "Cache" +msgstr "" + +#: templates/settings.php:48 +msgid "Clear cache for repeating events" +msgstr "" + +#: templates/settings.php:53 +msgid "Calendar CalDAV syncing addresses" +msgstr "" + +#: templates/settings.php:53 +msgid "more info" +msgstr "" + +#: templates/settings.php:55 +msgid "Primary address (Kontact et al)" +msgstr "" + +#: templates/settings.php:57 +msgid "iOS/OS X" +msgstr "" + +#: templates/settings.php:59 +msgid "Read only iCalendar link(s)" +msgstr "" + +#: templates/share.dropdown.php:20 +msgid "Users" +msgstr "" + +#: templates/share.dropdown.php:21 +msgid "select users" +msgstr "" + +#: templates/share.dropdown.php:36 templates/share.dropdown.php:62 +msgid "Editable" +msgstr "" + +#: templates/share.dropdown.php:48 +msgid "Groups" +msgstr "" + +#: templates/share.dropdown.php:49 +msgid "select groups" +msgstr "" + +#: templates/share.dropdown.php:75 +msgid "make public" +msgstr "" diff --git a/l10n/fi/contacts.po b/l10n/fi/contacts.po new file mode 100644 index 00000000000..d981913ecce --- /dev/null +++ b/l10n/fi/contacts.po @@ -0,0 +1,870 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2011-09-23 17:10+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/addressbook/activate.php:24 ajax/addressbook/update.php:32 +msgid "Error (de)activating addressbook." +msgstr "" + +#: ajax/addressbook/delete.php:31 ajax/addressbook/update.php:20 +#: ajax/contact/addproperty.php:42 ajax/contact/delete.php:30 +#: ajax/contact/saveproperty.php:37 +msgid "id is not set." +msgstr "" + +#: ajax/addressbook/update.php:24 +msgid "Cannot update addressbook with an empty name." +msgstr "" + +#: ajax/addressbook/update.php:28 +msgid "Error updating addressbook." +msgstr "" + +#: ajax/categories/categoriesfor.php:17 +msgid "No ID provided" +msgstr "" + +#: ajax/categories/categoriesfor.php:34 +msgid "Error setting checksum." +msgstr "" + +#: ajax/categories/delete.php:19 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/categories/delete.php:26 +msgid "No address books found." +msgstr "" + +#: ajax/categories/delete.php:34 +msgid "No contacts found." +msgstr "" + +#: ajax/contact/add.php:47 +msgid "There was an error adding the contact." +msgstr "" + +#: ajax/contact/addproperty.php:39 ajax/contact/saveproperty.php:34 +msgid "element name is not set." +msgstr "" + +#: ajax/contact/addproperty.php:46 +msgid "Could not parse contact: " +msgstr "" + +#: ajax/contact/addproperty.php:56 +msgid "Cannot add empty property." +msgstr "" + +#: ajax/contact/addproperty.php:67 +msgid "At least one of the address fields has to be filled out." +msgstr "" + +#: ajax/contact/addproperty.php:76 +msgid "Trying to add duplicate property: " +msgstr "" + +#: ajax/contact/addproperty.php:144 +msgid "Error adding contact property: " +msgstr "" + +#: ajax/contact/deleteproperty.php:36 +msgid "Information about vCard is incorrect. Please reload the page." +msgstr "" + +#: ajax/contact/deleteproperty.php:43 +msgid "Error deleting contact property." +msgstr "" + +#: ajax/contact/details.php:31 +msgid "Missing ID" +msgstr "" + +#: ajax/contact/details.php:36 +msgid "Error parsing VCard for ID: \"" +msgstr "" + +#: ajax/contact/saveproperty.php:40 +msgid "checksum is not set." +msgstr "" + +#: ajax/contact/saveproperty.php:60 +msgid "Information about vCard is incorrect. Please reload the page: " +msgstr "" + +#: ajax/contact/saveproperty.php:67 +msgid "Something went FUBAR. " +msgstr "" + +#: ajax/contact/saveproperty.php:142 +msgid "Error updating contact property." +msgstr "" + +#: ajax/currentphoto.php:30 ajax/oc_photo.php:28 ajax/uploadphoto.php:36 +#: ajax/uploadphoto.php:68 +msgid "No contact ID was submitted." +msgstr "" + +#: ajax/currentphoto.php:36 +msgid "Error reading contact photo." +msgstr "" + +#: ajax/currentphoto.php:48 +msgid "Error saving temporary file." +msgstr "" + +#: ajax/currentphoto.php:51 +msgid "The loading photo is not valid." +msgstr "" + +#: ajax/editname.php:31 +msgid "Contact ID is missing." +msgstr "" + +#: ajax/oc_photo.php:32 +msgid "No photo path was submitted." +msgstr "" + +#: ajax/oc_photo.php:39 +msgid "File doesn't exist:" +msgstr "" + +#: ajax/oc_photo.php:44 ajax/oc_photo.php:47 +msgid "Error loading image." +msgstr "" + +#: ajax/savecrop.php:69 +msgid "Error getting contact object." +msgstr "" + +#: ajax/savecrop.php:79 +msgid "Error getting PHOTO property." +msgstr "" + +#: ajax/savecrop.php:98 +msgid "Error saving contact." +msgstr "" + +#: ajax/savecrop.php:108 +msgid "Error resizing image" +msgstr "" + +#: ajax/savecrop.php:111 +msgid "Error cropping image" +msgstr "" + +#: ajax/savecrop.php:114 +msgid "Error creating temporary image" +msgstr "" + +#: ajax/savecrop.php:117 +msgid "Error finding image: " +msgstr "" + +#: ajax/uploadimport.php:44 ajax/uploadimport.php:76 +msgid "Error uploading contacts to storage." +msgstr "" + +#: ajax/uploadimport.php:61 ajax/uploadphoto.php:77 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/uploadimport.php:62 ajax/uploadphoto.php:78 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/uploadimport.php:63 ajax/uploadphoto.php:79 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/uploadimport.php:64 ajax/uploadphoto.php:80 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/uploadimport.php:65 ajax/uploadphoto.php:81 +msgid "No file was uploaded" +msgstr "" + +#: ajax/uploadimport.php:66 ajax/uploadphoto.php:82 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/uploadphoto.php:59 ajax/uploadphoto.php:109 +msgid "Couldn't save temporary image: " +msgstr "" + +#: ajax/uploadphoto.php:62 ajax/uploadphoto.php:112 +msgid "Couldn't load temporary image: " +msgstr "" + +#: ajax/uploadphoto.php:71 +msgid "No file was uploaded. Unknown error" +msgstr "" + +#: appinfo/app.php:19 +msgid "Contacts" +msgstr "" + +#: js/contacts.js:71 +msgid "Sorry, this functionality has not been implemented yet" +msgstr "" + +#: js/contacts.js:71 +msgid "Not implemented" +msgstr "" + +#: js/contacts.js:76 +msgid "Couldn't get a valid address." +msgstr "" + +#: js/contacts.js:76 js/contacts.js:365 js/contacts.js:381 js/contacts.js:393 +#: js/contacts.js:675 js/contacts.js:715 js/contacts.js:741 js/contacts.js:850 +#: js/contacts.js:856 js/contacts.js:868 js/contacts.js:902 +#: js/contacts.js:1165 js/contacts.js:1173 js/contacts.js:1182 +#: js/contacts.js:1217 js/contacts.js:1249 js/contacts.js:1261 +#: js/contacts.js:1284 js/contacts.js:1421 js/contacts.js:1452 +#: js/settings.js:25 js/settings.js:42 js/settings.js:67 +msgid "Error" +msgstr "" + +#: js/contacts.js:715 +msgid "This property has to be non-empty." +msgstr "" + +#: js/contacts.js:741 +msgid "Couldn't serialize elements." +msgstr "" + +#: js/contacts.js:850 js/contacts.js:868 +msgid "" +"'deleteProperty' called without type argument. Please report at " +"bugs.owncloud.org" +msgstr "" + +#: js/contacts.js:884 +msgid "Edit name" +msgstr "" + +#: js/contacts.js:1165 +msgid "No files selected for upload." +msgstr "" + +#: js/contacts.js:1173 +msgid "" +"The file you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: js/contacts.js:1337 js/contacts.js:1371 +msgid "Select type" +msgstr "" + +#: js/contacts.js:1390 +msgid "" +"Some contacts are marked for deletion, but not deleted yet. Please wait for " +"them to be deleted." +msgstr "" + +#: js/loader.js:49 +msgid "Result: " +msgstr "" + +#: js/loader.js:49 +msgid " imported, " +msgstr "" + +#: js/loader.js:49 +msgid " failed." +msgstr "" + +#: js/settings.js:67 +msgid "Displayname cannot be empty." +msgstr "" + +#: lib/app.php:36 +msgid "Addressbook not found: " +msgstr "" + +#: lib/app.php:49 +msgid "This is not your addressbook." +msgstr "" + +#: lib/app.php:68 +msgid "Contact could not be found." +msgstr "" + +#: lib/app.php:112 templates/part.contact.php:117 +msgid "Address" +msgstr "" + +#: lib/app.php:113 +msgid "Telephone" +msgstr "" + +#: lib/app.php:114 templates/part.contact.php:116 +msgid "Email" +msgstr "" + +#: lib/app.php:115 templates/part.contact.php:39 templates/part.contact.php:40 +#: templates/part.contact.php:112 +msgid "Organization" +msgstr "" + +#: lib/app.php:127 lib/app.php:134 lib/app.php:144 lib/app.php:197 +msgid "Work" +msgstr "" + +#: lib/app.php:128 lib/app.php:132 lib/app.php:145 +msgid "Home" +msgstr "" + +#: lib/app.php:133 +msgid "Mobile" +msgstr "" + +#: lib/app.php:135 +msgid "Text" +msgstr "" + +#: lib/app.php:136 +msgid "Voice" +msgstr "" + +#: lib/app.php:137 +msgid "Message" +msgstr "" + +#: lib/app.php:138 +msgid "Fax" +msgstr "" + +#: lib/app.php:139 +msgid "Video" +msgstr "" + +#: lib/app.php:140 +msgid "Pager" +msgstr "" + +#: lib/app.php:146 +msgid "Internet" +msgstr "" + +#: lib/app.php:183 templates/part.contact.php:45 +#: templates/part.contact.php:114 +msgid "Birthday" +msgstr "" + +#: lib/app.php:184 +msgid "Business" +msgstr "" + +#: lib/app.php:185 +msgid "Call" +msgstr "" + +#: lib/app.php:186 +msgid "Clients" +msgstr "" + +#: lib/app.php:187 +msgid "Deliverer" +msgstr "" + +#: lib/app.php:188 +msgid "Holidays" +msgstr "" + +#: lib/app.php:189 +msgid "Ideas" +msgstr "" + +#: lib/app.php:190 +msgid "Journey" +msgstr "" + +#: lib/app.php:191 +msgid "Jubilee" +msgstr "" + +#: lib/app.php:192 +msgid "Meeting" +msgstr "" + +#: lib/app.php:193 +msgid "Other" +msgstr "" + +#: lib/app.php:194 +msgid "Personal" +msgstr "" + +#: lib/app.php:195 +msgid "Projects" +msgstr "" + +#: lib/app.php:196 +msgid "Questions" +msgstr "" + +#: lib/hooks.php:102 +msgid "{name}'s Birthday" +msgstr "" + +#: lib/search.php:15 +msgid "Contact" +msgstr "" + +#: templates/index.php:14 +msgid "Add Contact" +msgstr "" + +#: templates/index.php:15 templates/index.php:16 templates/part.import.php:17 +msgid "Import" +msgstr "" + +#: templates/index.php:18 +msgid "Settings" +msgstr "" + +#: templates/index.php:18 templates/settings.php:9 +msgid "Addressbooks" +msgstr "" + +#: templates/index.php:36 templates/part.import.php:24 +msgid "Close" +msgstr "" + +#: templates/index.php:37 +msgid "Keyboard shortcuts" +msgstr "" + +#: templates/index.php:39 +msgid "Navigation" +msgstr "" + +#: templates/index.php:42 +msgid "Next contact in list" +msgstr "" + +#: templates/index.php:44 +msgid "Previous contact in list" +msgstr "" + +#: templates/index.php:46 +msgid "Expand/collapse current addressbook" +msgstr "" + +#: templates/index.php:48 +msgid "Next addressbook" +msgstr "" + +#: templates/index.php:50 +msgid "Previous addressbook" +msgstr "" + +#: templates/index.php:54 +msgid "Actions" +msgstr "" + +#: templates/index.php:57 +msgid "Refresh contacts list" +msgstr "" + +#: templates/index.php:59 +msgid "Add new contact" +msgstr "" + +#: templates/index.php:61 +msgid "Add new addressbook" +msgstr "" + +#: templates/index.php:63 +msgid "Delete current contact" +msgstr "" + +#: templates/part.contact.php:17 +msgid "Drop photo to upload" +msgstr "" + +#: templates/part.contact.php:19 +msgid "Delete current photo" +msgstr "" + +#: templates/part.contact.php:20 +msgid "Edit current photo" +msgstr "" + +#: templates/part.contact.php:21 +msgid "Upload new photo" +msgstr "" + +#: templates/part.contact.php:22 +msgid "Select photo from ownCloud" +msgstr "" + +#: templates/part.contact.php:35 +msgid "Format custom, Short name, Full name, Reverse or Reverse with comma" +msgstr "" + +#: templates/part.contact.php:36 +msgid "Edit name details" +msgstr "" + +#: templates/part.contact.php:40 templates/part.contact.php:42 +#: templates/part.contact.php:44 templates/part.contact.php:46 +#: templates/part.contact.php:50 templates/settings.php:33 +msgid "Delete" +msgstr "" + +#: templates/part.contact.php:41 templates/part.contact.php:113 +msgid "Nickname" +msgstr "" + +#: templates/part.contact.php:42 +msgid "Enter nickname" +msgstr "" + +#: templates/part.contact.php:43 templates/part.contact.php:119 +msgid "Web site" +msgstr "" + +#: templates/part.contact.php:44 +msgid "http://www.somesite.com" +msgstr "" + +#: templates/part.contact.php:44 +msgid "Go to web site" +msgstr "" + +#: templates/part.contact.php:46 +msgid "dd-mm-yyyy" +msgstr "" + +#: templates/part.contact.php:47 templates/part.contact.php:120 +msgid "Groups" +msgstr "" + +#: templates/part.contact.php:49 +msgid "Separate groups with commas" +msgstr "" + +#: templates/part.contact.php:50 +msgid "Edit groups" +msgstr "" + +#: templates/part.contact.php:63 templates/part.contact.php:77 +msgid "Preferred" +msgstr "" + +#: templates/part.contact.php:64 +msgid "Please specify a valid email address." +msgstr "" + +#: templates/part.contact.php:64 +msgid "Enter email address" +msgstr "" + +#: templates/part.contact.php:68 +msgid "Mail to address" +msgstr "" + +#: templates/part.contact.php:69 +msgid "Delete email address" +msgstr "" + +#: templates/part.contact.php:78 +msgid "Enter phone number" +msgstr "" + +#: templates/part.contact.php:82 +msgid "Delete phone number" +msgstr "" + +#: templates/part.contact.php:92 +msgid "View on map" +msgstr "" + +#: templates/part.contact.php:92 +msgid "Edit address details" +msgstr "" + +#: templates/part.contact.php:103 +msgid "Add notes here." +msgstr "" + +#: templates/part.contact.php:110 +msgid "Add field" +msgstr "" + +#: templates/part.contact.php:115 +msgid "Phone" +msgstr "" + +#: templates/part.contact.php:118 +msgid "Note" +msgstr "" + +#: templates/part.contact.php:123 +msgid "Download contact" +msgstr "" + +#: templates/part.contact.php:124 +msgid "Delete contact" +msgstr "" + +#: templates/part.cropphoto.php:65 +msgid "The temporary image has been removed from cache." +msgstr "" + +#: templates/part.edit_address_dialog.php:6 +msgid "Edit address" +msgstr "" + +#: templates/part.edit_address_dialog.php:10 +msgid "Type" +msgstr "" + +#: templates/part.edit_address_dialog.php:18 +#: templates/part.edit_address_dialog.php:21 +msgid "PO Box" +msgstr "" + +#: templates/part.edit_address_dialog.php:24 +msgid "Street address" +msgstr "" + +#: templates/part.edit_address_dialog.php:27 +msgid "Street and number" +msgstr "" + +#: templates/part.edit_address_dialog.php:30 +msgid "Extended" +msgstr "" + +#: templates/part.edit_address_dialog.php:33 +msgid "Apartment number etc." +msgstr "" + +#: templates/part.edit_address_dialog.php:36 +#: templates/part.edit_address_dialog.php:39 +msgid "City" +msgstr "" + +#: templates/part.edit_address_dialog.php:42 +msgid "Region" +msgstr "" + +#: templates/part.edit_address_dialog.php:45 +msgid "E.g. state or province" +msgstr "" + +#: templates/part.edit_address_dialog.php:48 +msgid "Zipcode" +msgstr "" + +#: templates/part.edit_address_dialog.php:51 +msgid "Postal code" +msgstr "" + +#: templates/part.edit_address_dialog.php:54 +#: templates/part.edit_address_dialog.php:57 +msgid "Country" +msgstr "" + +#: templates/part.edit_name_dialog.php:16 +msgid "Addressbook" +msgstr "" + +#: templates/part.edit_name_dialog.php:23 +msgid "Hon. prefixes" +msgstr "" + +#: templates/part.edit_name_dialog.php:27 +msgid "Miss" +msgstr "" + +#: templates/part.edit_name_dialog.php:28 +msgid "Ms" +msgstr "" + +#: templates/part.edit_name_dialog.php:29 +msgid "Mr" +msgstr "" + +#: templates/part.edit_name_dialog.php:30 +msgid "Sir" +msgstr "" + +#: templates/part.edit_name_dialog.php:31 +msgid "Mrs" +msgstr "" + +#: templates/part.edit_name_dialog.php:32 +msgid "Dr" +msgstr "" + +#: templates/part.edit_name_dialog.php:35 +msgid "Given name" +msgstr "" + +#: templates/part.edit_name_dialog.php:37 +msgid "Additional names" +msgstr "" + +#: templates/part.edit_name_dialog.php:39 +msgid "Family name" +msgstr "" + +#: templates/part.edit_name_dialog.php:41 +msgid "Hon. suffixes" +msgstr "" + +#: templates/part.edit_name_dialog.php:45 +msgid "J.D." +msgstr "" + +#: templates/part.edit_name_dialog.php:46 +msgid "M.D." +msgstr "" + +#: templates/part.edit_name_dialog.php:47 +msgid "D.O." +msgstr "" + +#: templates/part.edit_name_dialog.php:48 +msgid "D.C." +msgstr "" + +#: templates/part.edit_name_dialog.php:49 +msgid "Ph.D." +msgstr "" + +#: templates/part.edit_name_dialog.php:50 +msgid "Esq." +msgstr "" + +#: templates/part.edit_name_dialog.php:51 +msgid "Jr." +msgstr "" + +#: templates/part.edit_name_dialog.php:52 +msgid "Sn." +msgstr "" + +#: templates/part.import.php:1 +msgid "Import a contacts file" +msgstr "" + +#: templates/part.import.php:6 +msgid "Please choose the addressbook" +msgstr "" + +#: templates/part.import.php:10 +msgid "create a new addressbook" +msgstr "" + +#: templates/part.import.php:15 +msgid "Name of new addressbook" +msgstr "" + +#: templates/part.import.php:20 +msgid "Importing contacts" +msgstr "" + +#: templates/part.no_contacts.php:3 +msgid "You have no contacts in your addressbook." +msgstr "" + +#: templates/part.no_contacts.php:5 +msgid "Add contact" +msgstr "" + +#: templates/part.no_contacts.php:6 +msgid "Configure addressbooks" +msgstr "" + +#: templates/part.selectaddressbook.php:1 +msgid "Select Address Books" +msgstr "" + +#: templates/part.selectaddressbook.php:20 +msgid "Enter name" +msgstr "" + +#: templates/part.selectaddressbook.php:22 +msgid "Enter description" +msgstr "" + +#: templates/settings.php:3 +msgid "CardDAV syncing addresses" +msgstr "" + +#: templates/settings.php:3 +msgid "more info" +msgstr "" + +#: templates/settings.php:5 +msgid "Primary address (Kontact et al)" +msgstr "" + +#: templates/settings.php:7 +msgid "iOS/OS X" +msgstr "" + +#: templates/settings.php:20 +msgid "Show CardDav link" +msgstr "" + +#: templates/settings.php:23 +msgid "Show read-only VCF link" +msgstr "" + +#: templates/settings.php:26 +msgid "Download" +msgstr "" + +#: templates/settings.php:30 +msgid "Edit" +msgstr "" + +#: templates/settings.php:40 +msgid "New Address Book" +msgstr "" + +#: templates/settings.php:41 +msgid "Name" +msgstr "" + +#: templates/settings.php:42 +msgid "Description" +msgstr "" + +#: templates/settings.php:43 +msgid "Save" +msgstr "" + +#: templates/settings.php:44 +msgid "Cancel" +msgstr "" + +#: templates/settings.php:49 +msgid "More..." +msgstr "" diff --git a/l10n/fi/core.po b/l10n/fi/core.po new file mode 100644 index 00000000000..53b71a432ff --- /dev/null +++ b/l10n/fi/core.po @@ -0,0 +1,268 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2011-07-25 16:05+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/vcategories/add.php:23 ajax/vcategories/delete.php:23 +msgid "Application name not provided." +msgstr "" + +#: ajax/vcategories/add.php:29 +msgid "No category to add?" +msgstr "" + +#: ajax/vcategories/add.php:36 +msgid "This category already exists: " +msgstr "" + +#: js/jquery-ui-1.8.16.custom.min.js:511 +msgid "ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" +msgstr "" + +#: js/js.js:185 templates/layout.user.php:64 templates/layout.user.php:65 +msgid "Settings" +msgstr "" + +#: js/js.js:572 +msgid "January" +msgstr "" + +#: js/js.js:572 +msgid "February" +msgstr "" + +#: js/js.js:572 +msgid "March" +msgstr "" + +#: js/js.js:572 +msgid "April" +msgstr "" + +#: js/js.js:572 +msgid "May" +msgstr "" + +#: js/js.js:572 +msgid "June" +msgstr "" + +#: js/js.js:573 +msgid "July" +msgstr "" + +#: js/js.js:573 +msgid "August" +msgstr "" + +#: js/js.js:573 +msgid "September" +msgstr "" + +#: js/js.js:573 +msgid "October" +msgstr "" + +#: js/js.js:573 +msgid "November" +msgstr "" + +#: js/js.js:573 +msgid "December" +msgstr "" + +#: js/oc-dialogs.js:143 js/oc-dialogs.js:163 +msgid "Cancel" +msgstr "" + +#: js/oc-dialogs.js:159 +msgid "No" +msgstr "" + +#: js/oc-dialogs.js:160 +msgid "Yes" +msgstr "" + +#: js/oc-dialogs.js:177 +msgid "Ok" +msgstr "" + +#: js/oc-vcategories.js:68 +msgid "No categories selected for deletion." +msgstr "" + +#: js/oc-vcategories.js:68 +msgid "Error" +msgstr "" + +#: lostpassword/index.php:26 +msgid "ownCloud password reset" +msgstr "" + +#: lostpassword/templates/email.php:1 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:3 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: lostpassword/templates/lostpassword.php:5 +msgid "Requested" +msgstr "" + +#: lostpassword/templates/lostpassword.php:8 +msgid "Login failed!" +msgstr "" + +#: lostpassword/templates/lostpassword.php:11 templates/installation.php:25 +#: templates/login.php:9 +msgid "Username" +msgstr "" + +#: lostpassword/templates/lostpassword.php:15 +msgid "Request reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "" + +#: templates/404.php:12 +msgid "Cloud not found" +msgstr "" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "" + +#: templates/edit_categories_dialog.php:14 +msgid "Add" +msgstr "" + +#: templates/installation.php:23 +msgid "Create an <strong>admin account</strong>" +msgstr "" + +#: templates/installation.php:29 templates/login.php:13 +msgid "Password" +msgstr "" + +#: templates/installation.php:35 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:37 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:44 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:49 templates/installation.php:60 +#: templates/installation.php:70 +msgid "will be used" +msgstr "" + +#: templates/installation.php:82 +msgid "Database user" +msgstr "" + +#: templates/installation.php:86 +msgid "Database password" +msgstr "" + +#: templates/installation.php:90 +msgid "Database name" +msgstr "" + +#: templates/installation.php:96 +msgid "Database host" +msgstr "" + +#: templates/installation.php:101 +msgid "Finish setup" +msgstr "" + +#: templates/layout.guest.php:42 +msgid "web services under your control" +msgstr "" + +#: templates/layout.user.php:49 +msgid "Log out" +msgstr "" + +#: templates/login.php:6 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:17 +msgid "remember" +msgstr "" + +#: templates/login.php:18 +msgid "Log in" +msgstr "" + +#: templates/logout.php:1 +msgid "You are logged out." +msgstr "" + +#: templates/part.pagenavi.php:3 +msgid "prev" +msgstr "" + +#: templates/part.pagenavi.php:20 +msgid "next" +msgstr "" diff --git a/l10n/fi/files.po b/l10n/fi/files.po new file mode 100644 index 00000000000..63aaeba9a9f --- /dev/null +++ b/l10n/fi/files.po @@ -0,0 +1,222 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2011-08-13 02:19+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/upload.php:20 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:21 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini" +msgstr "" + +#: ajax/upload.php:22 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:23 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:24 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:25 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/upload.php:26 +msgid "Failed to write to disk" +msgstr "" + +#: appinfo/app.php:6 +msgid "Files" +msgstr "" + +#: js/fileactions.js:95 +msgid "Unshare" +msgstr "" + +#: js/fileactions.js:97 templates/index.php:56 +msgid "Delete" +msgstr "" + +#: js/filelist.js:141 +msgid "already exists" +msgstr "" + +#: js/filelist.js:141 +msgid "replace" +msgstr "" + +#: js/filelist.js:141 +msgid "cancel" +msgstr "" + +#: js/filelist.js:195 +msgid "replaced" +msgstr "" + +#: js/filelist.js:195 +msgid "with" +msgstr "" + +#: js/filelist.js:195 js/filelist.js:256 +msgid "undo" +msgstr "" + +#: js/filelist.js:256 +msgid "deleted" +msgstr "" + +#: js/files.js:170 +msgid "generating ZIP-file, it may take some time." +msgstr "" + +#: js/files.js:199 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "" + +#: js/files.js:199 +msgid "Upload Error" +msgstr "" + +#: js/files.js:227 js/files.js:318 js/files.js:347 +msgid "Pending" +msgstr "" + +#: js/files.js:332 +msgid "Upload cancelled." +msgstr "" + +#: js/files.js:456 +msgid "Invalid name, '/' is not allowed." +msgstr "" + +#: js/files.js:694 templates/index.php:55 +msgid "Size" +msgstr "" + +#: js/files.js:695 templates/index.php:56 +msgid "Modified" +msgstr "" + +#: js/files.js:722 +msgid "folder" +msgstr "" + +#: js/files.js:724 +msgid "folders" +msgstr "" + +#: js/files.js:732 +msgid "file" +msgstr "" + +#: js/files.js:734 +msgid "files" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "" + +#: templates/admin.php:7 +msgid "max. possible: " +msgstr "" + +#: templates/admin.php:9 +msgid "Needed for multi-file and folder downloads." +msgstr "" + +#: templates/admin.php:9 +msgid "Enable ZIP-download" +msgstr "" + +#: templates/admin.php:11 +msgid "0 is unlimited" +msgstr "" + +#: templates/admin.php:12 +msgid "Maximum input size for ZIP files" +msgstr "" + +#: templates/index.php:7 +msgid "New" +msgstr "" + +#: templates/index.php:9 +msgid "Text file" +msgstr "" + +#: templates/index.php:10 +msgid "Folder" +msgstr "" + +#: templates/index.php:11 +msgid "From url" +msgstr "" + +#: templates/index.php:21 +msgid "Upload" +msgstr "" + +#: templates/index.php:27 +msgid "Cancel upload" +msgstr "" + +#: templates/index.php:39 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:47 +msgid "Name" +msgstr "" + +#: templates/index.php:49 +msgid "Share" +msgstr "" + +#: templates/index.php:51 +msgid "Download" +msgstr "" + +#: templates/index.php:64 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:66 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: templates/index.php:71 +msgid "Files are being scanned, please wait." +msgstr "" + +#: templates/index.php:74 +msgid "Current scanning" +msgstr "" diff --git a/l10n/fi/gallery.po b/l10n/fi/gallery.po new file mode 100644 index 00000000000..786216a0af1 --- /dev/null +++ b/l10n/fi/gallery.po @@ -0,0 +1,58 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2012-01-15 13:48+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: appinfo/app.php:39 +msgid "Pictures" +msgstr "" + +#: js/pictures.js:12 +msgid "Share gallery" +msgstr "" + +#: js/pictures.js:32 +msgid "Error: " +msgstr "" + +#: js/pictures.js:32 +msgid "Internal error" +msgstr "" + +#: templates/index.php:27 +msgid "Slideshow" +msgstr "" + +#: templates/view_album.php:19 +msgid "Back" +msgstr "" + +#: templates/view_album.php:36 +msgid "Remove confirmation" +msgstr "" + +#: templates/view_album.php:37 +msgid "Do you want to remove album" +msgstr "" + +#: templates/view_album.php:40 +msgid "Change album name" +msgstr "" + +#: templates/view_album.php:43 +msgid "New album name" +msgstr "" diff --git a/l10n/fi/lib.po b/l10n/fi/lib.po new file mode 100644 index 00000000000..eee9ac5f9e5 --- /dev/null +++ b/l10n/fi/lib.po @@ -0,0 +1,112 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2012-07-27 22:23+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: app.php:288 +msgid "Help" +msgstr "" + +#: app.php:295 +msgid "Personal" +msgstr "" + +#: app.php:300 +msgid "Settings" +msgstr "" + +#: app.php:305 +msgid "Users" +msgstr "" + +#: app.php:312 +msgid "Apps" +msgstr "" + +#: app.php:314 +msgid "Admin" +msgstr "" + +#: files.php:245 +msgid "ZIP download is turned off." +msgstr "" + +#: files.php:246 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: files.php:246 files.php:271 +msgid "Back to Files" +msgstr "" + +#: files.php:270 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: json.php:39 json.php:63 json.php:75 +msgid "Authentication error" +msgstr "" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: template.php:86 +msgid "seconds ago" +msgstr "" + +#: template.php:87 +msgid "1 minute ago" +msgstr "" + +#: template.php:88 +#, php-format +msgid "%d minutes ago" +msgstr "" + +#: template.php:91 +msgid "today" +msgstr "" + +#: template.php:92 +msgid "yesterday" +msgstr "" + +#: template.php:93 +#, php-format +msgid "%d days ago" +msgstr "" + +#: template.php:94 +msgid "last month" +msgstr "" + +#: template.php:95 +msgid "months ago" +msgstr "" + +#: template.php:96 +msgid "last year" +msgstr "" + +#: template.php:97 +msgid "years ago" +msgstr "" diff --git a/l10n/fi/media.po b/l10n/fi/media.po new file mode 100644 index 00000000000..d0e3eab9bde --- /dev/null +++ b/l10n/fi/media.po @@ -0,0 +1,66 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2011-08-13 02:19+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: appinfo/app.php:45 templates/player.php:8 +msgid "Music" +msgstr "" + +#: js/music.js:18 +msgid "Add album to playlist" +msgstr "" + +#: templates/music.php:3 templates/player.php:12 +msgid "Play" +msgstr "" + +#: templates/music.php:4 templates/music.php:26 templates/player.php:13 +msgid "Pause" +msgstr "" + +#: templates/music.php:5 +msgid "Previous" +msgstr "" + +#: templates/music.php:6 templates/player.php:14 +msgid "Next" +msgstr "" + +#: templates/music.php:7 +msgid "Mute" +msgstr "" + +#: templates/music.php:8 +msgid "Unmute" +msgstr "" + +#: templates/music.php:25 +msgid "Rescan Collection" +msgstr "" + +#: templates/music.php:37 +msgid "Artist" +msgstr "" + +#: templates/music.php:38 +msgid "Album" +msgstr "" + +#: templates/music.php:39 +msgid "Title" +msgstr "" diff --git a/l10n/fi/settings.po b/l10n/fi/settings.po new file mode 100644 index 00000000000..940a5cbc09c --- /dev/null +++ b/l10n/fi/settings.po @@ -0,0 +1,222 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" +"PO-Revision-Date: 2011-07-25 16:05+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Finnish (http://www.transifex.com/projects/p/owncloud/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ajax/apps/ocs.php:23 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/lostpassword.php:14 +msgid "Email saved" +msgstr "" + +#: ajax/lostpassword.php:16 +msgid "Invalid email" +msgstr "" + +#: ajax/openid.php:16 +msgid "OpenID Changed" +msgstr "" + +#: ajax/openid.php:18 ajax/setlanguage.php:20 ajax/setlanguage.php:23 +msgid "Invalid request" +msgstr "" + +#: ajax/removeuser.php:13 ajax/setquota.php:18 ajax/togglegroups.php:18 +msgid "Authentication error" +msgstr "" + +#: ajax/setlanguage.php:18 +msgid "Language changed" +msgstr "" + +#: js/apps.js:18 +msgid "Error" +msgstr "" + +#: js/apps.js:39 js/apps.js:73 +msgid "Disable" +msgstr "" + +#: js/apps.js:39 js/apps.js:62 +msgid "Enable" +msgstr "" + +#: js/personal.js:69 +msgid "Saving..." +msgstr "" + +#: personal.php:46 personal.php:47 +msgid "__language_name__" +msgstr "" + +#: templates/admin.php:14 +msgid "Security Warning" +msgstr "" + +#: templates/admin.php:28 +msgid "Log" +msgstr "" + +#: templates/admin.php:56 +msgid "More" +msgstr "" + +#: templates/apps.php:10 +msgid "Add your App" +msgstr "" + +#: templates/apps.php:26 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:29 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:30 +msgid "-licensed" +msgstr "" + +#: templates/apps.php:30 +msgid "by" +msgstr "" + +#: templates/help.php:8 +msgid "Documentation" +msgstr "" + +#: templates/help.php:9 +msgid "Managing Big Files" +msgstr "" + +#: templates/help.php:10 +msgid "Ask a question" +msgstr "" + +#: templates/help.php:22 +msgid "Problems connecting to help database." +msgstr "" + +#: templates/help.php:23 +msgid "Go there manually." +msgstr "" + +#: templates/help.php:31 +msgid "Answer" +msgstr "" + +#: templates/personal.php:8 +msgid "You use" +msgstr "" + +#: templates/personal.php:8 +msgid "of the available" +msgstr "" + +#: templates/personal.php:12 +msgid "Desktop and Mobile Syncing Clients" +msgstr "" + +#: templates/personal.php:13 +msgid "Download" +msgstr "" + +#: templates/personal.php:19 +msgid "Your password got changed" +msgstr "" + +#: templates/personal.php:20 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:21 +msgid "Current password" +msgstr "" + +#: templates/personal.php:22 +msgid "New password" +msgstr "" + +#: templates/personal.php:23 +msgid "show" +msgstr "" + +#: templates/personal.php:24 +msgid "Change password" +msgstr "" + +#: templates/personal.php:30 +msgid "Email" +msgstr "" + +#: templates/personal.php:31 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:32 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:38 templates/personal.php:39 +msgid "Language" +msgstr "" + +#: templates/personal.php:44 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:51 +msgid "use this address to connect to your ownCloud in your file manager" +msgstr "" + +#: templates/users.php:21 templates/users.php:76 +msgid "Name" +msgstr "" + +#: templates/users.php:23 templates/users.php:77 +msgid "Password" +msgstr "" + +#: templates/users.php:26 templates/users.php:78 templates/users.php:98 +msgid "Groups" +msgstr "" + +#: templates/users.php:32 +msgid "Create" +msgstr "" + +#: templates/users.php:35 +msgid "Default Quota" +msgstr "" + +#: templates/users.php:55 templates/users.php:138 +msgid "Other" +msgstr "" + +#: templates/users.php:80 templates/users.php:112 +msgid "SubAdmin" +msgstr "" + +#: templates/users.php:82 +msgid "Quota" +msgstr "" + +#: templates/users.php:146 +msgid "Delete" +msgstr "" diff --git a/l10n/fi_FI/settings.po b/l10n/fi_FI/settings.po index 5707523ef2e..25c546781eb 100644 --- a/l10n/fi_FI/settings.po +++ b/l10n/fi_FI/settings.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-05 19:00+0200\n" -"PO-Revision-Date: 2012-08-05 17:01+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:05+0200\n" +"PO-Revision-Date: 2012-08-06 10:15+0000\n" +"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -49,7 +49,7 @@ msgstr "Kieli on vaihdettu" #: js/apps.js:18 msgid "Error" -msgstr "" +msgstr "Virhe" #: js/apps.js:39 js/apps.js:73 msgid "Disable" diff --git a/l10n/fr/contacts.po b/l10n/fr/contacts.po index c7086e02eaf..6d0c2315d9d 100644 --- a/l10n/fr/contacts.po +++ b/l10n/fr/contacts.po @@ -4,6 +4,7 @@ # # Translators: # Borjan Tchakaloff <borjan@tchaka.fr>, 2012. +# Cyril Glapa <kyriog@gmail.com>, 2012. # <fboulogne@april.org>, 2011. # <gp4004@arghh.org>, 2011. # <guiguidu31300@gmail.com>, 2012. @@ -17,9 +18,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-04 02:02+0200\n" -"PO-Revision-Date: 2012-08-04 00:02+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:04+0200\n" +"PO-Revision-Date: 2012-08-06 20:28+0000\n" +"Last-Translator: Cyril Glapa <kyriog@gmail.com>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -306,11 +307,11 @@ msgstr "échoué." #: js/settings.js:67 msgid "Displayname cannot be empty." -msgstr "" +msgstr "Le nom d'affichage ne peut pas être vide." #: lib/app.php:36 msgid "Addressbook not found: " -msgstr "" +msgstr "Carnet d'adresse introuvable : " #: lib/app.php:49 msgid "This is not your addressbook." @@ -452,7 +453,7 @@ msgstr "Importer" #: templates/index.php:18 msgid "Settings" -msgstr "" +msgstr "Paramètres" #: templates/index.php:18 templates/settings.php:9 msgid "Addressbooks" @@ -484,11 +485,11 @@ msgstr "Dé/Replier le carnet d'adresses courant" #: templates/index.php:48 msgid "Next addressbook" -msgstr "" +msgstr "Carnet d'adresses suivant" #: templates/index.php:50 msgid "Previous addressbook" -msgstr "" +msgstr "Carnet d'adresses précédent" #: templates/index.php:54 msgid "Actions" @@ -540,7 +541,7 @@ msgstr "Editer les noms" #: templates/part.contact.php:40 templates/part.contact.php:42 #: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:34 +#: templates/part.contact.php:50 templates/settings.php:33 msgid "Delete" msgstr "Supprimer" @@ -841,7 +842,7 @@ msgstr "iOS/OS X" #: templates/settings.php:20 msgid "Show CardDav link" -msgstr "" +msgstr "Afficher le lien CardDav" #: templates/settings.php:23 msgid "Show read-only VCF link" @@ -851,30 +852,30 @@ msgstr "" msgid "Download" msgstr "Télécharger" -#: templates/settings.php:31 +#: templates/settings.php:30 msgid "Edit" msgstr "Modifier" -#: templates/settings.php:41 +#: templates/settings.php:40 msgid "New Address Book" msgstr "Nouveau Carnet d'adresses" -#: templates/settings.php:42 +#: templates/settings.php:41 msgid "Name" -msgstr "" +msgstr "Nom" -#: templates/settings.php:43 +#: templates/settings.php:42 msgid "Description" -msgstr "" +msgstr "Description" -#: templates/settings.php:45 +#: templates/settings.php:43 msgid "Save" msgstr "Sauvegarder" -#: templates/settings.php:46 +#: templates/settings.php:44 msgid "Cancel" msgstr "Annuler" -#: templates/settings.php:51 +#: templates/settings.php:49 msgid "More..." -msgstr "" +msgstr "Plus…" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index 23e5b17852b..1cc50dacf8a 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/files.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyril Glapa <kyriog@gmail.com>, 2012. # Geoffrey Guerrier <geoffrey.guerrier@gmail.com>, 2012. # <guiguidu31300@gmail.com>, 2012. # Nahir Mohamed <nahirmoha@gmail.com>, 2012. @@ -12,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-07-31 22:53+0200\n" -"PO-Revision-Date: 2012-07-31 20:54+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:04+0200\n" +"PO-Revision-Date: 2012-08-06 20:30+0000\n" +"Last-Translator: Cyril Glapa <kyriog@gmail.com>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -66,23 +67,23 @@ msgstr "Supprimer" #: js/filelist.js:141 msgid "already exists" -msgstr "" +msgstr "existe déjà" #: js/filelist.js:141 msgid "replace" -msgstr "" +msgstr "remplacer" #: js/filelist.js:141 msgid "cancel" -msgstr "" +msgstr "annuler" #: js/filelist.js:195 msgid "replaced" -msgstr "" +msgstr "remplacé" #: js/filelist.js:195 msgid "with" -msgstr "" +msgstr "avec" #: js/filelist.js:195 js/filelist.js:256 msgid "undo" @@ -116,27 +117,27 @@ msgstr "Chargement annulé" msgid "Invalid name, '/' is not allowed." msgstr "Nom invalide, '/' n'est pas autorisé." -#: js/files.js:631 templates/index.php:55 +#: js/files.js:694 templates/index.php:55 msgid "Size" msgstr "Taille" -#: js/files.js:632 templates/index.php:56 +#: js/files.js:695 templates/index.php:56 msgid "Modified" msgstr "Modifié" -#: js/files.js:659 +#: js/files.js:722 msgid "folder" msgstr "dossier" -#: js/files.js:661 +#: js/files.js:724 msgid "folders" msgstr "dossiers" -#: js/files.js:669 +#: js/files.js:732 msgid "file" msgstr "fichier" -#: js/files.js:671 +#: js/files.js:734 msgid "files" msgstr "fichiers" diff --git a/l10n/fr/settings.po b/l10n/fr/settings.po index 83d634ef529..5904706ab71 100644 --- a/l10n/fr/settings.po +++ b/l10n/fr/settings.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Cyril Glapa <kyriog@gmail.com>, 2012. # <fboulogne@april.org>, 2011. # <guiguidu31300@gmail.com>, 2012. # Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011. @@ -14,9 +15,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2012-08-05 19:00+0200\n" -"PO-Revision-Date: 2012-08-05 17:01+0000\n" -"Last-Translator: owncloud_robot <thomas.mueller@tmit.eu>\n" +"POT-Creation-Date: 2012-08-07 02:05+0200\n" +"PO-Revision-Date: 2012-08-06 20:25+0000\n" +"Last-Translator: Cyril Glapa <kyriog@gmail.com>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,7 +27,7 @@ msgstr "" #: ajax/apps/ocs.php:23 msgid "Unable to load list from App Store" -msgstr "" +msgstr "Impossible de charger la liste depuis l'App Store" #: ajax/lostpassword.php:14 msgid "Email saved" @@ -54,7 +55,7 @@ msgstr "Langue changée" #: js/apps.js:18 msgid "Error" -msgstr "" +msgstr "Erreur" #: js/apps.js:39 js/apps.js:73 msgid "Disable" diff --git a/l10n/templates/bookmarks.pot b/l10n/templates/bookmarks.pot index d1f10931862..0923b3560e8 100644 --- a/l10n/templates/bookmarks.pot +++ b/l10n/templates/bookmarks.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:01+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/calendar.pot b/l10n/templates/calendar.pot index cd99214bfa6..9afce66a0cc 100644 --- a/l10n/templates/calendar.pot +++ b/l10n/templates/calendar.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:01+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/contacts.pot b/l10n/templates/contacts.pot index 27b06ccd622..45d062ecbc6 100644 --- a/l10n/templates/contacts.pot +++ b/l10n/templates/contacts.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:01+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -530,7 +530,7 @@ msgstr "" #: templates/part.contact.php:40 templates/part.contact.php:42 #: templates/part.contact.php:44 templates/part.contact.php:46 -#: templates/part.contact.php:50 templates/settings.php:34 +#: templates/part.contact.php:50 templates/settings.php:33 msgid "Delete" msgstr "" @@ -841,30 +841,30 @@ msgstr "" msgid "Download" msgstr "" -#: templates/settings.php:31 +#: templates/settings.php:30 msgid "Edit" msgstr "" -#: templates/settings.php:41 +#: templates/settings.php:40 msgid "New Address Book" msgstr "" -#: templates/settings.php:42 +#: templates/settings.php:41 msgid "Name" msgstr "" -#: templates/settings.php:43 +#: templates/settings.php:42 msgid "Description" msgstr "" -#: templates/settings.php:45 +#: templates/settings.php:43 msgid "Save" msgstr "" -#: templates/settings.php:46 +#: templates/settings.php:44 msgid "Cancel" msgstr "" -#: templates/settings.php:51 +#: templates/settings.php:49 msgid "More..." msgstr "" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index 8701abad983..e078d4ab05c 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:02+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 6c139feef7f..43eeb2aba40 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:01+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -111,27 +111,27 @@ msgstr "" msgid "Invalid name, '/' is not allowed." msgstr "" -#: js/files.js:690 templates/index.php:55 +#: js/files.js:694 templates/index.php:55 msgid "Size" msgstr "" -#: js/files.js:691 templates/index.php:56 +#: js/files.js:695 templates/index.php:56 msgid "Modified" msgstr "" -#: js/files.js:718 +#: js/files.js:722 msgid "folder" msgstr "" -#: js/files.js:720 +#: js/files.js:724 msgid "folders" msgstr "" -#: js/files.js:728 +#: js/files.js:732 msgid "file" msgstr "" -#: js/files.js:730 +#: js/files.js:734 msgid "files" msgstr "" diff --git a/l10n/templates/gallery.pot b/l10n/templates/gallery.pot index d36f787991f..740cbaedeab 100644 --- a/l10n/templates/gallery.pot +++ b/l10n/templates/gallery.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:02+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index 8debc498479..bc1291279c4 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:02+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/media.pot b/l10n/templates/media.pot index 801986935ab..568fa545787 100644 --- a/l10n/templates/media.pot +++ b/l10n/templates/media.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:02+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index b848a4b9f66..a53e2109977 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-08-06 02:02+0200\n" +"POT-Creation-Date: 2012-08-09 02:02+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/lib/base.php b/lib/base.php index 888dc265d64..6514a0c0b0c 100644 --- a/lib/base.php +++ b/lib/base.php @@ -185,8 +185,8 @@ class OC{ // redirect to https site if configured if( OC_Config::getValue( "forcessl", false )){ ini_set("session.cookie_secure", "on"); - if(OC_Helper::serverProtocol()<>'https' and !OC::$CLI) { - $url = "https://". OC_Helper::serverHost() . $_SERVER['REQUEST_URI']; + if(OC_Request::serverProtocol()<>'https' and !OC::$CLI) { + $url = "https://". OC_Request::serverHost() . $_SERVER['REQUEST_URI']; header("Location: $url"); exit(); } @@ -373,7 +373,7 @@ class OC{ self::$REQUESTEDAPP = (isset($_GET['app']) && trim($_GET['app']) != '' && !is_null($_GET['app'])?str_replace(array('\0', '/', '\\', '..'), '', strip_tags($_GET['app'])):OC_Config::getValue('defaultapp', 'files')); if(substr_count(self::$REQUESTEDAPP, '?') != 0){ $app = substr(self::$REQUESTEDAPP, 0, strpos(self::$REQUESTEDAPP, '?')); - $param = substr(self::$REQUESTEDAPP, strpos(self::$REQUESTEDAPP, '?') + 1); + $param = substr($_GET['app'], strpos($_GET['app'], '?') + 1); parse_str($param, $get); $_GET = array_merge($_GET, $get); self::$REQUESTEDAPP = $app; @@ -398,12 +398,121 @@ class OC{ } } } + + /** + * @brief Try to handle request + * @return true when the request is handled here + */ + public static function handleRequest() { + if (!OC_Config::getValue('installed', false)) { + // Check for autosetup: + $autosetup_file = OC::$SERVERROOT."/config/autoconfig.php"; + if( file_exists( $autosetup_file )){ + OC_Log::write('core','Autoconfig file found, setting up owncloud...',OC_Log::INFO); + include( $autosetup_file ); + $_POST['install'] = 'true'; + $_POST = array_merge ($_POST, $AUTOCONFIG); + unlink($autosetup_file); + } + OC_Util::addScript('setup'); + require_once('setup.php'); + exit(); + } + // Handle WebDAV + if($_SERVER['REQUEST_METHOD']=='PROPFIND'){ + header('location: '.OC_Helper::linkToRemote('webdav')); + return true; + } + if(!OC_User::isLoggedIn() && substr(OC::$REQUESTEDFILE,-3) == 'css') { + OC_App::loadApps(); + OC::loadfile(); + return true; + } + // Someone is logged in : + if(OC_User::isLoggedIn()) { + OC_App::loadApps(); + if(isset($_GET["logout"]) and ($_GET["logout"])) { + OC_User::logout(); + header("Location: ".OC::$WEBROOT.'/'); + }else{ + if(is_null(OC::$REQUESTEDFILE)) { + OC::loadapp(); + }else{ + OC::loadfile(); + } + } + return true; + } + return false; + } + + public static function tryRememberLogin() { + if(!isset($_COOKIE["oc_remember_login"]) + || !isset($_COOKIE["oc_token"]) + || !isset($_COOKIE["oc_username"]) + || !$_COOKIE["oc_remember_login"]) { + return false; + } + OC_App::loadApps(array('authentication')); + if(defined("DEBUG") && DEBUG) { + OC_Log::write('core','Trying to login from cookie',OC_Log::DEBUG); + } + // confirm credentials in cookie + if(isset($_COOKIE['oc_token']) && OC_User::userExists($_COOKIE['oc_username']) && + OC_Preferences::getValue($_COOKIE['oc_username'], "login", "token") == $_COOKIE['oc_token']) { + OC_User::setUserId($_COOKIE['oc_username']); + OC_Util::redirectToDefaultPage(); + } + else { + OC_User::unsetMagicInCookie(); + } + return true; + } + + public static function tryFormLogin() { + if(!isset($_POST["user"]) + || !isset($_POST['password']) + || !isset($_SESSION['sectoken']) + || !isset($_POST['sectoken']) + || ($_SESSION['sectoken']!=$_POST['sectoken']) ) { + return false; + } + OC_App::loadApps(); + if(OC_User::login($_POST["user"], $_POST["password"])) { + if(!empty($_POST["remember_login"])){ + if(defined("DEBUG") && DEBUG) { + OC_Log::write('core','Setting remember login to cookie', OC_Log::DEBUG); + } + $token = md5($_POST["user"].time().$_POST['password']); + OC_Preferences::setValue($_POST['user'], 'login', 'token', $token); + OC_User::setMagicInCookie($_POST["user"], $token); + } + else { + OC_User::unsetMagicInCookie(); + } + OC_Util::redirectToDefaultPage(); + } + return true; + } + + public static function tryBasicAuthLogin() { + if (!isset($_SERVER["PHP_AUTH_USER"]) + || !isset($_SERVER["PHP_AUTH_PW"])){ + return false; + } + OC_App::loadApps(array('authentication')); + if (OC_User::login($_SERVER["PHP_AUTH_USER"],$_SERVER["PHP_AUTH_PW"])) { + //OC_Log::write('core',"Logged in with HTTP Authentication",OC_Log::DEBUG); + OC_User::unsetMagicInCookie(); + $_REQUEST['redirect_url'] = (isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:''); + OC_Util::redirectToDefaultPage(); + } + return true; + } + } // define runtime variables - unless this already has been done -if( !isset( $RUNTIME_NOSETUPFS )){ - $RUNTIME_NOSETUPFS = false; -} if( !isset( $RUNTIME_NOAPPS )){ $RUNTIME_NOAPPS = false; } diff --git a/lib/exception.php b/lib/exception.php deleted file mode 100644 index db516fc12d2..00000000000 --- a/lib/exception.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php -/** - * ownCloud - * - * @author Georg Ehrke - * @copyright 2012 georg@owncloud.com - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ -class OC_Exception extends Exception{ - - function __construct($message = null, $code = 0, $file = null, $line = null){ - parent::__construct($message, $code); - if(!is_null($file)){ - $this->file = $file; - } - if(!is_null($line)){ - $this->line = $line; - } - $this->writelog(); - } - - private function writelog(){ - @OC_Log::write(OC_App::getCurrentApp(), $this->getMessage() . '-' . $this->getFile() . '-' . $this->getLine(), OC_Log::FATAL); - } - - private function generatesysinfo(){ - return array('phpversion' => PHP_VERSION, - 'os' => php_uname('s'), - 'osrelease' => php_uname('r'), - 'osarchitecture' => php_uname('m'), - 'phpserverinterface' => php_sapi_name(), - 'serverprotocol' => $_SERVER['SERVER_PROTOCOL'], - 'requestmethod' => $_SERVER['REQUEST_METHOD'], - 'https' => ($_SERVER['HTTPS']==''?'false':'true'), - 'database'=>(@OC_Config::getValue('dbtype')!=''?@OC_Config::getValue('dbtype'):'') - ); - } - - function __toString(){ - $tmpl = new OC_Template('core', 'exception', 'guest'); - $tmpl->assign('showsysinfo', true); - $tmpl->assign('message', $this->getMessage()); - $tmpl->assign('code', $this->getCode()); - $tmpl->assign('file', $this->getFile()); - $tmpl->assign('line', $this->getLine()); - $tmpl->assign('sysinfo', $this->generatesysinfo()); - $tmpl->printPage(); - } -} - -function oc_exceptionhandler($exception){ - switch($exception->getCode()){ - case E_NOTICE: - case E_DEPRECATED: - case E_USER_NOTICE: - case E_USER_DEPRECATED: - break; - default: - throw new OC_Exception($exception->getMessage(), $exception->getCode(), $exception->getFile(), $exception->getLine()); - break; - } - return true; -} - -function oc_errorhandler($errno , $errstr , $errfile , $errline){ - switch($errno){ - case E_NOTICE: - case E_DEPRECATED: - case E_USER_NOTICE: - case E_USER_DEPRECATED: - break; - default: - throw new OC_Exception($errstr, $errno, $errfile, $errline); - break; - } - return true; -} -set_exception_handler('oc_exceptionhandler'); -set_error_handler('oc_errorhandler'); -error_reporting(E_ERROR | E_WARNING | E_PARSE);
\ No newline at end of file diff --git a/lib/filecache.php b/lib/filecache.php index 8211637d141..352fc695f30 100644 --- a/lib/filecache.php +++ b/lib/filecache.php @@ -65,19 +65,27 @@ class OC_FileCache{ if($root===false){ $root=OC_Filesystem::getRoot(); } - $path=$root.$path; - $parent=self::getParentId($path); - $id=self::getId($path,''); - if(isset(OC_FileCache_Cached::$savedData[$path])){ - $data=array_merge(OC_FileCache_Cached::$savedData[$path],$data); - unset(OC_FileCache_Cached::$savedData[$path]); + $fullpath=$root.$path; + $parent=self::getParentId($fullpath); + $id=self::getId($fullpath,''); + if(isset(OC_FileCache_Cached::$savedData[$fullpath])){ + $data=array_merge(OC_FileCache_Cached::$savedData[$fullpath],$data); + unset(OC_FileCache_Cached::$savedData[$fullpath]); } if($id!=-1){ self::update($id,$data); return; } + + // add parent directory to the file cache if it does not exist yet. + if ($parent == -1 && $fullpath != $root) { + $parentDir = substr(dirname($path), 0, strrpos(dirname($path), DIRECTORY_SEPARATOR)); + self::scanFile($parentDir); + $parent = self::getParentId($fullpath); + } + if(!isset($data['size']) or !isset($data['mtime'])){//save incomplete data for the next time we write it - OC_FileCache_Cached::$savedData[$path]=$data; + OC_FileCache_Cached::$savedData[$fullpath]=$data; return; } if(!isset($data['encrypted'])){ @@ -94,13 +102,13 @@ class OC_FileCache{ $data['versioned']=(int)$data['versioned']; $user=OC_User::getUser(); $query=OC_DB::prepare('INSERT INTO *PREFIX*fscache(parent, name, path, path_hash, size, mtime, ctime, mimetype, mimepart,`user`,writable,encrypted,versioned) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)'); - $result=$query->execute(array($parent,basename($path),$path,md5($path),$data['size'],$data['mtime'],$data['ctime'],$data['mimetype'],$mimePart,$user,$data['writable'],$data['encrypted'],$data['versioned'])); + $result=$query->execute(array($parent,basename($fullpath),$fullpath,md5($fullpath),$data['size'],$data['mtime'],$data['ctime'],$data['mimetype'],$mimePart,$user,$data['writable'],$data['encrypted'],$data['versioned'])); if(OC_DB::isError($result)){ - OC_Log::write('files','error while writing file('.$path.') to cache',OC_Log::ERROR); + OC_Log::write('files','error while writing file('.$fullpath.') to cache',OC_Log::ERROR); } if($cache=OC_Cache::getUserCache(true)){ - $cache->remove('fileid/'.$path);//ensure we don't have -1 cached + $cache->remove('fileid/'.$fullpath);//ensure we don't have -1 cached } } @@ -343,7 +351,7 @@ class OC_FileCache{ * @param string $path * @param OC_EventSource $enventSource (optional) * @param int count (optional) - * @param string root (optionak) + * @param string root (optional) */ public static function scan($path,$eventSource=false,&$count=0,$root=false){ if($eventSource){ diff --git a/lib/filecache/update.php b/lib/filecache/update.php index 93b632acb4e..0b5ff8e2446 100644 --- a/lib/filecache/update.php +++ b/lib/filecache/update.php @@ -152,8 +152,8 @@ class OC_FileCache_Update{ $size=0; $cached=OC_FileCache_Cached::get($path,$root); $cachedSize=isset($cached['size'])?$cached['size']:0; - - if($mimetype=='httpd/unix-directory'){ + + if($view->is_dir($path.'/')){ if(OC_FileCache::inCache($path,$root)){ $cachedContent=OC_FileCache_Cached::getFolderContent($path,$root); foreach($cachedContent as $file){ diff --git a/lib/helper.php b/lib/helper.php index 666bc6badfc..8c362747a27 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -65,52 +65,6 @@ class OC_Helper { } /** - * @brief Returns the server host - * @returns the server host - * - * Returns the server host, even if the website uses one or more - * reverse proxies - */ - public static function serverHost() { - if(OC::$CLI){ - return 'localhost'; - } - if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { - if (strpos($_SERVER['HTTP_X_FORWARDED_HOST'], ",") !== false) { - $host = trim(array_pop(explode(",", $_SERVER['HTTP_X_FORWARDED_HOST']))); - } - else{ - $host=$_SERVER['HTTP_X_FORWARDED_HOST']; - } - } - else{ - $host = $_SERVER['HTTP_HOST']; - } - return $host; - } - - - /** - * @brief Returns the server protocol - * @returns the server protocol - * - * Returns the server protocol. It respects reverse proxy servers and load balancers - */ - public static function serverProtocol() { - if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { - $proto = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']); - }else{ - if(isset($_SERVER['HTTPS']) and !empty($_SERVER['HTTPS']) and ($_SERVER['HTTPS']!='off')) { - $proto = 'https'; - }else{ - $proto = 'http'; - } - } - return($proto); - } - - - /** * @brief Creates an absolute url * @param $app app * @param $file file @@ -120,8 +74,19 @@ class OC_Helper { */ public static function linkToAbsolute( $app, $file ) { $urlLinkTo = self::linkTo( $app, $file ); - $urlLinkTo = self::serverProtocol(). '://' . self::serverHost() . $urlLinkTo; - return $urlLinkTo; + return self::makeURLAbsolute($urlLinkTo); + } + + /** + * @brief Makes an $url absolute + * @param $url the url + * @returns the absolute url + * + * Returns a absolute url to the given app and file. + */ + public static function makeURLAbsolute( $url ) + { + return OC_Request::serverProtocol(). '://' . OC_Request::serverHost() . $url; } /** diff --git a/lib/public/util.php b/lib/public/util.php index 75ca29f7129..9f6f6f32e1e 100644 --- a/lib/public/util.php +++ b/lib/public/util.php @@ -165,7 +165,7 @@ class Util { * reverse proxies */ public static function getServerHost() { - return(\OC_Helper::serverHost()); + return(\OC_Request::serverHost()); } /** @@ -175,7 +175,7 @@ class Util { * Returns the server protocol. It respects reverse proxy servers and load balancers */ public static function getServerProtocol() { - return(\OC_Helper::serverProtocol()); + return(\OC_Request::serverProtocol()); } /** diff --git a/lib/request.php b/lib/request.php index 0b5aaf8ef30..3fe61fbddcd 100644 --- a/lib/request.php +++ b/lib/request.php @@ -7,6 +7,79 @@ */ class OC_Request { + /** + * @brief Returns the server host + * @returns the server host + * + * Returns the server host, even if the website uses one or more + * reverse proxies + */ + public static function serverHost() { + if(OC::$CLI){ + return 'localhost'; + } + if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { + if (strpos($_SERVER['HTTP_X_FORWARDED_HOST'], ",") !== false) { + $host = trim(array_pop(explode(",", $_SERVER['HTTP_X_FORWARDED_HOST']))); + } + else{ + $host=$_SERVER['HTTP_X_FORWARDED_HOST']; + } + } + else{ + $host = $_SERVER['HTTP_HOST']; + } + return $host; + } + + + /** + * @brief Returns the server protocol + * @returns the server protocol + * + * Returns the server protocol. It respects reverse proxy servers and load balancers + */ + public static function serverProtocol() { + if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { + $proto = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']); + }else{ + if(isset($_SERVER['HTTPS']) and !empty($_SERVER['HTTPS']) and ($_SERVER['HTTPS']!='off')) { + $proto = 'https'; + }else{ + $proto = 'http'; + } + } + return($proto); + } + + /** + * @brief get Path info from request + * @returns string Path info or false when not found + */ + public static function getPathInfo() { + if (array_key_exists('PATH_INFO', $_SERVER)){ + $path_info = $_SERVER['PATH_INFO']; + }else{ + $path_info = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME'])); + // following is taken from Sabre_DAV_URLUtil::decodePathSegment + $path_info = rawurldecode($path_info); + $encoding = mb_detect_encoding($path_info, array('UTF-8','ISO-8859-1')); + + switch($encoding) { + + case 'ISO-8859-1' : + $path_info = utf8_encode($path_info); + + } + // end copy + } + return $path_info; + } + + /** + * @brief Check if this is a no-cache request + * @returns true for no-cache + */ static public function isNoCache() { if (!isset($_SERVER['HTTP_CACHE_CONTROL'])) { return false; @@ -14,6 +87,10 @@ class OC_Request { return $_SERVER['HTTP_CACHE_CONTROL'] == 'no-cache'; } + /** + * @brief Check if the requestor understands gzip + * @returns true for gzip encoding supported + */ static public function acceptGZip() { if (!isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { return false; diff --git a/lib/util.php b/lib/util.php index f26fa63e446..4c5d416f9f2 100755 --- a/lib/util.php +++ b/lib/util.php @@ -348,7 +348,7 @@ class OC_Util { else { $defaultpage = OC_Appconfig::getValue('core', 'defaultpage'); if ($defaultpage) { - $location = OC_Helper::serverProtocol().'://'.OC_Helper::serverHost().OC::$WEBROOT.'/'.$defaultpage; + $location = OC_Helper::makeURLAbsolute(OC::$WEBROOT.'/'.$defaultpage); } else { $location = OC_Helper::linkToAbsolute( 'files', 'index.php' ); @@ -476,7 +476,7 @@ class OC_Util { @fclose($fp); // accessing the file via http - $url = OC_Helper::serverProtocol(). '://' . OC_Helper::serverHost() . OC::$WEBROOT.'/data'.$filename; + $url = OC_Helper::makeURLAbsolute(OC::$WEBROOT.'/data'.$filename); $fp = @fopen($url, 'r'); $content=@fread($fp, 2048); @fclose($fp); diff --git a/public.php b/public.php index 8383f36a246..0581631f41f 100644 --- a/public.php +++ b/public.php @@ -1,5 +1,4 @@ <?php -$RUNTIME_NOSETUPFS = true; $RUNTIME_NOAPPS = TRUE; require_once('lib/base.php'); $file = OCP\CONFIG::getAppValue('core', 'public_' . strip_tags($_GET['service'])); diff --git a/remote.php b/remote.php index 8dc4df1bd23..41d2a7ab349 100644 --- a/remote.php +++ b/remote.php @@ -1,12 +1,7 @@ <?php -$RUNTIME_NOSETUPFS = true; $RUNTIME_NOAPPS = TRUE; require_once('lib/base.php'); -if (array_key_exists('PATH_INFO', $_SERVER)){ - $path_info = $_SERVER['PATH_INFO']; -}else{ - $path_info = substr($_SERVER['REQUEST_URI'], strlen($_SERVER['SCRIPT_NAME'])); -} +$path_info = OC_Request::getPathInfo(); if ($path_info === false) { OC_Response::setStatus(OC_Response::STATUS_NOT_FOUND); exit; diff --git a/settings/l10n/ca.php b/settings/l10n/ca.php index 2917f8a84c4..c868bc278c3 100644 --- a/settings/l10n/ca.php +++ b/settings/l10n/ca.php @@ -1,10 +1,12 @@ <?php $TRANSLATIONS = array( +"Unable to load list from App Store" => "No s'ha pogut carregar la llista des de l'App Store", "Email saved" => "S'ha desat el correu electrònic", "Invalid email" => "El correu electrònic no és vàlid", "OpenID Changed" => "OpenID ha canviat", "Invalid request" => "Sol.licitud no vàlida", "Authentication error" => "Error d'autenticació", "Language changed" => "S'ha canviat l'idioma", +"Error" => "Error", "Disable" => "Desactiva", "Enable" => "Activa", "Saving..." => "S'està desant...", diff --git a/settings/l10n/de.php b/settings/l10n/de.php index 5610a4ec03a..e0cb1259537 100644 --- a/settings/l10n/de.php +++ b/settings/l10n/de.php @@ -1,10 +1,12 @@ <?php $TRANSLATIONS = array( +"Unable to load list from App Store" => "Liste der Apps im Store konnte nicht geladen werden.", "Email saved" => "E-Mail gespeichert", "Invalid email" => "Ungültige E-Mail", "OpenID Changed" => "OpenID geändert", "Invalid request" => "Ungültige Anfrage", "Authentication error" => "Anmeldungsfehler", "Language changed" => "Sprache geändert", +"Error" => "Fehler", "Disable" => "Deaktivieren", "Enable" => "Aktivieren", "Saving..." => "Speichern...", @@ -19,7 +21,7 @@ "by" => "von", "Documentation" => "Dokumentation", "Managing Big Files" => "Große Dateien verwalten", -"Ask a question" => "Stell' eine Frage", +"Ask a question" => "Stell eine Frage", "Problems connecting to help database." => "Probleme bei der Verbindung zur Hilfe-Datenbank.", "Go there manually." => "Datenbank direkt besuchen.", "Answer" => "Antwort", diff --git a/settings/l10n/fa.php b/settings/l10n/fa.php index b5345972acc..5fe6df4d9d9 100644 --- a/settings/l10n/fa.php +++ b/settings/l10n/fa.php @@ -4,10 +4,12 @@ "OpenID Changed" => "OpenID تغییر کرد", "Invalid request" => "درخواست غیر قابل قبول", "Language changed" => "زبان تغییر کرد", +"Error" => "خطا", "Disable" => "غیرفعال", "Enable" => "فعال", "Saving..." => "درحال ذخیره ...", "__language_name__" => "__language_name__", +"Security Warning" => "اخطار امنیتی", "Log" => "کارنامه", "More" => "بیشتر", "Add your App" => "برنامه خود را بیافزایید", diff --git a/settings/l10n/fi_FI.php b/settings/l10n/fi_FI.php index 4fbdca8024a..81d1b9d0e61 100644 --- a/settings/l10n/fi_FI.php +++ b/settings/l10n/fi_FI.php @@ -5,6 +5,7 @@ "Invalid request" => "Virheellinen pyyntö", "Authentication error" => "Todennusvirhe", "Language changed" => "Kieli on vaihdettu", +"Error" => "Virhe", "Disable" => "Poista käytöstä", "Enable" => "Käytä", "Saving..." => "Tallennetaan...", diff --git a/settings/l10n/fr.php b/settings/l10n/fr.php index 8ddfcc7f97a..1c2f94620ff 100644 --- a/settings/l10n/fr.php +++ b/settings/l10n/fr.php @@ -1,10 +1,12 @@ <?php $TRANSLATIONS = array( +"Unable to load list from App Store" => "Impossible de charger la liste depuis l'App Store", "Email saved" => "E-mail sauvegardé", "Invalid email" => "E-mail invalide", "OpenID Changed" => "Identifiant OpenID changé", "Invalid request" => "Requête invalide", "Authentication error" => "Erreur d'authentification", "Language changed" => "Langue changée", +"Error" => "Erreur", "Disable" => "Désactiver", "Enable" => "Activer", "Saving..." => "Sauvegarde...", |