Merge branch 'master' into no-css-js-delivery-via-php

This commit is contained in:
Thomas Müller 2014-02-20 13:52:53 +01:00
commit 31bab55847
304 changed files with 2174 additions and 3344 deletions

View File

@ -9,8 +9,21 @@ OCP\JSON::callCheck();
// Get data // Get data
$dir = stripslashes($_POST["dir"]); $dir = stripslashes($_POST["dir"]);
$files = isset($_POST["file"]) ? $_POST["file"] : $_POST["files"]; $files = isset($_POST["file"]) ? $_POST["file"] : $_POST["files"];
$allFiles = isset($_POST["allfiles"]) ? $_POST["allfiles"] : $_POST["allfiles"];
if ($allFiles === 'true') {
$allFiles = true;
}
$files = json_decode($files); // delete all files in dir ?
if ($allFiles) {
$files = array();
$fileList = \OC\Files\Filesystem::getDirectoryContent($dir);
foreach ($fileList as $fileInfo) {
$files[] = $fileInfo['name'];
}
} else {
$files = json_decode($files);
}
$filesWithError = ''; $filesWithError = '';
$success = true; $success = true;

View File

@ -50,16 +50,22 @@ $l10n = \OC_L10n::get('files');
$result = array( $result = array(
'success' => false, 'success' => false,
'data' => NULL 'data' => NULL
); );
$trimmedFileName = trim($filename);
if(trim($filename) === '') { if($trimmedFileName === '') {
$result['data'] = array('message' => (string)$l10n->t('File name cannot be empty.')); $result['data'] = array('message' => (string)$l10n->t('File name cannot be empty.'));
OCP\JSON::error($result); OCP\JSON::error($result);
exit(); exit();
} }
if($trimmedFileName === '.' || $trimmedFileName === '..') {
$result['data'] = array('message' => (string)$l10n->t('"%s" is an invalid file name.', $trimmedFileName));
OCP\JSON::error($result);
exit();
}
if(strpos($filename, '/') !== false) { if(!OCP\Util::isValidFileName($filename)) {
$result['data'] = array('message' => (string)$l10n->t('File name must not contain "/". Please choose a different name.')); $result['data'] = array('message' => (string)$l10n->t("Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed."));
OCP\JSON::error($result); OCP\JSON::error($result);
exit(); exit();
} }

View File

@ -23,8 +23,8 @@ if(trim($foldername) === '') {
exit(); exit();
} }
if(strpos($foldername, '/') !== false) { if(!OCP\Util::isValidFileName($foldername)) {
$result['data'] = array('message' => $l10n->t('Folder name must not contain "/". Please choose a different name.')); $result['data'] = array('message' => (string)$l10n->t("Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed."));
OCP\JSON::error($result); OCP\JSON::error($result);
exit(); exit();
} }

View File

@ -3,17 +3,14 @@
// fix webdav properties,add namespace in front of the property, update for OC4.5 // fix webdav properties,add namespace in front of the property, update for OC4.5
$installedVersion=OCP\Config::getAppValue('files', 'installed_version'); $installedVersion=OCP\Config::getAppValue('files', 'installed_version');
if (version_compare($installedVersion, '1.1.6', '<')) { if (version_compare($installedVersion, '1.1.6', '<')) {
$query = OC_DB::prepare( 'SELECT `propertyname`, `propertypath`, `userid` FROM `*PREFIX*properties`' ); $concat = OC_DB::getConnection()->getDatabasePlatform()->
$result = $query->execute(); getConcatExpression( '\'{DAV:}\'', '`propertyname`' );
$updateQuery = OC_DB::prepare('UPDATE `*PREFIX*properties`' $query = OC_DB::prepare('
.' SET `propertyname` = ?' UPDATE `*PREFIX*properties`
.' WHERE `userid` = ?' SET `propertyname` = ' . $concat . '
.' AND `propertypath` = ?'); WHERE `propertyname` NOT LIKE \'{%\'
while( $row = $result->fetchRow()) { ');
if ( $row['propertyname'][0] != '{' ) { $query->execute();
$updateQuery->execute(array('{DAV:}' + $row['propertyname'], $row['userid'], $row['propertypath']));
}
}
} }
//update from OC 3 //update from OC 3

View File

@ -582,30 +582,49 @@ window.FileList={
}}); }});
} }
}, },
do_delete:function(files) { do_delete:function(files, dir) {
if (files.substr) { var params;
if (files && files.substr) {
files=[files]; files=[files];
} }
for (var i=0; i<files.length; i++) { if (files) {
var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete"); for (var i=0; i<files.length; i++) {
deleteAction.removeClass('delete-icon').addClass('progress-icon'); var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon');
}
} }
// Finish any existing actions // Finish any existing actions
if (FileList.lastAction) { if (FileList.lastAction) {
FileList.lastAction(); FileList.lastAction();
} }
var fileNames = JSON.stringify(files); var params = {
dir: dir || FileList.getCurrentDirectory()
};
if (files) {
params.files = JSON.stringify(files);
}
else {
// no files passed, delete all in current dir
params.allfiles = true;
}
$.post(OC.filePath('files', 'ajax', 'delete.php'), $.post(OC.filePath('files', 'ajax', 'delete.php'),
{dir:$('#dir').val(),files:fileNames}, params,
function(result) { function(result) {
if (result.status === 'success') { if (result.status === 'success') {
$.each(files,function(index,file) { if (params.allfiles) {
var files = FileList.findFileEl(file); // clear whole list
files.remove(); $('#fileList tr').remove();
files.find('input[type="checkbox"]').removeAttr('checked'); }
files.removeClass('selected'); else {
}); $.each(files,function(index,file) {
var files = FileList.findFileEl(file);
files.remove();
files.find('input[type="checkbox"]').removeAttr('checked');
files.removeClass('selected');
});
}
procesSelection(); procesSelection();
checkTrashStatus(); checkTrashStatus();
FileList.updateFileSummary(); FileList.updateFileSummary();
@ -622,10 +641,17 @@ window.FileList={
setTimeout(function() { setTimeout(function() {
OC.Notification.hide(); OC.Notification.hide();
}, 10000); }, 10000);
$.each(files,function(index,file) { if (params.allfiles) {
var deleteAction = FileList.findFileEl(file).find('.action.delete'); // reload the page as we don't know what files were deleted
deleteAction.removeClass('progress-icon').addClass('delete-icon'); // and which ones remain
}); FileList.reload();
}
else {
$.each(files,function(index,file) {
var deleteAction = FileList.findFileEl(file).find('.action.delete');
deleteAction.removeClass('progress-icon').addClass('delete-icon');
});
}
} }
}); });
}, },
@ -794,6 +820,13 @@ window.FileList={
$(e).removeClass("searchresult"); $(e).removeClass("searchresult");
}); });
}, },
/**
* Returns whether all files are selected
* @return true if all files are selected, false otherwise
*/
isAllSelected: function() {
return $('#select_all').prop('checked');
},
/** /**
* Returns the download URL of the given file * Returns the download URL of the given file
@ -801,10 +834,13 @@ window.FileList={
* @param dir optional directory in which the file name is, defaults to the current directory * @param dir optional directory in which the file name is, defaults to the current directory
*/ */
getDownloadUrl: function(filename, dir) { getDownloadUrl: function(filename, dir) {
var files = filename;
if ($.isArray(filename)) {
files = JSON.stringify(filename);
}
var params = { var params = {
files: filename,
dir: dir || FileList.getCurrentDirectory(), dir: dir || FileList.getCurrentDirectory(),
download: null files: files
}; };
return OC.filePath('files', 'ajax', 'download.php') + '?' + OC.buildQueryString(params); return OC.filePath('files', 'ajax', 'download.php') + '?' + OC.buildQueryString(params);
} }

View File

@ -364,23 +364,26 @@ $(document).ready(function() {
}); });
$('.download').click('click',function(event) { $('.download').click('click',function(event) {
var files=getSelectedFilesTrash('name'); var files;
var fileslist = JSON.stringify(files); var dir = FileList.getCurrentDirectory();
var dir=$('#dir').val()||'/'; if (FileList.isAllSelected()) {
OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.')); files = OC.basename(dir);
// use special download URL if provided, e.g. for public shared files dir = OC.dirname(dir) || '/';
var downloadURL = document.getElementById("downloadURL");
if ( downloadURL ) {
window.location = downloadURL.value+"&download&files=" + encodeURIComponent(fileslist);
} else {
window.location = OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: fileslist });
} }
else {
files = getSelectedFilesTrash('name');
}
OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.'));
OC.redirect(FileList.getDownloadUrl(files, dir));
return false; return false;
}); });
$('.delete-selected').click(function(event) { $('.delete-selected').click(function(event) {
var files=getSelectedFilesTrash('name'); var files=getSelectedFilesTrash('name');
event.preventDefault(); event.preventDefault();
if (FileList.isAllSelected()) {
files = null;
}
FileList.do_delete(files); FileList.do_delete(files);
return false; return false;
}); });

View File

@ -69,7 +69,7 @@ describe('FileActions tests', function() {
$tr.find('.action[data-action=Download]').click(); $tr.find('.action[data-action=Download]').click();
expect(redirectStub.calledOnce).toEqual(true); expect(redirectStub.calledOnce).toEqual(true);
expect(redirectStub.getCall(0).args[0]).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?files=test%20download%20File.txt&dir=%2Fsubdir&download'); expect(redirectStub.getCall(0).args[0]).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=test%20download%20File.txt');
redirectStub.restore(); redirectStub.restore();
}); });
}); });

View File

@ -58,8 +58,15 @@ describe('FileList tests', function() {
expect($tr.attr('data-permissions')).toEqual('31'); expect($tr.attr('data-permissions')).toEqual('31');
//expect($tr.attr('data-mime')).toEqual('httpd/unix-directory'); //expect($tr.attr('data-mime')).toEqual('httpd/unix-directory');
}); });
it('returns correct download URL', function() { describe('Download Url', function() {
expect(FileList.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?files=some%20file.txt&dir=%2Fsubdir&download'); it('returns correct download URL for single files', function() {
expect(FileList.getDownloadUrl('some file.txt', '/anotherpath/abc')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?files=some%20file.txt&dir=%2Fanotherpath%2Fabc&download'); expect(FileList.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=some%20file.txt');
expect(FileList.getDownloadUrl('some file.txt', '/anotherpath/abc')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fanotherpath%2Fabc&files=some%20file.txt');
$('#dir').val('/');
expect(FileList.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=some%20file.txt');
});
it('returns correct download URL for multiple files', function() {
expect(FileList.getDownloadUrl(['a b c.txt', 'd e f.txt'])).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22a%20b%20c.txt%22%2C%22d%20e%20f.txt%22%5D');
});
}); });
}); });

View File

@ -425,7 +425,7 @@ class Helper {
/** /**
* @brief glob uses different pattern than regular expressions, escape glob pattern only * @brief glob uses different pattern than regular expressions, escape glob pattern only
* @param string $path unescaped path * @param string $path unescaped path
* @return escaped path * @return string path
*/ */
public static function escapeGlobPattern($path) { public static function escapeGlobPattern($path) {
return preg_replace('/(\*|\?|\[)/', '[$1]', $path); return preg_replace('/(\*|\?|\[)/', '[$1]', $path);

View File

@ -67,7 +67,7 @@ class Google extends \OC\Files\Storage\Common {
/** /**
* Get the Google_DriveFile object for the specified path * Get the Google_DriveFile object for the specified path
* @param string $path * @param string $path
* @return Google_DriveFile|false * @return string
*/ */
private function getDriveFile($path) { private function getDriveFile($path) {
// Remove leading and trailing slashes // Remove leading and trailing slashes

View File

@ -11,6 +11,7 @@ namespace OC\Files\Storage;
abstract class StreamWrapper extends Common { abstract class StreamWrapper extends Common {
/** /**
* @param string $path
* @return string|null * @return string|null
*/ */
abstract public function constructUrl($path); abstract public function constructUrl($path);

View File

@ -99,7 +99,9 @@ class DAV extends \OC\Files\Storage\Common{
public function rmdir($path) { public function rmdir($path) {
$this->init(); $this->init();
$path=$this->cleanPath($path); $path=$this->cleanPath($path) . '/';
// FIXME: some WebDAV impl return 403 when trying to DELETE
// a non-empty folder
return $this->simpleResponse('DELETE', $path, null, 204); return $this->simpleResponse('DELETE', $path, null, 204);
} }
@ -107,7 +109,7 @@ class DAV extends \OC\Files\Storage\Common{
$this->init(); $this->init();
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try { try {
$response=$this->client->propfind($path, array(), 1); $response=$this->client->propfind($this->encodePath($path), array(), 1);
$id=md5('webdav'.$this->root.$path); $id=md5('webdav'.$this->root.$path);
$content = array(); $content = array();
$files=array_keys($response); $files=array_keys($response);
@ -127,8 +129,11 @@ class DAV extends \OC\Files\Storage\Common{
$this->init(); $this->init();
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try { try {
$response=$this->client->propfind($path, array('{DAV:}resourcetype')); $response=$this->client->propfind($this->encodePath($path), array('{DAV:}resourcetype'));
$responseType=$response["{DAV:}resourcetype"]->resourceType; $responseType = array();
if (isset($response["{DAV:}resourcetype"])) {
$responseType=$response["{DAV:}resourcetype"]->resourceType;
}
return (count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file'; return (count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file';
} catch(\Exception $e) { } catch(\Exception $e) {
error_log($e->getMessage()); error_log($e->getMessage());
@ -141,7 +146,7 @@ class DAV extends \OC\Files\Storage\Common{
$this->init(); $this->init();
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try { try {
$this->client->propfind($path, array('{DAV:}resourcetype')); $this->client->propfind($this->encodePath($path), array('{DAV:}resourcetype'));
return true;//no 404 exception return true;//no 404 exception
} catch(\Exception $e) { } catch(\Exception $e) {
return false; return false;
@ -166,7 +171,7 @@ class DAV extends \OC\Files\Storage\Common{
$curl = curl_init(); $curl = curl_init();
$fp = fopen('php://temp', 'r+'); $fp = fopen('php://temp', 'r+');
curl_setopt($curl, CURLOPT_USERPWD, $this->user.':'.$this->password); curl_setopt($curl, CURLOPT_USERPWD, $this->user.':'.$this->password);
curl_setopt($curl, CURLOPT_URL, $this->createBaseUri().str_replace(' ', '%20', $path)); curl_setopt($curl, CURLOPT_URL, $this->createBaseUri().$this->encodePath($path));
curl_setopt($curl, CURLOPT_FILE, $fp); curl_setopt($curl, CURLOPT_FILE, $fp);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
if ($this->secure === true) { if ($this->secure === true) {
@ -178,6 +183,10 @@ class DAV extends \OC\Files\Storage\Common{
} }
curl_exec ($curl); curl_exec ($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
\OCP\Util::writeLog("webdav client", 'curl GET ' . curl_getinfo($curl, CURLINFO_EFFECTIVE_URL) . ' returned status code ' . $statusCode, \OCP\Util::ERROR);
}
curl_close ($curl); curl_close ($curl);
rewind($fp); rewind($fp);
return $fp; return $fp;
@ -220,7 +229,7 @@ class DAV extends \OC\Files\Storage\Common{
$this->init(); $this->init();
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try { try {
$response=$this->client->propfind($path, array('{DAV:}quota-available-bytes')); $response=$this->client->propfind($this->encodePath($path), array('{DAV:}quota-available-bytes'));
if (isset($response['{DAV:}quota-available-bytes'])) { if (isset($response['{DAV:}quota-available-bytes'])) {
return (int)$response['{DAV:}quota-available-bytes']; return (int)$response['{DAV:}quota-available-bytes'];
} else { } else {
@ -240,7 +249,12 @@ class DAV extends \OC\Files\Storage\Common{
// if file exists, update the mtime, else create a new empty file // if file exists, update the mtime, else create a new empty file
if ($this->file_exists($path)) { if ($this->file_exists($path)) {
$this->client->proppatch($path, array('{DAV:}lastmodified' => $mtime)); try {
$this->client->proppatch($this->encodePath($path), array('{DAV:}lastmodified' => $mtime));
}
catch (\Sabre_DAV_Exception_NotImplemented $e) {
return false;
}
} else { } else {
$this->file_put_contents($path, ''); $this->file_put_contents($path, '');
} }
@ -276,13 +290,17 @@ class DAV extends \OC\Files\Storage\Common{
} }
} }
curl_exec ($curl); curl_exec ($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode !== 200) {
\OCP\Util::writeLog("webdav client", 'curl GET ' . curl_getinfo($curl, CURLINFO_EFFECTIVE_URL) . ' returned status code ' . $statusCode, \OCP\Util::ERROR);
}
curl_close ($curl); curl_close ($curl);
} }
public function rename($path1, $path2) { public function rename($path1, $path2) {
$this->init(); $this->init();
$path1=$this->cleanPath($path1); $path1 = $this->encodePath($this->cleanPath($path1));
$path2=$this->createBaseUri().$this->cleanPath($path2); $path2 = $this->createBaseUri().$this->encodePath($this->cleanPath($path2));
try { try {
$this->client->request('MOVE', $path1, null, array('Destination'=>$path2)); $this->client->request('MOVE', $path1, null, array('Destination'=>$path2));
return true; return true;
@ -293,8 +311,8 @@ class DAV extends \OC\Files\Storage\Common{
public function copy($path1, $path2) { public function copy($path1, $path2) {
$this->init(); $this->init();
$path1=$this->cleanPath($path1); $path1 = $this->encodePath($this->cleanPath($path1));
$path2=$this->createBaseUri().$this->cleanPath($path2); $path2 = $this->createBaseUri().$this->encodePath($this->cleanPath($path2));
try { try {
$this->client->request('COPY', $path1, null, array('Destination'=>$path2)); $this->client->request('COPY', $path1, null, array('Destination'=>$path2));
return true; return true;
@ -307,7 +325,7 @@ class DAV extends \OC\Files\Storage\Common{
$this->init(); $this->init();
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try { try {
$response=$this->client->propfind($path, array('{DAV:}getlastmodified', '{DAV:}getcontentlength')); $response = $this->client->propfind($this->encodePath($path), array('{DAV:}getlastmodified', '{DAV:}getcontentlength'));
return array( return array(
'mtime'=>strtotime($response['{DAV:}getlastmodified']), 'mtime'=>strtotime($response['{DAV:}getlastmodified']),
'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0, 'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0,
@ -321,8 +339,11 @@ class DAV extends \OC\Files\Storage\Common{
$this->init(); $this->init();
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try { try {
$response=$this->client->propfind($path, array('{DAV:}getcontenttype', '{DAV:}resourcetype')); $response=$this->client->propfind($this->encodePath($path), array('{DAV:}getcontenttype', '{DAV:}resourcetype'));
$responseType=$response["{DAV:}resourcetype"]->resourceType; $responseType = array();
if (isset($response["{DAV:}resourcetype"])) {
$responseType=$response["{DAV:}resourcetype"]->resourceType;
}
$type=(count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file'; $type=(count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file';
if ($type=='dir') { if ($type=='dir') {
return 'httpd/unix-directory'; return 'httpd/unix-directory';
@ -336,12 +357,25 @@ class DAV extends \OC\Files\Storage\Common{
} }
} }
/**
* @param string $path
*/
public function cleanPath($path) { public function cleanPath($path) {
$path = \OC\Files\Filesystem::normalizePath($path); $path = \OC\Files\Filesystem::normalizePath($path);
// remove leading slash // remove leading slash
return substr($path, 1); return substr($path, 1);
} }
/**
* URL encodes the given path but keeps the slashes
* @param string $path to encode
* @return string encoded path
*/
private function encodePath($path) {
// slashes need to stay
return str_replace('%2F', '/', rawurlencode($path));
}
/** /**
* @param string $method * @param string $method
* @param string $path * @param string $path
@ -350,7 +384,7 @@ class DAV extends \OC\Files\Storage\Common{
private function simpleResponse($method, $path, $body, $expected) { private function simpleResponse($method, $path, $body, $expected) {
$path=$this->cleanPath($path); $path=$this->cleanPath($path);
try { try {
$response=$this->client->request($method, $path, $body); $response=$this->client->request($method, $this->encodePath($path), $body);
return $response['statusCode']==$expected; return $response['statusCode']==$expected;
} catch(\Exception $e) { } catch(\Exception $e) {
return false; return false;

View File

@ -21,7 +21,11 @@ return array(
'host'=>'localhost', 'host'=>'localhost',
'user'=>'test', 'user'=>'test',
'password'=>'test', 'password'=>'test',
'root'=>'/owncloud/files/webdav.php', 'root'=>'',
// wait delay in seconds after write operations
// (only in tests)
// set to higher value for lighttpd webdav
'wait'=> 0
), ),
'owncloud'=>array( 'owncloud'=>array(
'run'=>true, 'run'=>true,

View File

@ -18,6 +18,9 @@ class DAV extends Storage {
if ( ! is_array($this->config) or ! isset($this->config['webdav']) or ! $this->config['webdav']['run']) { if ( ! is_array($this->config) or ! isset($this->config['webdav']) or ! $this->config['webdav']['run']) {
$this->markTestSkipped('WebDAV backend not configured'); $this->markTestSkipped('WebDAV backend not configured');
} }
if (isset($this->config['webdav']['wait'])) {
$this->waitDelay = $this->config['webdav']['wait'];
}
$this->config['webdav']['root'] .= '/' . $id; //make sure we have an new empty folder to work in $this->config['webdav']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
$this->instance = new \OC\Files\Storage\DAV($this->config['webdav']); $this->instance = new \OC\Files\Storage\DAV($this->config['webdav']);
$this->instance->mkdir('/'); $this->instance->mkdir('/');

View File

@ -1,3 +1,15 @@
/*
* Copyright (c) 2014
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
/* global OC, FileList, FileActions */
// Override download path to files_sharing/public.php // Override download path to files_sharing/public.php
function fileDownloadPath(dir, file) { function fileDownloadPath(dir, file) {
var url = $('#downloadURL').val(); var url = $('#downloadURL').val();
@ -28,12 +40,20 @@ $(document).ready(function() {
// override since the format is different // override since the format is different
FileList.getDownloadUrl = function(filename, dir) { FileList.getDownloadUrl = function(filename, dir) {
// we use this because we need the service and token attributes if ($.isArray(filename)) {
var tr = FileList.findFileEl(filename); filename = JSON.stringify(filename);
if (tr.length > 0) {
return $(tr).find('a.name').attr('href') + '&download';
} }
return null; var path = dir || FileList.getCurrentDirectory();
var params = {
service: 'files',
t: $('#sharingToken').val(),
path: path,
download: null
};
if (filename) {
params.files = filename;
}
return OC.filePath('', '', 'public.php') + '?' + OC.buildQueryString(params);
}; };
} }

View File

@ -396,7 +396,7 @@ class Shared_Cache extends Cache {
* use the one with the highest id gives the best result with the background scanner, since that is most * use the one with the highest id gives the best result with the background scanner, since that is most
* likely the folder where we stopped scanning previously * likely the folder where we stopped scanning previously
* *
* @return string|bool the path of the folder or false when no folder matched * @return boolean the path of the folder or false when no folder matched
*/ */
public function getIncomplete() { public function getIncomplete() {
return false; return false;

View File

@ -41,6 +41,7 @@ class Shared extends \OC\Files\Storage\Common {
/** /**
* @brief Get the source file path, permissions, and owner for a shared file * @brief Get the source file path, permissions, and owner for a shared file
* @param string Shared target file path * @param string Shared target file path
* @param string $target
* @return Returns array with the keys path, permissions, and owner or false if not found * @return Returns array with the keys path, permissions, and owner or false if not found
*/ */
public function getFile($target) { public function getFile($target) {

View File

@ -2,42 +2,38 @@
OCP\JSON::checkLoggedIn(); OCP\JSON::checkLoggedIn();
OCP\JSON::callCheck(); OCP\JSON::callCheck();
$folder = isset($_POST['dir']) ? $_POST['dir'] : '/';
// "empty trash" command // "empty trash" command
if (isset($_POST['allfiles']) and $_POST['allfiles'] === 'true'){ if (isset($_POST['allfiles']) and $_POST['allfiles'] === 'true'){
$deleteAll = true; $deleteAll = true;
$folder = isset($_POST['dir']) ? $_POST['dir'] : '/';
if ($folder === '/' || $folder === '') { if ($folder === '/' || $folder === '') {
OCA\Files_Trashbin\Trashbin::deleteAll(); OCA\Files_Trashbin\Trashbin::deleteAll();
$list = array(); $list = array();
} else { } else {
$dirname = dirname($folder);
if ( $dirname !== '/' && $dirname !== '.' ) {
$dirlisting = '1';
} else {
$dirlisting = '0';
}
$list[] = $folder; $list[] = $folder;
$folder = dirname($folder);
} }
} }
else { else {
$deleteAll = false; $deleteAll = false;
$files = $_POST['files']; $files = $_POST['files'];
$dirlisting = $_POST['dirlisting'];
$list = json_decode($files); $list = json_decode($files);
} }
$folder = rtrim($folder, '/') . '/';
$error = array(); $error = array();
$success = array(); $success = array();
$i = 0; $i = 0;
foreach ($list as $file) { foreach ($list as $file) {
if ( $dirlisting === '0') { if ($folder === '/') {
$file = ltrim($file, '/'); $file = ltrim($file, '/');
$delimiter = strrpos($file, '.d'); $delimiter = strrpos($file, '.d');
$filename = substr($file, 0, $delimiter); $filename = substr($file, 0, $delimiter);
$timestamp = substr($file, $delimiter+2); $timestamp = substr($file, $delimiter+2);
} else { } else {
$filename = $file; $filename = $folder . '/' . $file;
$timestamp = null; $timestamp = null;
} }

View File

@ -4,15 +4,36 @@ OCP\JSON::checkLoggedIn();
OCP\JSON::callCheck(); OCP\JSON::callCheck();
$files = $_POST['files']; $files = $_POST['files'];
$dirlisting = $_POST['dirlisting']; $dir = '/';
$list = json_decode($files); if (isset($_POST['dir'])) {
$dir = rtrim($_POST['dir'], '/'). '/';
}
$allFiles = false;
if (isset($_POST['allfiles']) and $_POST['allfiles'] === 'true') {
$allFiles = true;
$list = array();
$dirListing = true;
if ($dir === '' || $dir === '/') {
$dirListing = false;
}
foreach (OCA\Files_Trashbin\Helper::getTrashFiles($dir) as $file) {
$fileName = $file['name'];
if (!$dirListing) {
$fileName .= '.d' . $file['timestamp'];
}
$list[] = $fileName;
}
} else {
$list = json_decode($files);
}
$error = array(); $error = array();
$success = array(); $success = array();
$i = 0; $i = 0;
foreach ($list as $file) { foreach ($list as $file) {
if ( $dirlisting === '0') { $path = $dir . '/' . $file;
if ($dir === '/') {
$file = ltrim($file, '/'); $file = ltrim($file, '/');
$delimiter = strrpos($file, '.d'); $delimiter = strrpos($file, '.d');
$filename = substr($file, 0, $delimiter); $filename = substr($file, 0, $delimiter);
@ -23,9 +44,9 @@ foreach ($list as $file) {
$timestamp = null; $timestamp = null;
} }
if ( !OCA\Files_Trashbin\Trashbin::restore($file, $filename, $timestamp) ) { if ( !OCA\Files_Trashbin\Trashbin::restore($path, $filename, $timestamp) ) {
$error[] = $filename; $error[] = $filename;
OC_Log::write('trashbin','can\'t restore ' . $filename, OC_Log::ERROR); OC_Log::write('trashbin', 'can\'t restore ' . $filename, OC_Log::ERROR);
} else { } else {
$success[$i]['filename'] = $file; $success[$i]['filename'] = $file;
$success[$i]['timestamp'] = $timestamp; $success[$i]['timestamp'] = $timestamp;

View File

@ -1,5 +1,29 @@
/*
* Copyright (c) 2014
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
/* global OC, t, FileList, FileActions */
$(document).ready(function() { $(document).ready(function() {
function removeCallback(result) {
if (result.status !== 'success') {
OC.dialogs.alert(result.data.message, t('core', 'Error'));
}
var files = result.data.success;
for (var i = 0; i < files.length; i++) {
FileList.findFileEl(OC.basename(files[i].filename)).remove();
}
FileList.updateFileSummary();
FileList.updateEmptyContent();
enableActions();
}
if (typeof FileActions !== 'undefined') { if (typeof FileActions !== 'undefined') {
FileActions.register('all', 'Restore', OC.PERMISSION_READ, OC.imagePath('core', 'actions/history'), function(filename) { FileActions.register('all', 'Restore', OC.PERMISSION_READ, OC.imagePath('core', 'actions/history'), function(filename) {
@ -7,22 +31,12 @@ $(document).ready(function() {
var deleteAction = tr.children("td.date").children(".action.delete"); var deleteAction = tr.children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon'); deleteAction.removeClass('delete-icon').addClass('progress-icon');
disableActions(); disableActions();
$.post(OC.filePath('files_trashbin', 'ajax', 'undelete.php'), $.post(OC.filePath('files_trashbin', 'ajax', 'undelete.php'), {
{files: JSON.stringify([$('#dir').val() + '/' + filename]), dirlisting: tr.attr('data-dirlisting')}, files: JSON.stringify([filename]),
function(result) { dir: FileList.getCurrentDirectory()
for (var i = 0; i < result.data.success.length; i++) { },
var row = document.getElementById(result.data.success[i].filename); removeCallback
row.parentNode.removeChild(row);
}
if (result.status !== 'success') {
OC.dialogs.alert(result.data.message, t('core', 'Error'));
}
enableActions();
FileList.updateFileSummary();
FileList.updateEmptyContent();
}
); );
}); });
}; };
@ -34,22 +48,12 @@ $(document).ready(function() {
var deleteAction = tr.children("td.date").children(".action.delete"); var deleteAction = tr.children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon'); deleteAction.removeClass('delete-icon').addClass('progress-icon');
disableActions(); disableActions();
$.post(OC.filePath('files_trashbin', 'ajax', 'delete.php'), $.post(OC.filePath('files_trashbin', 'ajax', 'delete.php'), {
{files: JSON.stringify([$('#dir').val() + '/' +filename]), dirlisting: tr.attr('data-dirlisting')}, files: JSON.stringify([filename]),
function(result) { dir: FileList.getCurrentDirectory()
for (var i = 0; i < result.data.success.length; i++) { },
var row = document.getElementById(result.data.success[i].filename); removeCallback
row.parentNode.removeChild(row);
}
if (result.status !== 'success') {
OC.dialogs.alert(result.data.message, t('core', 'Error'));
}
enableActions();
FileList.updateFileSummary();
FileList.updateEmptyContent();
}
); );
}); });
// Sets the select_all checkbox behaviour : // Sets the select_all checkbox behaviour :
@ -68,29 +72,45 @@ $(document).ready(function() {
$('.undelete').click('click', function(event) { $('.undelete').click('click', function(event) {
event.preventDefault(); event.preventDefault();
var files = getSelectedFiles('file'); var allFiles = $('#select_all').is(':checked');
var fileslist = JSON.stringify(files); var files = [];
var dirlisting = getSelectedFiles('dirlisting')[0]; var params = {};
disableActions(); disableActions();
for (var i = 0; i < files.length; i++) { if (allFiles) {
var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete"); FileList.showMask();
deleteAction.removeClass('delete-icon').addClass('progress-icon'); params = {
allfiles: true,
dir: FileList.getCurrentDirectory()
};
}
else {
files = getSelectedFiles('name');
for (var i = 0; i < files.length; i++) {
var deleteAction = FileList.findFileEl(files[i]).children("td.date").children(".action.delete");
deleteAction.removeClass('delete-icon').addClass('progress-icon');
}
params = {
files: JSON.stringify(files),
dir: FileList.getCurrentDirectory()
};
} }
$.post(OC.filePath('files_trashbin', 'ajax', 'undelete.php'), $.post(OC.filePath('files_trashbin', 'ajax', 'undelete.php'),
{files: fileslist, dirlisting: dirlisting}, params,
function(result) { function(result) {
for (var i = 0; i < result.data.success.length; i++) { if (allFiles) {
var row = document.getElementById(result.data.success[i].filename);
row.parentNode.removeChild(row);
}
if (result.status !== 'success') { if (result.status !== 'success') {
OC.dialogs.alert(result.data.message, t('core', 'Error')); OC.dialogs.alert(result.data.message, t('core', 'Error'));
} }
FileList.hideMask();
// simply remove all files
FileList.update('');
enableActions(); enableActions();
FileList.updateFileSummary();
FileList.updateEmptyContent();
} }
else {
removeCallback(result);
}
}
); );
}); });
@ -101,17 +121,17 @@ $(document).ready(function() {
var params = {}; var params = {};
if (allFiles) { if (allFiles) {
params = { params = {
allfiles: true, allfiles: true,
dir: $('#dir').val() dir: FileList.getCurrentDirectory()
}; };
} }
else { else {
files = getSelectedFiles('file'); files = getSelectedFiles('name');
params = { params = {
files: JSON.stringify(files), files: JSON.stringify(files),
dirlisting: getSelectedFiles('dirlisting')[0] dir: FileList.getCurrentDirectory()
}; };
}; }
disableActions(); disableActions();
if (allFiles) { if (allFiles) {
@ -128,22 +148,17 @@ $(document).ready(function() {
params, params,
function(result) { function(result) {
if (allFiles) { if (allFiles) {
if (result.status !== 'success') {
OC.dialogs.alert(result.data.message, t('core', 'Error'));
}
FileList.hideMask(); FileList.hideMask();
// simply remove all files // simply remove all files
$('#fileList').empty(); FileList.update('');
enableActions();
} }
else { else {
for (var i = 0; i < result.data.success.length; i++) { removeCallback(result);
var row = document.getElementById(result.data.success[i].filename);
row.parentNode.removeChild(row);
}
} }
if (result.status !== 'success') {
OC.dialogs.alert(result.data.message, t('core', 'Error'));
}
enableActions();
FileList.updateFileSummary();
FileList.updateEmptyContent();
} }
); );
@ -208,11 +223,9 @@ function getSelectedFiles(property){
var files=[]; var files=[];
elements.each(function(i,element){ elements.each(function(i,element){
var file={ var file={
name:$(element).attr('data-filename'), name:$(element).attr('data-file'),
file:$('#dir').val() + "/" + $(element).attr('data-file'),
timestamp:$(element).attr('data-timestamp'), timestamp:$(element).attr('data-timestamp'),
type:$(element).attr('data-type'), type:$(element).attr('data-type')
dirlisting:$(element).attr('data-dirlisting')
}; };
if(property){ if(property){
files.push(file[property]); files.push(file[property]);

View File

@ -336,7 +336,7 @@ class Storage {
* @brief deletes used space for files versions in db if user was deleted * @brief deletes used space for files versions in db if user was deleted
* *
* @param type $uid id of deleted user * @param type $uid id of deleted user
* @return result of db delete operation * @return \OC_DB_StatementWrapper of db delete operation
*/ */
public static function deleteUser($uid) { public static function deleteUser($uid) {
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_versions` WHERE `user`=?'); $query = \OC_DB::prepare('DELETE FROM `*PREFIX*files_versions` WHERE `user`=?');
@ -420,8 +420,8 @@ class Storage {
/** /**
* @brief get list of files we want to expire * @brief get list of files we want to expire
* @param integer $currentTime timestamp of current time
* @param array $versions list of versions * @param array $versions list of versions
* @param integer $time
* @return array containing the list of to deleted versions and the size of them * @return array containing the list of to deleted versions and the size of them
*/ */
protected static function getExpireList($time, $versions) { protected static function getExpireList($time, $versions) {

View File

@ -164,6 +164,7 @@ class Access extends LDAPUtility {
/** /**
* gives back the database table for the query * gives back the database table for the query
* @param boolean $isUser
*/ */
private function getMapTable($isUser) { private function getMapTable($isUser) {
if($isUser) { if($isUser) {
@ -644,6 +645,8 @@ class Access extends LDAPUtility {
* @brief executes an LDAP search, optimized for Users * @brief executes an LDAP search, optimized for Users
* @param $filter the LDAP filter for the search * @param $filter the LDAP filter for the search
* @param $attr optional, when a certain attribute shall be filtered out * @param $attr optional, when a certain attribute shall be filtered out
* @param integer $limit
* @param integer $offset
* @returns array with the search result * @returns array with the search result
* *
* Executes an LDAP search * Executes an LDAP search
@ -661,8 +664,10 @@ class Access extends LDAPUtility {
/** /**
* @brief executes an LDAP search, optimized for Groups * @brief executes an LDAP search, optimized for Groups
* @param $filter the LDAP filter for the search * @param string $filter the LDAP filter for the search
* @param $attr optional, when a certain attribute shall be filtered out * @param $attr optional, when a certain attribute shall be filtered out
* @param integer $limit
* @param integer $offset
* @returns array with the search result * @returns array with the search result
* *
* Executes an LDAP search * Executes an LDAP search
@ -757,7 +762,7 @@ class Access extends LDAPUtility {
/** /**
* @brief executes an LDAP search, but counts the results only * @brief executes an LDAP search, but counts the results only
* @param $filter the LDAP filter for the search * @param string $filter the LDAP filter for the search
* @param $base an array containing the LDAP subtree(s) that shall be searched * @param $base an array containing the LDAP subtree(s) that shall be searched
* @param $attr optional, array, one or more attributes that shall be * @param $attr optional, array, one or more attributes that shall be
* retrieved. Results will according to the order in the array. * retrieved. Results will according to the order in the array.
@ -916,6 +921,17 @@ class Access extends LDAPUtility {
return $name; return $name;
} }
/**
* @brief escapes (user provided) parts for LDAP filter
* @param String $input, the provided value
* @returns the escaped string
*/
public function escapeFilterPart($input) {
$search = array('*', '\\', '(', ')');
$replace = array('\\*', '\\\\', '\\(', '\\)');
return str_replace($search, $replace, $input);
}
/** /**
* @brief combines the input filters with AND * @brief combines the input filters with AND
* @param $filters array, the filters to connect * @param $filters array, the filters to connect
@ -1006,6 +1022,9 @@ class Access extends LDAPUtility {
return $this->combineFilterWithOr($filter); return $this->combineFilterWithOr($filter);
} }
/**
* @param string $password
*/
public function areCredentialsValid($name, $password) { public function areCredentialsValid($name, $password) {
$name = $this->DNasBaseParameter($name); $name = $this->DNasBaseParameter($name);
$testConnection = clone $this->connection; $testConnection = clone $this->connection;

View File

@ -159,6 +159,9 @@ class Connection extends LDAPUtility {
return unserialize(base64_decode($this->cache->get($key))); return unserialize(base64_decode($this->cache->get($key)));
} }
/**
* @param string $key
*/
public function isCached($key) { public function isCached($key) {
if(!$this->configured) { if(!$this->configured) {
$this->readConfiguration(); $this->readConfiguration();

View File

@ -56,8 +56,13 @@ abstract class Proxy {
/** /**
* @param boolean $passOnWhen * @param boolean $passOnWhen
* @param string $method
*/ */
abstract protected function callOnLastSeenOn($id, $method, $parameters, $passOnWhen); abstract protected function callOnLastSeenOn($id, $method, $parameters, $passOnWhen);
/**
* @param string $method
*/
abstract protected function walkBackends($id, $method, $parameters); abstract protected function walkBackends($id, $method, $parameters);
/** /**
@ -95,6 +100,9 @@ abstract class Proxy {
return unserialize(base64_decode($this->cache->get($key))); return unserialize(base64_decode($this->cache->get($key)));
} }
/**
* @param string $key
*/
public function isCached($key) { public function isCached($key) {
$key = $this->getCacheKey($key); $key = $this->getCacheKey($key);
return $this->cache->hasKey($key); return $this->cache->hasKey($key);

View File

@ -865,8 +865,8 @@ class Wizard extends LDAPUtility {
/** /**
* @brief does a cumulativeSearch on LDAP to get different values of a * @brief does a cumulativeSearch on LDAP to get different values of a
* specified attribute * specified attribute
* @param $filters array, the filters that shall be used in the search * @param string[] $filters array, the filters that shall be used in the search
* @param $attr the attribute of which a list of values shall be returned * @param string $attr the attribute of which a list of values shall be returned
* @param $lfw bool, whether the last filter is a wildcard which shall not * @param $lfw bool, whether the last filter is a wildcard which shall not
* be processed if there were already findings, defaults to true * be processed if there were already findings, defaults to true
* @param string $maxF string. if not null, this variable will have the filter that * @param string $maxF string. if not null, this variable will have the filter that
@ -933,8 +933,8 @@ class Wizard extends LDAPUtility {
* @brief determines if and which $attr are available on the LDAP server * @brief determines if and which $attr are available on the LDAP server
* @param string[] $objectclasses the objectclasses to use as search filter * @param string[] $objectclasses the objectclasses to use as search filter
* @param string $attr the attribute to look for * @param string $attr the attribute to look for
* @param $dbkey the dbkey of the setting the feature is connected to * @param string $dbkey the dbkey of the setting the feature is connected to
* @param $confkey the confkey counterpart for the $dbkey as used in the * @param string $confkey the confkey counterpart for the $dbkey as used in the
* Configuration class * Configuration class
* @param $po boolean, whether the objectClass with most result entries * @param $po boolean, whether the objectClass with most result entries
* shall be pre-selected via the result * shall be pre-selected via the result

View File

@ -25,7 +25,6 @@
namespace OCA\user_ldap; namespace OCA\user_ldap;
use OCA\user_ldap\lib\ILDAPWrapper;
use OCA\user_ldap\lib\BackendUtility; use OCA\user_ldap\lib\BackendUtility;
class USER_LDAP extends BackendUtility implements \OCP\UserInterface { class USER_LDAP extends BackendUtility implements \OCP\UserInterface {
@ -139,7 +138,7 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface {
* @brief reads the image from LDAP that shall be used as Avatar * @brief reads the image from LDAP that shall be used as Avatar
* @param $uid string, the ownCloud user name * @param $uid string, the ownCloud user name
* @param $dn string, the user DN * @param $dn string, the user DN
* @return image data (provided by LDAP) | false * @return string data (provided by LDAP) | false
*/ */
private function getAvatarImage($uid, $dn) { private function getAvatarImage($uid, $dn) {
$attributes = array('jpegPhoto', 'thumbnailPhoto'); $attributes = array('jpegPhoto', 'thumbnailPhoto');
@ -164,6 +163,8 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface {
* Check if the password is correct without logging in the user * Check if the password is correct without logging in the user
*/ */
public function checkPassword($uid, $password) { public function checkPassword($uid, $password) {
$uid = $this->access->escapeFilterPart($uid);
//find out dn of the user name //find out dn of the user name
$filter = \OCP\Util::mb_str_replace( $filter = \OCP\Util::mb_str_replace(
'%uid', $uid, $this->access->connection->ldapLoginFilter, 'UTF-8'); '%uid', $uid, $this->access->connection->ldapLoginFilter, 'UTF-8');
@ -204,6 +205,7 @@ class USER_LDAP extends BackendUtility implements \OCP\UserInterface {
* Get a list of all users. * Get a list of all users.
*/ */
public function getUsers($search = '', $limit = 10, $offset = 0) { public function getUsers($search = '', $limit = 10, $offset = 0) {
$search = $this->access->escapeFilterPart($search);
$cachekey = 'getUsers-'.$search.'-'.$limit.'-'.$offset; $cachekey = 'getUsers-'.$search.'-'.$limit.'-'.$offset;
//check if users are cached, if so return //check if users are cached, if so return

View File

@ -9,28 +9,43 @@ OC_Util::checkAdminUser();
OCP\JSON::callCheck(); OCP\JSON::callCheck();
$action=isset($_POST['action'])?$_POST['action']:$_GET['action']; $action=isset($_POST['action'])?$_POST['action']:$_GET['action'];
if(isset($_POST['app']) || isset($_GET['app'])) {
$app=OC_App::cleanAppId(isset($_POST['app'])?$_POST['app']:$_GET['app']);
}
// An admin should not be able to add remote and public services
// on its own. This should only be possible programmatically.
// This change is due the fact that an admin may not be expected
// to execute arbitrary code in every environment.
if($app === 'core' && isset($_POST['key']) &&(substr($_POST['key'],0,7) === 'remote_' || substr($_POST['key'],0,7) === 'public_')) {
OC_JSON::error(array('data' => array('message' => 'Unexpected error!')));
return;
}
$result=false; $result=false;
switch($action) { switch($action) {
case 'getValue': case 'getValue':
$result=OC_Appconfig::getValue($_GET['app'], $_GET['key'], $_GET['defaultValue']); $result=OC_Appconfig::getValue($app, $_GET['key'], $_GET['defaultValue']);
break; break;
case 'setValue': case 'setValue':
$result=OC_Appconfig::setValue($_POST['app'], $_POST['key'], $_POST['value']); $result=OC_Appconfig::setValue($app, $_POST['key'], $_POST['value']);
break; break;
case 'getApps': case 'getApps':
$result=OC_Appconfig::getApps(); $result=OC_Appconfig::getApps();
break; break;
case 'getKeys': case 'getKeys':
$result=OC_Appconfig::getKeys($_GET['app']); $result=OC_Appconfig::getKeys($app);
break; break;
case 'hasKey': case 'hasKey':
$result=OC_Appconfig::hasKey($_GET['app'], $_GET['key']); $result=OC_Appconfig::hasKey($app, $_GET['key']);
break; break;
case 'deleteKey': case 'deleteKey':
$result=OC_Appconfig::deleteKey($_POST['app'], $_POST['key']); $result=OC_Appconfig::deleteKey($app, $_POST['key']);
break; break;
case 'deleteApp': case 'deleteApp':
$result=OC_Appconfig::deleteApp($_POST['app']); $result=OC_Appconfig::deleteApp($app);
break; break;
} }
OC_JSON::success(array('data'=>$result)); OC_JSON::success(array('data'=>$result));

View File

@ -85,93 +85,32 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
} }
break; break;
case 'informRecipients': case 'informRecipients':
$l = OC_L10N::get('core'); $l = OC_L10N::get('core');
$shareType = (int) $_POST['shareType']; $shareType = (int) $_POST['shareType'];
$itemType = $_POST['itemType']; $itemType = $_POST['itemType'];
$itemSource = $_POST['itemSource']; $itemSource = $_POST['itemSource'];
$recipient = $_POST['recipient']; $recipient = $_POST['recipient'];
$ownerDisplayName = \OCP\User::getDisplayName();
$from = \OCP\Util::getDefaultEmailAddress('sharing-noreply');
$noMail = array();
$recipientList = array();
if($shareType === \OCP\Share::SHARE_TYPE_USER) { if($shareType === \OCP\Share::SHARE_TYPE_USER) {
$recipientList[] = $recipient; $recipientList[] = $recipient;
} elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { } elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
$recipientList = \OC_Group::usersInGroup($recipient); $recipientList = \OC_Group::usersInGroup($recipient);
} }
// don't send a mail to the user who shared the file // don't send a mail to the user who shared the file
$recipientList = array_diff($recipientList, array(\OCP\User::getUser())); $recipientList = array_diff($recipientList, array(\OCP\User::getUser()));
// send mail to all recipients with an email address $mailNotification = new OC\Share\MailNotifications();
foreach ($recipientList as $recipient) { $result = $mailNotification->sendInternalShareMail($recipientList, $itemSource, $itemType);
//get correct target folder name
$email = OC_Preferences::getValue($recipient, 'settings', 'email', '');
if ($email !== '') {
$displayName = \OCP\User::getDisplayName($recipient);
$items = \OCP\Share::getItemSharedWithUser($itemType, $itemSource, $recipient);
$filename = trim($items[0]['file_target'], '/');
$subject = (string)$l->t('%s shared »%s« with you', array($ownerDisplayName, $filename));
$expiration = null;
if (isset($items[0]['expiration'])) {
try {
$date = new DateTime($items[0]['expiration']);
$expiration = $l->l('date', $date->getTimestamp());
} catch (Exception $e) {
\OCP\Util::writeLog('sharing', "Couldn't read date: " . $e->getMessage(), \OCP\Util::ERROR);
}
}
if ($itemType === 'folder') {
$foldername = "/Shared/" . $filename;
} else {
// if it is a file we can just link to the Shared folder,
// that's the place where the user will find the file
$foldername = "/Shared";
}
$link = \OCP\Util::linkToAbsolute('files', 'index.php', array("dir" => $foldername));
$content = new OC_Template("core", "mail", "");
$content->assign('link', $link);
$content->assign('user_displayname', $ownerDisplayName);
$content->assign('filename', $filename);
$content->assign('expiration', $expiration);
$text = $content->fetchPage();
$content = new OC_Template("core", "altmail", "");
$content->assign('link', $link);
$content->assign('user_displayname', $ownerDisplayName);
$content->assign('filename', $filename);
$content->assign('expiration', $expiration);
$alttext = $content->fetchPage();
$default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply');
$from = OCP\Config::getUserValue(\OCP\User::getUser(), 'settings', 'email', $default_from);
// send it out now
try {
OCP\Util::sendMail($email, $displayName, $subject, $text, $from, $ownerDisplayName, 1, $alttext);
} catch (Exception $exception) {
$noMail[] = \OCP\User::getDisplayName($recipient);
}
}
}
\OCP\Share::setSendMailStatus($itemType, $itemSource, $shareType, true); \OCP\Share::setSendMailStatus($itemType, $itemSource, $shareType, true);
if (empty($noMail)) { if (empty($result)) {
OCP\JSON::success(); OCP\JSON::success();
} else { } else {
OCP\JSON::error(array( OCP\JSON::error(array(
'data' => array( 'data' => array(
'message' => $l->t("Couldn't send mail to following users: %s ", 'message' => $l->t("Couldn't send mail to following users: %s ",
implode(', ', $noMail) implode(', ', $result)
) )
) )
)); ));
@ -187,56 +126,31 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
break; break;
case 'email': case 'email':
// enable l10n support
$l = OC_L10N::get('core');
// read post variables // read post variables
$user = OCP\USER::getUser();
$displayName = OCP\User::getDisplayName();
$type = $_POST['itemType'];
$link = $_POST['link']; $link = $_POST['link'];
$file = $_POST['file']; $file = $_POST['file'];
$to_address = $_POST['toaddress']; $to_address = $_POST['toaddress'];
$mailNotification = new \OC\Share\MailNotifications();
$expiration = null; $expiration = null;
if (isset($_POST['expiration']) && $_POST['expiration'] !== '') { if (isset($_POST['expiration']) && $_POST['expiration'] !== '') {
try { try {
$date = new DateTime($_POST['expiration']); $date = new DateTime($_POST['expiration']);
$expiration = $l->l('date', $date->getTimestamp()); $expiration = $date->getTimestamp();
} catch (Exception $e) { } catch (Exception $e) {
\OCP\Util::writeLog('sharing', "Couldn't read date: " . $e->getMessage(), \OCP\Util::ERROR); \OCP\Util::writeLog('sharing', "Couldn't read date: " . $e->getMessage(), \OCP\Util::ERROR);
} }
} }
// setup the email $result = $mailNotification->sendLinkShareMail($to_address, $file, $link, $expiration);
$subject = (string)$l->t('%s shared »%s« with you', array($displayName, $file)); if($result === true) {
\OCP\JSON::success();
$content = new OC_Template("core", "mail", ""); } else {
$content->assign ('link', $link); \OCP\JSON::error(array('data' => array('message' => OC_Util::sanitizeHTML($result))));
$content->assign ('type', $type);
$content->assign ('user_displayname', $displayName);
$content->assign ('filename', $file);
$content->assign('expiration', $expiration);
$text = $content->fetchPage();
$content = new OC_Template("core", "altmail", "");
$content->assign ('link', $link);
$content->assign ('type', $type);
$content->assign ('user_displayname', $displayName);
$content->assign ('filename', $file);
$content->assign('expiration', $expiration);
$alttext = $content->fetchPage();
$default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply');
$from_address = OCP\Config::getUserValue($user, 'settings', 'email', $default_from );
// send it out now
try {
OCP\Util::sendMail($to_address, $to_address, $subject, $text, $from_address, $displayName, 1, $alttext);
OCP\JSON::success();
} catch (Exception $exception) {
OCP\JSON::error(array('data' => array('message' => OC_Util::sanitizeHTML($exception->getMessage()))));
} }
break; break;
} }
} else if (isset($_GET['fetch'])) { } else if (isset($_GET['fetch'])) {

View File

@ -11,7 +11,6 @@ namespace OC\Core\Command\Db;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
class GenerateChangeScript extends Command { class GenerateChangeScript extends Command {

View File

@ -9,9 +9,7 @@
namespace OC\Core\Command; namespace OC\Core\Command;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
class Status extends Command { class Status extends Command {

View File

@ -10,9 +10,7 @@ namespace OC\Core\Command;
use OC\Updater; use OC\Updater;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
class Upgrade extends Command { class Upgrade extends Command {

View File

@ -9,10 +9,8 @@
namespace OC\Core\Command\User; namespace OC\Core\Command\User;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Helper\TableHelper;
class Report extends Command { class Report extends Command {
protected function configure() { protected function configure() {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 B

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

After

Width:  |  Height:  |  Size: 199 B

View File

@ -1,13 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" fill="#FFF" d="m4 5 4 7 4-6.989z" fill-opacity=".19608"/>
<rdf:RDF> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m4 4 4 7 4-6.989z"/>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none;" d="m4,5,4,7,4-6.989z" fill-opacity="0.19607843" fill="#FFF"/>
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none;" fill="#000" d="m4,4,4,7,4-6.989z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 711 B

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 B

After

Width:  |  Height:  |  Size: 196 B

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="10" width="10" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="10" width="10" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs> <defs>
<linearGradient id="a" y2="8.0832" gradientUnits="userSpaceOnUse" x2="8.4965" gradientTransform="matrix(1.0526 0 0 .98436 -3.4211 1.0602)" y1="-.061574" x1="8.4965"> <linearGradient id="a" x1="8.4965" gradientUnits="userSpaceOnUse" y1="-.061574" gradientTransform="matrix(1.0526 0 0 .98436 -3.4211 1.0602)" x2="8.4965" y2="8.0832">
<stop stop-color="#fff" offset="0"/> <stop stop-color="#fff" offset="0"/>
<stop stop-color="#e6e6e6" offset="1"/> <stop stop-color="#e6e6e6" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<path opacity=".5" style="block-progression:tb;text-indent:0;color:#000000;text-transform:none" d="m1 2 4 8 4-7.989z"/> <path opacity=".5" style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m1 2 4 8 4-7.989z"/>
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none" d="m1 1 4 8 4-7.989z" fill="url(#a)"/> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m1 1 4 8 4-7.989z" fill="url(#a)"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 857 B

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

After

Width:  |  Height:  |  Size: 212 B

View File

@ -1,4 +1,4 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xml:space="preserve" height="16px" viewBox="-0.5 -0.5 16 16" width="16px" enable-background="new -0.5 -0.5 16 16" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" overflow="visible"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
</defs> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" overflow="visible" height="16px" width="16px" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" enable-background="new -0.5 -0.5 16 16" viewBox="-0.5 -0.5 16 16" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path fill="#ffffff" d="M12.438,3.6875c-0.363,0-0.726,0.1314-1,0.4063l-4.5005,4.5-1.9687-2c-0.5498-0.5484-1.4489-0.5498-2,0l-0.5,0.5c-0.5512,0.5496-0.5512,1.4502,0,2l2.9687,2.9682c0.0063,0.007-0.0065,0.025,0,0.032l0.5,0.5c0.5497,0.55,1.4503,0.55,2,0l0.5-0.5,0.1875-0.219,5.313-5.2812c0.549-0.5498,0.549-1.4503,0-2l-0.5-0.5c-0.275-0.2749-0.638-0.4063-1-0.4063z" transform="translate(-0.5,-0.5)"/> <path transform="translate(-.5 -.5)" d="m12.438 3.6875c-0.363 0-0.726 0.1314-1 0.4063l-4.5005 4.5-1.9687-2c-0.5498-0.5484-1.4489-0.5498-2 0l-0.5 0.5c-0.5512 0.5496-0.5512 1.4502 0 2l2.9687 2.9682c0.0063 0.007-0.0065 0.025 0 0.032l0.5 0.5c0.5497 0.55 1.4503 0.55 2 0l0.5-0.5 0.1875-0.219 5.313-5.2812c0.549-0.5498 0.549-1.4503 0-2l-0.5-0.5c-0.275-0.2749-0.638-0.4063-1-0.4063z" fill="#fff"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 946 B

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 229 B

View File

@ -1,4 +1,4 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" version="1.1" xml:space="preserve" height="16px" viewBox="-0.5 -0.5 16 16" width="16px" enable-background="new -0.5 -0.5 16 16" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" overflow="visible"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
</defs> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" overflow="visible" height="16px" width="16px" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" enable-background="new -0.5 -0.5 16 16" viewBox="-0.5 -0.5 16 16" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path fill="#000" d="M12.438,3.6875c-0.363,0-0.726,0.1314-1,0.4063l-4.5005,4.5-1.9687-2c-0.5498-0.5484-1.4489-0.5498-2,0l-0.5,0.5c-0.5512,0.5496-0.5512,1.4502,0,2l2.9687,2.9682c0.0063,0.007-0.0065,0.025,0,0.032l0.5,0.5c0.5497,0.55,1.4503,0.55,2,0l0.5-0.5,0.1875-0.219,5.313-5.2812c0.549-0.5498,0.549-1.4503,0-2l-0.5-0.5c-0.275-0.2749-0.638-0.4063-1-0.4063z" transform="translate(-0.5,-0.5)"/> <path transform="translate(-.5 -.5)" d="m12.438 3.6875c-0.363 0-0.726 0.1314-1 0.4063l-4.5005 4.5-1.9687-2c-0.5498-0.5484-1.4489-0.5498-2 0l-0.5 0.5c-0.5512 0.5496-0.5512 1.4502 0 2l2.9687 2.9682c0.0063 0.007-0.0065 0.025 0 0.032l0.5 0.5c0.5497 0.55 1.4503 0.55 2 0l0.5-0.5 0.1875-0.219 5.313-5.2812c0.549-0.5498 0.549-1.4503 0-2l-0.5-0.5c-0.275-0.2749-0.638-0.4063-1-0.4063z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 943 B

After

Width:  |  Height:  |  Size: 787 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

After

Width:  |  Height:  |  Size: 332 B

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="16px" viewBox="0 0 100 100" width="16px" version="1.1" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="16px" width="16px" version="1.1" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100">
<path d="m50 89.836c-23.389 0-42.418-19.027-42.418-42.417s19.029-42.419 42.418-42.419 42.418 19.029 42.418 42.419-19.029 42.417-42.418 42.417zm0-79.924c-20.681 0-37.506 16.826-37.506 37.508 0 20.681 16.826 37.505 37.506 37.505s37.507-16.824 37.507-37.505c0-20.683-16.826-37.508-37.507-37.508z"/> <path d="m50 89.836c-23.389 0-42.418-19.027-42.418-42.417s19.029-42.419 42.418-42.419 42.418 19.029 42.418 42.419-19.029 42.417-42.418 42.417zm0-79.924c-20.681 0-37.506 16.826-37.506 37.508 0 20.681 16.826 37.505 37.506 37.505s37.507-16.824 37.507-37.505c0-20.683-16.826-37.508-37.507-37.508z"/>
<path d="m50.001 49.875c-0.141 0-0.283-0.011-0.427-0.037-1.173-0.206-2.03-1.226-2.03-2.419v-17.977c0-1.355 1.1-2.456 2.456-2.456 1.355 0 2.456 1.1 2.456 2.456v4.003l5.431-14.974c0.464-1.274 1.872-1.937 3.146-1.471 1.274 0.462 1.934 1.871 1.471 3.146l-10.195 28.11c-0.357 0.985-1.29 1.619-2.308 1.619z"/> <path d="m50.001 49.875c-0.141 0-0.283-0.011-0.427-0.037-1.173-0.206-2.03-1.226-2.03-2.419v-17.977c0-1.355 1.1-2.456 2.456-2.456 1.355 0 2.456 1.1 2.456 2.456v4.003l5.431-14.974c0.464-1.274 1.872-1.937 3.146-1.471 1.274 0.462 1.934 1.871 1.471 3.146l-10.195 28.11c-0.357 0.985-1.29 1.619-2.308 1.619z"/>
<circle cy="12.956" cx="49.999" r="1.617"/> <circle cy="12.956" cx="49.999" r="1.617"/>

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 222 B

View File

@ -1,12 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> <path d="m8 1c-3.866 0-7 3.134-7 7s3.134 7 7 7 7-3.134 7-7-3.134-7-7-7zm-2.8438 2.75l2.8438 2.8438 2.844-2.8438 1.406 1.4062-2.8438 2.8438 2.8438 2.844-1.406 1.406-2.844-2.8438-2.8438 2.8438-1.4062-1.406 2.8438-2.844-2.8438-2.8438 1.4062-1.4062z" fill="#d40000"/>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path fill="#d40000" d="M8,1c-3.866,0-7,3.134-7,7s3.134,7,7,7,7-3.134,7-7-3.134-7-7-7zm-2.8438,2.75l2.8438,2.8438,2.844-2.8438,1.406,1.4062-2.8438,2.8438,2.8438,2.844-1.406,1.406-2.844-2.8438-2.8438,2.8438-1.4062-1.406,2.8438-2.844-2.8438-2.8438,1.4062-1.4062z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 708 B

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 423 B

After

Width:  |  Height:  |  Size: 349 B

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs> <defs>
<linearGradient id="a" y2="28.777" gradientUnits="userSpaceOnUse" y1="13.895" gradientTransform="matrix(1.0345 0 0 1.0345 8.0708 -14.514)" x2=".44924" x1=".86850"> <linearGradient id="a" x1=".8685" gradientUnits="userSpaceOnUse" x2=".44924" gradientTransform="matrix(1.0345 0 0 1.0345 8.0708 -14.514)" y1="13.895" y2="28.777">
<stop offset="0"/> <stop offset="0"/>
<stop stop-color="#363636" offset="1"/> <stop stop-color="#363636" offset="1"/>
</linearGradient> </linearGradient>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 221 B

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="16px" viewBox="0 0 71 100" width="16px" version="1.1" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="16px" width="16px" version="1.1" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 71 100">
<path d="m65.5 45v-15c0-16.542-13.458-30-30-30s-30 13.458-30 30v15h-5.5v55h71v-55h-5.5zm-52-15c0-12.131 9.869-22 22-22s22 9.869 22 22v15h-44v-15z"/> <path d="m65.5 45v-15c0-16.542-13.458-30-30-30s-30 13.458-30 30v15h-5.5v55h71v-55h-5.5zm-52-15c0-12.131 9.869-22 22-22s22 9.869 22 22v15h-44v-15z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 495 B

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 352 B

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none" d="m8.0001 0c-0.4714 0-0.96103 0.5419-0.95 1v6c-0.00747 0.52831 0.42163 1 0.95 1s0.95747-0.47169 0.95-1v-6c0.014622-0.6051-0.4786-1-0.95-1zm-3.3438 2.5c-0.087186 0.019294-0.17163 0.050959-0.25 0.09375-2.9995 1.5715-3.9184 4.7979-3.125 7.4688 0.7934 2.67 3.2799 4.937 6.6875 4.937 3.3592 0 5.8772-2.149 6.7192-4.781 0.841-2.6321-0.058-5.8234-3.125-7.594-0.434-0.2536-1.059-0.0899-1.313 0.3437-0.2536 0.4336-0.09 1.0589 0.344 1.3125 2.3908 1.3798 2.8825 3.4944 2.2812 5.375-0.6012 1.8806-2.344 3.4375-4.9062 3.4375-2.5759 0-4.2976-1.6502-4.875-3.5938-0.5776-1.9435-0.047-4.048 2.1873-5.2187 0.3787-0.2063 0.5791-0.6925 0.4558-1.1057-0.1232-0.4133-0.5572-0.7103-0.987-0.6755-0.0313-0.0015-0.0626-0.0015-0.0938 0z"/> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m8.0001 0c-0.4714 0-0.96103 0.5419-0.95 1v6c-0.00747 0.52831 0.42163 1 0.95 1s0.95747-0.47169 0.95-1v-6c0.014622-0.6051-0.4786-1-0.95-1zm-3.3438 2.5c-0.087186 0.019294-0.17163 0.050959-0.25 0.09375-2.9995 1.5715-3.9184 4.7979-3.125 7.4688 0.7934 2.67 3.2799 4.937 6.6875 4.937 3.3592 0 5.8772-2.149 6.7192-4.781 0.841-2.6321-0.058-5.8234-3.125-7.594-0.434-0.2536-1.059-0.0899-1.313 0.3437-0.2536 0.4336-0.09 1.0589 0.344 1.3125 2.3908 1.3798 2.8825 3.4944 2.2812 5.375-0.6012 1.8806-2.344 3.4375-4.9062 3.4375-2.5759 0-4.2976-1.6502-4.875-3.5938-0.5776-1.9435-0.047-4.048 2.1873-5.2187 0.3787-0.2063 0.5791-0.6925 0.4558-1.1057-0.1232-0.4133-0.5572-0.7103-0.987-0.6755-0.0313-0.0015-0.0626-0.0015-0.0938 0z"/>
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none" d="m8.0001 1c-0.4714 0-0.96103 0.5419-0.95 1v6c-0.00747 0.52831 0.42163 1 0.95 1s0.95747-0.47169 0.95-1v-6c0.014622-0.6051-0.4786-1-0.95-1zm-3.3438 2.5c-0.087186 0.019294-0.17163 0.050959-0.25 0.09375-2.9995 1.5715-3.9184 4.7979-3.125 7.4688 0.7934 2.67 3.2799 4.937 6.6875 4.937 3.3592 0 5.8772-2.149 6.7192-4.781 0.841-2.6321-0.058-5.8234-3.125-7.594-0.434-0.2536-1.059-0.0899-1.313 0.3437-0.2536 0.4336-0.09 1.0589 0.344 1.3125 2.3908 1.3798 2.8825 3.4944 2.2812 5.375-0.6012 1.8806-2.344 3.4375-4.9062 3.4375-2.5759 0-4.2976-1.6502-4.875-3.5938-0.5776-1.9436-0.047-4.0481 2.1873-5.2188 0.3787-0.2063 0.5791-0.6925 0.4558-1.1057-0.1232-0.4133-0.5572-0.7103-0.987-0.6755-0.0313-0.0015-0.0626-0.0015-0.0938 0z" fill="#fff"/> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m8.0001 1c-0.4714 0-0.96103 0.5419-0.95 1v6c-0.00747 0.52831 0.42163 1 0.95 1s0.95747-0.47169 0.95-1v-6c0.014622-0.6051-0.4786-1-0.95-1zm-3.3438 2.5c-0.087186 0.019294-0.17163 0.050959-0.25 0.09375-2.9995 1.5715-3.9184 4.7979-3.125 7.4688 0.7934 2.67 3.2799 4.937 6.6875 4.937 3.3592 0 5.8772-2.149 6.7192-4.781 0.841-2.6321-0.058-5.8234-3.125-7.594-0.434-0.2536-1.059-0.0899-1.313 0.3437-0.2536 0.4336-0.09 1.0589 0.344 1.3125 2.3908 1.3798 2.8825 3.4944 2.2812 5.375-0.6012 1.8806-2.344 3.4375-4.9062 3.4375-2.5759 0-4.2976-1.6502-4.875-3.5938-0.5776-1.9436-0.047-4.0481 2.1873-5.2188 0.3787-0.2063 0.5791-0.6925 0.4558-1.1057-0.1232-0.4133-0.5572-0.7103-0.987-0.6755-0.0313-0.0015-0.0626-0.0015-0.0938 0z" fill="#fff"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 159 B

View File

@ -1,3 +1,4 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="16px" width="16px" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 71 100"><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<path d="M8,1c-2.2091,0-4,1.7909-4,4v2h-1v7h10v-7h-1v-2c0-2.2091-1.791-4-4-4zm0,2c1.1046,0,2,0.89543,2,2v2h-4v-2c0-1.1046,0.8954-2,2-2z" transform="matrix(6.25,0,0,6.25,-14.5,0)" fill="#000"/> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="16px" width="16px" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" viewBox="0 0 71 100" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path d="m8 1c-2.2091 0-4 1.7909-4 4v2h-1v7h10v-7h-1v-2c0-2.2091-1.791-4-4-4zm0 2c1.1046 0 2 0.89543 2 2v2h-4v-2c0-1.1046 0.8954-2 2-2z" transform="matrix(6.25,0,0,6.25,-14.5,0)"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 665 B

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 B

After

Width:  |  Height:  |  Size: 163 B

View File

@ -1,9 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g transform="translate(0 -1036.4)"> <g transform="translate(0 -1036.4)">
<g> <path d="m2 1037.4 11 6-11 6z"/>
<path d="m2 1037.4 11 6-11 6z"/> <path d="m11 1045.4v2h-2v2h2v2h2v-2h2v-2h-2v-2z"/>
<path d="m11 1045.4v2h-2v2h2v2h2v-2h2v-2h-2v-2z"/>
</g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 429 B

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 B

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

After

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 B

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 B

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 B

After

Width:  |  Height:  |  Size: 348 B

View File

@ -1,14 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs> <defs>
<linearGradient id="a" y2="38.409" gradientUnits="userSpaceOnUse" x2="46.396" gradientTransform="matrix(-.41002 0 0 .54471 28.023 -5.922)" y1="12.708" x1="46.396"> <linearGradient id="a" x1="46.396" gradientUnits="userSpaceOnUse" y1="12.708" gradientTransform="matrix(-.41002 0 0 .54471 28.023 -5.922)" x2="46.396" y2="38.409">
<stop offset="0"/> <stop offset="0"/>
<stop stop-color="#363636" offset="1"/> <stop stop-color="#363636" offset="1"/>
</linearGradient> </linearGradient>
</defs> </defs>
<rect style="color:#000000" fill-opacity="0" height="97.986" width="163.31" y="-32.993" x="-62.897"/> <rect style="color:#000000" fill-opacity="0" height="97.986" width="163.31" y="-32.993" x="-62.897"/>
<g> <path opacity=".6" style="color:#000000" d="m6 1.9992c-2.7614 0-5 2.2386-5 5s2.2386 5 5 5c0.98478 0 1.8823-0.28967 2.6562-0.78125l4.4688 4.625c0.09558 0.10527 0.22619 0.16452 0.375 0.15625 0.14882-0.0083 0.3031-0.07119 0.40625-0.1875l0.9375-1.0625c0.19194-0.22089 0.19549-0.53592 0-0.71875l-4.594-4.4068c0.4776-0.76635 0.75-1.6555 0.75-2.625 0-2.7614-2.2386-5-5-5zm0 2c1.6569 0 3 1.3431 3 3s-1.3431 3-3 3-3-1.3431-3-3 1.3431-3 3-3z" fill="#fff"/>
<path opacity=".6" style="color:#000000" d="m6 1.9992c-2.7614 0-5 2.2386-5 5s2.2386 5 5 5c0.98478 0 1.8823-0.28967 2.6562-0.78125l4.4688 4.625c0.09558 0.10527 0.22619 0.16452 0.375 0.15625 0.14882-0.0083 0.3031-0.07119 0.40625-0.1875l0.9375-1.0625c0.19194-0.22089 0.19549-0.53592 0-0.71875l-4.594-4.4068c0.4776-0.76635 0.75-1.6555 0.75-2.625 0-2.7614-2.2386-5-5-5zm0 2c1.6569 0 3 1.3431 3 3s-1.3431 3-3 3-3-1.3431-3-3 1.3431-3 3-3z" fill="#fff"/> <path opacity=".7" style="color:#000000" d="m6 1c-2.7614 0-5 2.2386-5 5s2.2386 5 5 5c0.98478 0 1.8823-0.28967 2.6562-0.78125l4.4688 4.625c0.09558 0.10527 0.22619 0.16452 0.375 0.15625 0.14882-0.0083 0.3031-0.07119 0.40625-0.1875l0.9375-1.0625c0.19194-0.22089 0.19549-0.53592 0-0.71875l-4.594-4.406c0.478-0.7663 0.75-1.6555 0.75-2.625 0-2.7614-2.2386-5-5-5zm0 2c1.6569 0 3 1.3431 3 3s-1.3431 3-3 3-3-1.3431-3-3 1.3431-3 3-3z" fill="url(#a)"/>
<path opacity=".7" style="color:#000000" d="m6 1c-2.7614 0-5 2.2386-5 5s2.2386 5 5 5c0.98478 0 1.8823-0.28967 2.6562-0.78125l4.4688 4.625c0.09558 0.10527 0.22619 0.16452 0.375 0.15625 0.14882-0.0083 0.3031-0.07119 0.40625-0.1875l0.9375-1.0625c0.19194-0.22089 0.19549-0.53592 0-0.71875l-4.594-4.406c0.478-0.7663 0.75-1.6555 0.75-2.625 0-2.7614-2.2386-5-5-5zm0 2c1.6569 0 3 1.3431 3 3s-1.3431 3-3 3-3-1.3431-3-3 1.3431-3 3-3z" fill="url(#a)"/>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 524 B

After

Width:  |  Height:  |  Size: 452 B

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs> <defs>
<linearGradient id="c" y2="7.556" xlink:href="#a" gradientUnits="userSpaceOnUse" x2="15.5" y1="7.556" x1=".5"/> <linearGradient id="d" x1=".5" xlink:href="#a" gradientUnits="userSpaceOnUse" x2="15.5" y1="7.556" y2="7.556"/>
<linearGradient id="a"> <linearGradient id="a">
<stop offset="0"/> <stop offset="0"/>
<stop stop-color="#363636" offset="1"/> <stop stop-color="#363636" offset="1"/>
</linearGradient> </linearGradient>
<linearGradient id="b" y2="14.998" xlink:href="#a" gradientUnits="userSpaceOnUse" x2="7.493" y1=".0035527" x1="7.493"/> <linearGradient id="e" x1="7.493" xlink:href="#a" gradientUnits="userSpaceOnUse" x2="7.493" y1=".0035527" y2="14.998"/>
</defs> </defs>
<g opacity=".6" transform="translate(.027972 .944)" fill="#fff"> <g opacity=".6" transform="translate(.027972 .944)" fill="#fff">
<path d="m6.9375 0.056c-0.2484 0-0.4375 0.18908-0.4375 0.4375v1.25c-0.5539 0.1422-1.0512 0.3719-1.5312 0.6563l-0.9063-0.9063c-0.17566-0.17566-0.44934-0.17566-0.625 0l-1.5 1.5c-0.17566 0.17566-0.17566 0.44934 0 0.625l0.9063 0.9063c-0.2844 0.48-0.5141 0.9773-0.6563 1.5312h-1.25c-0.24842 0-0.4375 0.1891-0.4375 0.4375v2.125c1e-8 0.24842 0.18908 0.4375 0.4375 0.4375h1.25c0.1422 0.5539 0.37188 1.0512 0.65625 1.5312l-0.9063 0.907c-0.17566 0.17566-0.17566 0.44934 0 0.625l1.5 1.5c0.17566 0.17566 0.44934 0.17566 0.625 0l0.9063-0.907c0.48 0.285 0.9773 0.514 1.5312 0.656v1.25c1e-7 0.24842 0.18908 0.4375 0.4375 0.4375h2.125c0.2484 0 0.4375-0.189 0.4375-0.438v-1.25c0.5539-0.1422 1.0512-0.37188 1.5312-0.65625l0.90625 0.90625c0.17566 0.17566 0.44934 0.17566 0.625 0l1.5-1.5c0.17566-0.17566 0.17566-0.44934 0-0.625l-0.906-0.906c0.285-0.48 0.514-0.9771 0.656-1.531h1.25c0.249 0 0.438-0.1891 0.438-0.4375v-2.125c0-0.2484-0.189-0.4375-0.438-0.4375h-1.25c-0.142-0.5539-0.371-1.0512-0.656-1.5312l0.906-0.9063c0.17566-0.17566 0.17566-0.44934 0-0.625l-1.5-1.5c-0.17566-0.17566-0.44934-0.17566-0.625 0l-0.906 0.9063c-0.48-0.2844-0.977-0.5141-1.531-0.6563v-1.25c0-0.24842-0.1891-0.4375-0.4375-0.4375zm1.0625 4.1573c1.8451 0 3.3427 1.4975 3.3427 3.3427 0 1.8451-1.4975 3.3427-3.3427 3.3427-1.8451 0-3.3427-1.4979-3.3427-3.343s1.4976-3.3427 3.3427-3.3427z" display="block" fill="#fff"/> <path fill="#fff" d="m6.9375 0.056c-0.2484 0-0.4375 0.18908-0.4375 0.4375v1.25c-0.5539 0.1422-1.0512 0.3719-1.5312 0.6563l-0.9063-0.9063c-0.17566-0.17566-0.44934-0.17566-0.625 0l-1.5 1.5c-0.17566 0.17566-0.17566 0.44934 0 0.625l0.9063 0.9063c-0.2844 0.48-0.5141 0.9773-0.6563 1.5312h-1.25c-0.24842 0-0.4375 0.1891-0.4375 0.4375v2.125c1e-8 0.24842 0.18908 0.4375 0.4375 0.4375h1.25c0.1422 0.5539 0.37188 1.0512 0.65625 1.5312l-0.9063 0.907c-0.17566 0.17566-0.17566 0.44934 0 0.625l1.5 1.5c0.17566 0.17566 0.44934 0.17566 0.625 0l0.9063-0.907c0.48 0.285 0.9773 0.514 1.5312 0.656v1.25c1e-7 0.24842 0.18908 0.4375 0.4375 0.4375h2.125c0.2484 0 0.4375-0.189 0.4375-0.438v-1.25c0.5539-0.1422 1.0512-0.37188 1.5312-0.65625l0.90625 0.90625c0.17566 0.17566 0.44934 0.17566 0.625 0l1.5-1.5c0.17566-0.17566 0.17566-0.44934 0-0.625l-0.906-0.906c0.285-0.48 0.514-0.9771 0.656-1.531h1.25c0.249 0 0.438-0.1891 0.438-0.4375v-2.125c0-0.2484-0.189-0.4375-0.438-0.4375h-1.25c-0.142-0.5539-0.371-1.0512-0.656-1.5312l0.906-0.9063c0.17566-0.17566 0.17566-0.44934 0-0.625l-1.5-1.5c-0.17566-0.17566-0.44934-0.17566-0.625 0l-0.906 0.9063c-0.48-0.2844-0.977-0.5141-1.531-0.6563v-1.25c0-0.24842-0.1891-0.4375-0.4375-0.4375zm1.0625 4.1573c1.8451 0 3.3427 1.4975 3.3427 3.3427 0 1.8451-1.4975 3.3427-3.3427 3.3427-1.8451 0-3.3427-1.4979-3.3427-3.343s1.4976-3.3427 3.3427-3.3427z" display="block"/>
</g> </g>
<g opacity=".7" transform="translate(0 -.056)" fill="url(#c)"> <g opacity=".7" transform="translate(0 -.056)" fill="url(#d)">
<path d="m6.9375 0.056c-0.2484 0-0.4375 0.18908-0.4375 0.4375v1.25c-0.5539 0.1422-1.0512 0.3719-1.5312 0.6563l-0.9063-0.9063c-0.17566-0.17566-0.44934-0.17566-0.625 0l-1.5 1.5c-0.17566 0.17566-0.17566 0.44934 0 0.625l0.9063 0.9063c-0.2844 0.48-0.5141 0.9773-0.6563 1.5312h-1.25c-0.24842 0-0.4375 0.1891-0.4375 0.4375v2.125c1e-8 0.24842 0.18908 0.4375 0.4375 0.4375h1.25c0.1422 0.5539 0.37188 1.0512 0.65625 1.5312l-0.9063 0.907c-0.17566 0.17566-0.17566 0.44934 0 0.625l1.5 1.5c0.17566 0.17566 0.44934 0.17566 0.625 0l0.9063-0.907c0.48 0.285 0.9773 0.514 1.5312 0.656v1.25c1e-7 0.24842 0.18908 0.4375 0.4375 0.4375h2.125c0.2484 0 0.4375-0.189 0.4375-0.438v-1.25c0.5539-0.1422 1.0512-0.37188 1.5312-0.65625l0.90625 0.90625c0.17566 0.17566 0.44934 0.17566 0.625 0l1.5-1.5c0.17566-0.17566 0.17566-0.44934 0-0.625l-0.906-0.906c0.285-0.48 0.514-0.9771 0.656-1.531h1.25c0.249 0 0.438-0.1891 0.438-0.4375v-2.125c0-0.2484-0.189-0.4375-0.438-0.4375h-1.25c-0.142-0.5539-0.371-1.0512-0.656-1.5312l0.906-0.9063c0.17566-0.17566 0.17566-0.44934 0-0.625l-1.5-1.5c-0.17566-0.17566-0.44934-0.17566-0.625 0l-0.906 0.9063c-0.48-0.2844-0.977-0.5141-1.531-0.6563v-1.25c0-0.24842-0.1891-0.4375-0.4375-0.4375zm1.0625 4.1573c1.8451 0 3.3427 1.4975 3.3427 3.3427 0 1.8451-1.4975 3.3427-3.3427 3.3427-1.8451 0-3.3427-1.4979-3.3427-3.343s1.4976-3.3427 3.3427-3.3427z" display="block" fill="url(#b)"/> <path fill="url(#e)" d="m6.9375 0.056c-0.2484 0-0.4375 0.18908-0.4375 0.4375v1.25c-0.5539 0.1422-1.0512 0.3719-1.5312 0.6563l-0.9063-0.9063c-0.17566-0.17566-0.44934-0.17566-0.625 0l-1.5 1.5c-0.17566 0.17566-0.17566 0.44934 0 0.625l0.9063 0.9063c-0.2844 0.48-0.5141 0.9773-0.6563 1.5312h-1.25c-0.24842 0-0.4375 0.1891-0.4375 0.4375v2.125c1e-8 0.24842 0.18908 0.4375 0.4375 0.4375h1.25c0.1422 0.5539 0.37188 1.0512 0.65625 1.5312l-0.9063 0.907c-0.17566 0.17566-0.17566 0.44934 0 0.625l1.5 1.5c0.17566 0.17566 0.44934 0.17566 0.625 0l0.9063-0.907c0.48 0.285 0.9773 0.514 1.5312 0.656v1.25c1e-7 0.24842 0.18908 0.4375 0.4375 0.4375h2.125c0.2484 0 0.4375-0.189 0.4375-0.438v-1.25c0.5539-0.1422 1.0512-0.37188 1.5312-0.65625l0.90625 0.90625c0.17566 0.17566 0.44934 0.17566 0.625 0l1.5-1.5c0.17566-0.17566 0.17566-0.44934 0-0.625l-0.906-0.906c0.285-0.48 0.514-0.9771 0.656-1.531h1.25c0.249 0 0.438-0.1891 0.438-0.4375v-2.125c0-0.2484-0.189-0.4375-0.438-0.4375h-1.25c-0.142-0.5539-0.371-1.0512-0.656-1.5312l0.906-0.9063c0.17566-0.17566 0.17566-0.44934 0-0.625l-1.5-1.5c-0.17566-0.17566-0.44934-0.17566-0.625 0l-0.906 0.9063c-0.48-0.2844-0.977-0.5141-1.531-0.6563v-1.25c0-0.24842-0.1891-0.4375-0.4375-0.4375zm1.0625 4.1573c1.8451 0 3.3427 1.4975 3.3427 3.3427 0 1.8451-1.4975 3.3427-3.3427 3.3427-1.8451 0-3.3427-1.4979-3.3427-3.343s1.4976-3.3427 3.3427-3.3427z" display="block"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 B

After

Width:  |  Height:  |  Size: 290 B

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<rect style="color:#000000" fill-opacity="0" height="97.986" width="163.31" y="-32.993" x="-62.897"/> <rect style="color:#000000" fill-opacity="0" height="97.986" width="163.31" y="-32.993" x="-62.897"/>
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none" d="m4.5689 2.4831c-0.96481 0-1.7833 0.70559-1.7833 1.6162 0.00685 0.28781 0.032588 0.64272 0.20434 1.3933v0.018581l0.018574 0.018573c0.055135 0.15793 0.13537 0.24827 0.24149 0.37154 0.10612 0.12326 0.23263 0.26834 0.35294 0.39011 0.014154 0.014326 0.023227 0.023201 0.037149 0.037163 0.023859 0.10383 0.052763 0.21557 0.074304 0.3158 0.057317 0.26668 0.051439 0.45553 0.037155 0.52015-0.4146 0.1454-0.9304 0.3187-1.3932 0.5199-0.2598 0.113-0.4949 0.2139-0.6873 0.3344-0.1923 0.1206-0.3836 0.2116-0.4458 0.483-0.0007972 0.012367-0.0007972 0.024787 0 0.037163-0.060756 0.55788-0.15266 1.3783-0.22291 1.932-0.015166 0.11656 0.046264 0.23943 0.14861 0.29723 0.84033 0.45393 2.1312 0.63663 3.418 0.63161 1.2868-0.005 2.5674-0.19845 3.3808-0.63161 0.10234-0.0578 0.16378-0.18067 0.14861-0.29723-0.0224-0.173-0.05-0.5633-0.0743-0.9474-0.0243-0.384-0.0454-0.7617-0.0743-0.9845-0.0101-0.0552-0.0362-0.1074-0.0743-0.1486-0.2584-0.3086-0.6445-0.4973-1.096-0.6874-0.4122-0.1735-0.8954-0.3538-1.3746-0.5573-0.02682-0.059748-0.053461-0.23358 0-0.50157 0.014356-0.071959 0.036836-0.14903 0.055729-0.22292 0.045032-0.05044 0.080132-0.091658 0.13003-0.14861 0.1064-0.1215 0.2207-0.2489 0.3157-0.3715 0.0951-0.1226 0.1728-0.2279 0.223-0.3715l0.018574-0.018581c0.1941-0.7837 0.1942-1.1107 0.2043-1.3933v-0.018573c0-0.91058-0.81848-1.6162-1.7833-1.6162zm5.101-1.4831c-1.4067 0-2.6 1.0287-2.6 2.3562 0.00998 0.4196 0.047512 0.93701 0.29791 2.0312v0.027083l0.027081 0.027083c0.080384 0.23025 0.19736 0.36196 0.35208 0.54166s0.33917 0.39121 0.51458 0.56874c0.020637 0.020887 0.033864 0.033826 0.054161 0.054175 0.034785 0.15137 0.076926 0.31428 0.10833 0.46041 0.083566 0.38879 0.074995 0.66411 0.054171 0.75832-0.6045 0.2122-1.3565 0.465-2.0312 0.7583-0.3789 0.1647-0.7217 0.3118-1.0021 0.4875-0.28044 0.17574-0.55934 0.30851-0.64999 0.70416-0.00116 0.01804-0.00116 0.03613 0 0.05418-0.08858 0.81334-0.22257 2.0094-0.325 2.8166-0.022111 0.16993 0.067452 0.34906 0.21666 0.43333 1.2252 0.66179 3.1072 0.92814 4.9833 0.92082 1.8761-0.0073 3.7431-0.28932 4.9291-0.92082 0.14921-0.08427 0.23878-0.2634 0.21666-0.43333-0.0327-0.25234-0.07287-0.82136-0.10833-1.3812-0.03546-0.55988-0.06625-1.1106-0.10833-1.4354-0.01468-0.0805-0.05274-0.15661-0.10833-0.21666-0.377-0.4498-0.94-0.7248-1.598-1.002-0.601-0.253-1.306-0.5158-2.004-0.8125-0.0391-0.087106-0.07795-0.34054 0-0.73124 0.02093-0.10491 0.05371-0.21727 0.08125-0.325 0.06566-0.073537 0.11683-0.13363 0.18958-0.21666 0.15516-0.17709 0.32189-0.36287 0.46041-0.54166s0.25186-0.33217 0.325-0.54166l0.02708-0.027083c0.28309-1.1425 0.28324-1.6193 0.29792-2.0312v-0.027083c0-1.3275-1.1933-2.3562-2.6-2.3562z"/> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m4.5689 2.4831c-0.96481 0-1.7833 0.70559-1.7833 1.6162 0.00685 0.28781 0.032588 0.64272 0.20434 1.3933v0.018581l0.018574 0.018573c0.055135 0.15793 0.13537 0.24827 0.24149 0.37154 0.10612 0.12326 0.23263 0.26834 0.35294 0.39011 0.014154 0.014326 0.023227 0.023201 0.037149 0.037163 0.023859 0.10383 0.052763 0.21557 0.074304 0.3158 0.057317 0.26668 0.051439 0.45553 0.037155 0.52015-0.4146 0.1454-0.9304 0.3187-1.3932 0.5199-0.2598 0.113-0.4949 0.2139-0.6873 0.3344-0.1923 0.1206-0.3836 0.2116-0.4458 0.483-0.0007972 0.012367-0.0007972 0.024787 0 0.037163-0.060756 0.55788-0.15266 1.3783-0.22291 1.932-0.015166 0.11656 0.046264 0.23943 0.14861 0.29723 0.84033 0.45393 2.1312 0.63663 3.418 0.63161 1.2868-0.005 2.5674-0.19845 3.3808-0.63161 0.10234-0.0578 0.16378-0.18067 0.14861-0.29723-0.0224-0.173-0.05-0.5633-0.0743-0.9474-0.0243-0.384-0.0454-0.7617-0.0743-0.9845-0.0101-0.0552-0.0362-0.1074-0.0743-0.1486-0.2584-0.3086-0.6445-0.4973-1.096-0.6874-0.4122-0.1735-0.8954-0.3538-1.3746-0.5573-0.02682-0.059748-0.053461-0.23358 0-0.50157 0.014356-0.071959 0.036836-0.14903 0.055729-0.22292 0.045032-0.05044 0.080132-0.091658 0.13003-0.14861 0.1064-0.1215 0.2207-0.2489 0.3157-0.3715 0.0951-0.1226 0.1728-0.2279 0.223-0.3715l0.018574-0.018581c0.1941-0.7837 0.1942-1.1107 0.2043-1.3933v-0.018573c0-0.91058-0.81848-1.6162-1.7833-1.6162zm5.101-1.4831c-1.4067 0-2.6 1.0287-2.6 2.3562 0.00998 0.4196 0.047512 0.93701 0.29791 2.0312v0.027083l0.027081 0.027083c0.080384 0.23025 0.19736 0.36196 0.35208 0.54166s0.33917 0.39121 0.51458 0.56874c0.020637 0.020887 0.033864 0.033826 0.054161 0.054175 0.034785 0.15137 0.076926 0.31428 0.10833 0.46041 0.083566 0.38879 0.074995 0.66411 0.054171 0.75832-0.6045 0.2122-1.3565 0.465-2.0312 0.7583-0.3789 0.1647-0.7217 0.3118-1.0021 0.4875-0.28044 0.17574-0.55934 0.30851-0.64999 0.70416-0.00116 0.01804-0.00116 0.03613 0 0.05418-0.08858 0.81334-0.22257 2.0094-0.325 2.8166-0.022111 0.16993 0.067452 0.34906 0.21666 0.43333 1.2252 0.66179 3.1072 0.92814 4.9833 0.92082 1.8761-0.0073 3.7431-0.28932 4.9291-0.92082 0.14921-0.08427 0.23878-0.2634 0.21666-0.43333-0.0327-0.25234-0.07287-0.82136-0.10833-1.3812-0.03546-0.55988-0.06625-1.1106-0.10833-1.4354-0.01468-0.0805-0.05274-0.15661-0.10833-0.21666-0.377-0.4498-0.94-0.7248-1.598-1.002-0.601-0.253-1.306-0.5158-2.004-0.8125-0.0391-0.087106-0.07795-0.34054 0-0.73124 0.02093-0.10491 0.05371-0.21727 0.08125-0.325 0.06566-0.073537 0.11683-0.13363 0.18958-0.21666 0.15516-0.17709 0.32189-0.36287 0.46041-0.54166s0.25186-0.33217 0.325-0.54166l0.02708-0.027083c0.28309-1.1425 0.28324-1.6193 0.29792-2.0312v-0.027083c0-1.3275-1.1933-2.3562-2.6-2.3562z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 B

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 254 B

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 B

After

Width:  |  Height:  |  Size: 565 B

View File

@ -1,14 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="22" width="22" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="22" width="22" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> <g transform="matrix(.068322 0 0 .068322 -10.114 -50.902)">
<rdf:RDF> <path d="m330.36 858.43 43.111 108.06 117.64 9.2572-89.445 74.392 27.55 114.75-98.391-62.079-100.62 61.66 28.637-112.76-89.734-76.638 116.09-7.6094z" transform="translate(-21.071,-112.5)" fill="#CCC"/>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="matrix(0.06832234,0,0,0.06832234,-10.114234,-50.901693)">
<path fill="#CCC" transform="translate(-21.071,-112.5)" d="m330.36,858.43,43.111,108.06,117.64,9.2572-89.445,74.392,27.55,114.75-98.391-62.079-100.62,61.66,28.637-112.76-89.734-76.638,116.09-7.6094z"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 726 B

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 B

After

Width:  |  Height:  |  Size: 492 B

View File

@ -1,14 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="22" width="22" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="22" width="22" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> <g transform="matrix(.068322 0 0 .068322 -10.114 -50.902)">
<rdf:RDF> <path d="m330.36 858.43 43.111 108.06 117.64 9.2572-89.445 74.392 27.55 114.75-98.391-62.079-100.62 61.66 28.637-112.76-89.734-76.638 116.09-7.6094z" transform="translate(-21.071,-112.5)" fill="#FC0"/>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="matrix(0.06832234,0,0,0.06832234,-10.114235,-50.901693)">
<path fill="#FC0" transform="translate(-21.071,-112.5)" d="m330.36,858.43,43.111,108.06,117.64,9.2572-89.445,74.392,27.55,114.75-98.391-62.079-100.62,61.66,28.637-112.76-89.734-76.638,116.09-7.6094z"/>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 726 B

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 122 B

View File

@ -1,11 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g> <rect rx=".5" ry=".5" height="4" width="4" y="1" x="1"/>
<rect rx=".5" ry=".5" height="4" width="4" y="1" x="1"/> <rect rx=".5" ry=".5" height="1" width="9" y="2" x="6"/>
<rect rx=".5" ry=".5" height="1" width="9" y="2" x="6"/> <rect rx=".5" ry=".5" height="4" width="4" y="6" x="1"/>
<rect rx=".5" ry=".5" height="4" width="4" y="6" x="1"/> <rect rx=".5" ry=".5" height="1" width="9" y="7" x="6"/>
<rect rx=".5" ry=".5" height="1" width="9" y="7" x="6"/> <rect rx=".5" ry=".5" height="4" width="4" y="11" x="1"/>
<rect rx=".5" ry=".5" height="4" width="4" y="11" x="1"/> <rect rx=".5" ry=".5" height="1" width="9" y="12" x="6"/>
<rect rx=".5" ry=".5" height="1" width="9" y="12" x="6"/>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 692 B

After

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 B

After

Width:  |  Height:  |  Size: 120 B

View File

@ -1,9 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g> <rect rx=".5" ry=".5" height="6" width="6" y="1" x="1"/>
<rect rx=".5" ry=".5" height="6" width="6" y="1" x="1"/> <rect rx=".5" ry=".5" height="6" width="6" y="1" x="9"/>
<rect rx=".5" ry=".5" height="6" width="6" y="1" x="9"/> <rect rx=".5" ry=".5" height="6" width="6" y="9" x="9"/>
<rect rx=".5" ry=".5" height="6" width="6" y="9" x="9"/> <rect rx=".5" ry=".5" height="6" width="6" y="9" x="1"/>
<rect rx=".5" ry=".5" height="6" width="6" y="9" x="1"/>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 572 B

After

Width:  |  Height:  |  Size: 557 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 318 B

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 16 9" xml:space="preserve" overflow="visible" height="9px" width="16px" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 16 9"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="9px" viewBox="0 0 16 9" width="16px" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" enable-background="new 0 0 16 9" overflow="visible" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path d="m7.999 0c-3.109 0-5.926 1.719-7.999 4.5 2.073 2.781 4.89 4.5 7.999 4.5 3.111 0 5.928-1.719 8.001-4.5-2.073-2.781-4.892-4.5-8.001-4.5zm0.001 7.5c-1.657 0-3-1.343-3-3s1.343-3 3-3c1.657 0 3 1.343 3 3s-1.343 3-3 3z" fill="#222"/> <path d="m7.999 0c-3.109 0-5.926 1.719-7.999 4.5 2.073 2.781 4.89 4.5 7.999 4.5 3.111 0 5.928-1.719 8.001-4.5-2.073-2.781-4.892-4.5-8.001-4.5zm0.001 7.5c-1.657 0-3-1.343-3-3s1.343-3 3-3c1.657 0 3 1.343 3 3s-1.343 3-3 3z" fill="#222"/>
<circle cy="4.501" cx="8" r="1.5" fill="#222"/> <circle cy="4.501" cx="8" r="1.5" fill="#222"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 676 B

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

After

Width:  |  Height:  |  Size: 138 B

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16px" width="16px" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16px" width="16px" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none" d="m12 12-4-8-4 7.989z"/> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m12 12-4-8-4 7.989z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 439 B

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

After

Width:  |  Height:  |  Size: 138 B

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16px" width="16px" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16px" width="16px" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none" d="m4 4 4 8 4-7.989z"/> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m4 4 4 8 4-7.989z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 437 B

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

After

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 300 B

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/"> <svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<rect style="color:#000000" fill-opacity="0" height="97.986" width="163.31" y="-32.993" x="-62.897"/> <rect style="color:#000000" fill-opacity="0" height="97.986" width="163.31" y="-32.993" x="-62.897"/>
<path style="block-progression:tb;text-indent:0;color:#000000;text-transform:none" d="m8.4036 1c-1.7312 0-3.1998 1.2661-3.1998 2.9 0.012287 0.51643 0.058473 1.1532 0.36664 2.5v0.033333l0.033328 0.033333c0.098928 0.28338 0.24289 0.44549 0.4333 0.66666s0.41742 0.48149 0.63328 0.69999c0.025397 0.025708 0.041676 0.041633 0.066656 0.066677 0.04281 0.18631 0.094672 0.38681 0.13332 0.56666 0.10284 0.47851 0.092296 0.81737 0.066668 0.93332-0.74389 0.26121-1.6694 0.57228-2.4998 0.93332-0.46622 0.2027-0.8881 0.3837-1.2332 0.59999-0.34513 0.2163-0.68837 0.37971-0.79994 0.86666-0.16004 0.63293-0.19866 0.7539-0.39997 1.5333-0.027212 0.20914 0.083011 0.42961 0.26665 0.53333 1.5078 0.81451 3.824 1.1423 6.1329 1.1333s4.6066-0.35609 6.0662-1.1333c0.11739-0.07353 0.14304-0.10869 0.13332-0.2333-0.04365-0.68908-0.08154-1.3669-0.13332-1.7666-0.01807-0.09908-0.06492-0.19275-0.13332-0.26666-0.46366-0.5537-1.1564-0.89218-1.9665-1.2333-0.7396-0.31144-1.6067-0.63486-2.4665-0.99999-0.048123-0.10721-0.095926-0.41912 0-0.89999 0.025759-0.12912 0.066096-0.26742 0.099994-0.4 0.0808-0.090507 0.14378-0.16447 0.23332-0.26666 0.19096-0.21796 0.39614-0.44661 0.56662-0.66666s0.30996-0.40882 0.39997-0.66666l0.03333-0.033333c0.34839-1.4062 0.34857-1.9929 0.36664-2.5v-0.033333c0-1.6339-1.4686-2.9-3.1998-2.9z"/> <path style="block-progression:tb;color:#000000;text-transform:none;text-indent:0" d="m8.4036 1c-1.7312 0-3.1998 1.2661-3.1998 2.9 0.012287 0.51643 0.058473 1.1532 0.36664 2.5v0.033333l0.033328 0.033333c0.098928 0.28338 0.24289 0.44549 0.4333 0.66666s0.41742 0.48149 0.63328 0.69999c0.025397 0.025708 0.041676 0.041633 0.066656 0.066677 0.04281 0.18631 0.094672 0.38681 0.13332 0.56666 0.10284 0.47851 0.092296 0.81737 0.066668 0.93332-0.74389 0.26121-1.6694 0.57228-2.4998 0.93332-0.46622 0.2027-0.8881 0.3837-1.2332 0.59999-0.34513 0.2163-0.68837 0.37971-0.79994 0.86666-0.16004 0.63293-0.19866 0.7539-0.39997 1.5333-0.027212 0.20914 0.083011 0.42961 0.26665 0.53333 1.5078 0.81451 3.824 1.1423 6.1329 1.1333s4.6066-0.35609 6.0662-1.1333c0.11739-0.07353 0.14304-0.10869 0.13332-0.2333-0.04365-0.68908-0.08154-1.3669-0.13332-1.7666-0.01807-0.09908-0.06492-0.19275-0.13332-0.26666-0.46366-0.5537-1.1564-0.89218-1.9665-1.2333-0.7396-0.31144-1.6067-0.63486-2.4665-0.99999-0.048123-0.10721-0.095926-0.41912 0-0.89999 0.025759-0.12912 0.066096-0.26742 0.099994-0.4 0.0808-0.090507 0.14378-0.16447 0.23332-0.26666 0.19096-0.21796 0.39614-0.44661 0.56662-0.66666s0.30996-0.40882 0.39997-0.66666l0.03333-0.033333c0.34839-1.4062 0.34857-1.9929 0.36664-2.5v-0.033333c0-1.6339-1.4686-2.9-3.1998-2.9z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

After

Width:  |  Height:  |  Size: 108 B

Some files were not shown because too many files have changed in this diff Show More