Skip to content

Commit 75625f6

Browse files
committed
Upload page 'replace' pulldown: 1) account for local media with abs urls; 2) alphabetize; 3) tooltips
1 parent ed4f8f2 commit 75625f6

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

system/application/controllers/book.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ private function upload() {
572572
}
573573

574574
try {
575-
$result = $this->file_upload->uploadMedia($source_file, $this->versions);
575+
$result = $this->file_upload->uploadMedia($source_file, $this->versions, $this->data['base_uri']);
576576
$url = $result['url'];
577577
$thumb_url = $result['thumbUrl'];
578578
} catch (Exception $e) {
@@ -595,11 +595,11 @@ private function upload() {
595595
} // if
596596

597597
$this->data['book_media'] = $this->pages->get_all($this->data['book']->book_id, 'media', null, false); // List of media pages
598-
$to_remove = array();
599598
for ($j = 0; $j < count($this->data['book_media']); $j++) {
600599
$this->data['book_media'][$j]->versions = array();
601-
$this->data['book_media'][$j]->versions[0] = $this->versions->get_single($this->data['book_media'][$j]->content_id, $this->data['book_media'][$j]->recent_version_id);
600+
$this->data['book_media'][$j]->versions[0] = $this->versions->get_single($this->data['book_media'][$j]->content_id, $this->data['book_media'][$j]->recent_version_id, null, false);
602601
}
602+
usort($this->data['book_media'], "sortSearchResults");
603603

604604
}
605605

system/application/libraries/File_Upload.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function assertValidFileUpload($file) {
3838
}
3939

4040
// Upload media file and its thumbnail image
41-
public function uploadMedia($file, $versions = null) {
41+
public function uploadMedia($file, $versions = null, $base_uri = '') {
4242
$this->assertValidFileUpload($file);
4343

4444
// check the path that is prepended to the source file name is valid (no prepend or "media")
@@ -53,8 +53,9 @@ public function uploadMedia($file, $versions = null) {
5353
if (!empty($_POST['replace']) && !empty($versions)) {
5454
$arr = explode(':', $_POST['replace']); // replace is an urn
5555
$version_id = array_pop($arr);
56-
$version = $versions->get($version_id);
56+
$version = $versions->get($version_id, null, false);
5757
$sourceName = $version->url;
58+
if (!empty($base_uri) && substr($sourceName, 0, strlen($base_uri)) == $base_uri) $sourceName = substr($sourceName, strlen($base_uri));
5859
if (substr($sourceName, 0, 6) == 'media/') $sourceName = substr($sourceName, 6); // Don't use ltrim() because of an apparent OS X bug (we have verifiable problems when a filename began with "em")
5960
if (!$this->is_allowed($sourceName)) {
6061
throw new Exception(FILE_NAME_NOT_ALLOWED);

system/application/models/version_model.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,10 +594,11 @@ public function set_recent_version_id($content_id=0, $version_id=0) {
594594
/**
595595
* Make an assumption on whether or not the URL field is local or external
596596
*/
597-
public function url_is_local($url) {
597+
public function url_is_local($url, $base_uri='') {
598598

599599
$arr = parse_url($url);
600600
if (!isset($arr['scheme']) || empty($arr['scheme'])) return true;
601+
if (!empty($base_uri) && $base_uri == substr($url, 0, strlen($base_uri))) return true;
601602
return false;
602603

603604
}

system/application/views/melons/cantaloupe/upload.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,14 +271,15 @@ function escapeHtml(text) {
271271
<label><input type="radio" name="name_policy" value="title" CHECKED />&nbsp; Create from title</label>
272272
</td></tr>
273273
<tr><td class="field">Replace existing</td><td>
274-
<select name="replace" class="form-control"><option rel="" value="">-- choose an existing local media file to replace with this upload</option><?
274+
<select name="replace" class="form-control" style="max-width:570px;"><option rel="" value="">-- choose an existing local media file to replace with this upload</option><?
275275
foreach($book_media as $book_media_row) {
276276
if (!isset($book_media_row->versions) || empty($book_media_row->versions)) continue;
277-
if (!$this->versions->url_is_local($book_media_row->versions[0]->url)) continue;
277+
if (!isset($book_media_row->versions[0])) continue;
278+
if (!$this->versions->url_is_local($book_media_row->versions[0]->url, $base_uri)) continue;
278279
echo '<option ';
279280
echo 'rel="'.$book_media_row->slug.'" ';
281+
echo 'title="'.htmlspecialchars($book_media_row->versions[0]->url).'" ';
280282
echo 'value="'.$this->versions->urn($book_media_row->versions[0]->version_id).'">';
281-
if (!isset($book_media_row->versions[0])) continue;
282283
echo $book_media_row->versions[0]->title;
283284
echo '</option>';
284285
}

0 commit comments

Comments
 (0)