Index: upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload.module,v
retrieving revision 1.51
diff -U3 -r1.51 upload.module
--- upload.module 2 Sep 2005 02:11:41 -0000 1.51
+++ upload.module 12 Sep 2005 17:39:57 -0000
@@ -151,6 +151,7 @@
if ($file = file_check_upload($key)) {
$node->files[$file->source] = $file;
$node->files[$key]->list = $node->list[$key];
+ $node->files[$key]->inline = $node->inline[$key];
$node->files[$key]->remove = $node->remove[$key];
if ($file->source) {
$filesize += $file->filesize;
@@ -161,6 +162,7 @@
else {
foreach ($node->files as $key => $file) {
$node->list[$key] = $file->list;
+ $node->inline[$key] = $file->inline;
}
}
@@ -252,8 +254,18 @@
$previews[] = $file;
}
}
+ elseif ($file->inline) {
+ //we need to save that list for previews in inline modus too.
+ if (!$file->fid) {
+ $previews[] = $file;
+ }
+ }
}
+ //render the inline image(s)
+ $node->teaser = _upload_inline($node) . $node->teaser;
+ $node->body = _upload_inline($node) . $node->body;
+
// URLs to files being previewed are actually Drupal paths. When Clean
// URLs are disabled, the two do not match. We perform an automatic
// replacement from temporary to permanent URLs. That way, the author
@@ -273,6 +285,8 @@
if (count($rows) && !$teaser) {
$node->body .= theme('table', $header, $rows, array('id' => 'attachments'));
}
+
+
}
break;
@@ -342,8 +356,8 @@
// Insert new files:
if ($file = file_save_upload($file, $file->filename)) {
$fid = db_next_id('{files}_fid');
- db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d)",
- $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key]);
+ db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, inline) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, %d)",
+ $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $node->inline[$key]);
}
}
}
@@ -360,15 +374,15 @@
}
foreach ((array)$node->list as $key => $value) {
if (!$node->remove[$key]) {
- db_query('UPDATE {files} SET list = %d WHERE fid = %d AND vid = %d', $node->list[$key], $key, $node->vid);
+ db_query('UPDATE {files} SET list = %d, inline = %d WHERE fid = %d AND vid = %d', $node->list[$key], $node->inline[$key], $key, $node->vid);
}
}
if ($node->old_vid) {
foreach ((array)$node->remove as $key => $remove) {
if (!$remove) {
$file = db_fetch_object(db_query('SELECT * FROM {files} WHERE vid = %d AND fid = %d', $node->old_vid, $key));
- db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d)",
- $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list);
+ db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, inline) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, %d)",
+ $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list, $file->inline);
}
}
}
@@ -393,15 +407,17 @@
}
function _upload_form($node) {
- $header = array(t('Delete'), t('List'), t('Url'), t('Size'));
+ $header = array(t('Delete'), t('List'), t('Inline'), t('Url'), t('Size'));
$rows = array();
$output = '';
if (is_array($node->files)) {
foreach ($node->files as $key => $file) {
+ $is_image = ereg('^(image/)', $file->filemime);
$rows[] = array(
form_checkbox('', "remove][$key", 1, $file->remove),
form_checkbox('', "list][$key", 1, $file->list),
+ form_checkbox('', "inline][$key", 1, $file->inline, '', $is_image ? '' : array('disabled'=>'disabled')),
$file->filename ."
". file_create_url(($file->fid ? $file->filepath : file_create_filename($file->filename, file_create_path()))) ."",
format_size($file->filesize)
);
@@ -438,6 +454,20 @@
}
/**
+ * Render inline link, or image.
+ */
+function _upload_inline($node) {
+ $previews = array();
+ // Build list of attached files
+ foreach ($node->files as $file) {
+ if ($file->inline) {
+ $output .= theme('upload_inline', $file);
+ }
+ }
+ return $output;
+}
+
+/**
* Check an upload, if it is an image, make sure it fits within the
* maximum dimensions allowed.
*/
@@ -471,3 +501,13 @@
print drupal_call_js('window.parent.iframeHandler', $output);
exit;
}
+
+/**
+ * Theme function for rendering of inline images
+ * @param $file a file object.
+ * @param $image a Boolean, indicating whether an img tag (TRUE) or an anchor tag (FALSE) should be used.
+ * @ingroup themable
+ */
+function theme_upload_inline($file) {
+ return '';
+}
\ No newline at end of file
? Doxyfile
? files
? upload_inline_2_0.patch
? upload_inline_2_1.patch
? upload_inline_2_2.patch
? upload_inline_2_3.patch
? upload_inline_2_4.patch
? database/database.prefixed.mysql
? sites/webschuur.dyndns.org.DPL
Index: database/database.mysql
===================================================================
RCS file: /cvs/drupal/drupal/database/database.mysql,v
retrieving revision 1.195
diff -u -F^f -r1.195 database.mysql
--- database/database.mysql 30 Aug 2005 15:19:20 -0000 1.195
+++ database/database.mysql 12 Sep 2005 17:44:45 -0000
@@ -250,6 +250,7 @@
filemime varchar(255) NOT NULL default '',
filesize int(10) unsigned NOT NULL default '0',
list tinyint(1) unsigned NOT NULL default '0',
+ inline tinyint(1) unsigned NOT NULL default '0',
KEY vid (vid),
KEY fid (fid)
) TYPE=MyISAM;
Index: database/database.pgsql
===================================================================
RCS file: /cvs/drupal/drupal/database/database.pgsql,v
retrieving revision 1.134
diff -u -F^f -r1.134 database.pgsql
--- database/database.pgsql 30 Aug 2005 15:19:20 -0000 1.134
+++ database/database.pgsql 12 Sep 2005 17:44:45 -0000
@@ -245,7 +245,8 @@
filepath varchar(255) NOT NULL default '',
filemime varchar(255) NOT NULL default '',
filesize integer NOT NULL default '0',
- list smallint NOT NULL default '0'
+ list smallint NOT NULL default '0',
+ inline smallint NOT NULL default '0'
);
CREATE INDEX files_fid_idx ON files(fid);
CREATE INDEX files_vid_idx ON files(vid);
Index: database/updates.inc
===================================================================
RCS file: /cvs/drupal/drupal/database/updates.inc,v
retrieving revision 1.131
diff -u -F^f -r1.131 updates.inc
--- database/updates.inc 8 Sep 2005 19:17:34 -0000 1.131
+++ database/updates.inc 12 Sep 2005 17:44:46 -0000
@@ -45,7 +45,8 @@
"2005-08-08" => "update_144",
"2005-08-15" => "update_145",
"2005-08-25" => "update_146",
- "2005-09-07" => "update_147"
+ "2005-09-07" => "update_147",
+ "2005-09-12" => "update_148"
);
function update_110() {
@@ -790,6 +791,12 @@ function update_147() {
return $ret;
}
+function update_148() {
+ $ret = array();
+ $ret[] = update_sql("ALTER TABLE {files} ADD inline tinyint(1) unsigned default 0 not NULL");
+ return $ret;
+}
+
function update_sql($sql) {
$edit = $_POST["edit"];
$result = db_query($sql);
Index: misc/drupal.css
===================================================================
RCS file: /cvs/drupal/drupal/misc/drupal.css,v
retrieving revision 1.120
diff -u -F^f -r1.120 drupal.css
--- misc/drupal.css 7 Sep 2005 20:56:00 -0000 1.120
+++ misc/drupal.css 12 Sep 2005 17:44:46 -0000
@@ -455,6 +455,9 @@ form {
#user-login-form {
text-align: center;
}
+img.upload {
+ float:left;
+}
.more-help-link {
font-size: 0.85em;
text-align: right;
Index: modules/upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload.module,v
retrieving revision 1.51
diff -u -F^f -r1.51 upload.module
--- modules/upload.module 2 Sep 2005 02:11:41 -0000 1.51
+++ modules/upload.module 12 Sep 2005 17:44:47 -0000
@@ -151,6 +151,7 @@ function upload_nodeapi(&$node, $op, $ar
if ($file = file_check_upload($key)) {
$node->files[$file->source] = $file;
$node->files[$key]->list = $node->list[$key];
+ $node->files[$key]->inline = $node->inline[$key];
$node->files[$key]->remove = $node->remove[$key];
if ($file->source) {
$filesize += $file->filesize;
@@ -161,6 +162,7 @@ function upload_nodeapi(&$node, $op, $ar
else {
foreach ($node->files as $key => $file) {
$node->list[$key] = $file->list;
+ $node->inline[$key] = $file->inline;
}
}
@@ -252,8 +254,18 @@ function upload_nodeapi(&$node, $op, $ar
$previews[] = $file;
}
}
+ elseif ($file->inline) {
+ //we need to save that list for previews in inline modus too.
+ if (!$file->fid) {
+ $previews[] = $file;
+ }
+ }
}
+ //render the inline image(s)
+ $node->teaser = _upload_inline($node) . $node->teaser;
+ $node->body = _upload_inline($node) . $node->body;
+
// URLs to files being previewed are actually Drupal paths. When Clean
// URLs are disabled, the two do not match. We perform an automatic
// replacement from temporary to permanent URLs. That way, the author
@@ -273,6 +285,8 @@ function upload_nodeapi(&$node, $op, $ar
if (count($rows) && !$teaser) {
$node->body .= theme('table', $header, $rows, array('id' => 'attachments'));
}
+
+
}
break;
@@ -342,8 +356,8 @@ function upload_save($node) {
// Insert new files:
if ($file = file_save_upload($file, $file->filename)) {
$fid = db_next_id('{files}_fid');
- db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d)",
- $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key]);
+ db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, inline) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, %d)",
+ $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $node->inline[$key]);
}
}
}
@@ -360,15 +374,15 @@ function upload_save($node) {
}
foreach ((array)$node->list as $key => $value) {
if (!$node->remove[$key]) {
- db_query('UPDATE {files} SET list = %d WHERE fid = %d AND vid = %d', $node->list[$key], $key, $node->vid);
+ db_query('UPDATE {files} SET list = %d, inline = %d WHERE fid = %d AND vid = %d', $node->list[$key], $node->inline[$key], $key, $node->vid);
}
}
if ($node->old_vid) {
foreach ((array)$node->remove as $key => $remove) {
if (!$remove) {
$file = db_fetch_object(db_query('SELECT * FROM {files} WHERE vid = %d AND fid = %d', $node->old_vid, $key));
- db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d)",
- $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list);
+ db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, inline) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, %d)",
+ $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list, $file->inline);
}
}
}
@@ -393,15 +407,17 @@ function upload_form($node) {
}
function _upload_form($node) {
- $header = array(t('Delete'), t('List'), t('Url'), t('Size'));
+ $header = array(t('Delete'), t('List'), t('Inline'), t('Url'), t('Size'));
$rows = array();
$output = '';
if (is_array($node->files)) {
foreach ($node->files as $key => $file) {
+ $is_image = ereg('^(image/)', $file->filemime);
$rows[] = array(
form_checkbox('', "remove][$key", 1, $file->remove),
form_checkbox('', "list][$key", 1, $file->list),
+ form_checkbox('', "inline][$key", 1, $file->inline, '', $is_image ? '' : array('disabled'=>'disabled')),
$file->filename ."
". file_create_url(($file->fid ? $file->filepath : file_create_filename($file->filename, file_create_path()))) ."",
format_size($file->filesize)
);
@@ -438,6 +454,20 @@ function upload_load($node) {
}
/**
+ * Render inline link, or image.
+ */
+function _upload_inline($node) {
+ $previews = array();
+ // Build list of attached files
+ foreach ($node->files as $file) {
+ if ($file->inline) {
+ $output .= theme('upload_inline', $file);
+ }
+ }
+ return $output;
+}
+
+/**
* Check an upload, if it is an image, make sure it fits within the
* maximum dimensions allowed.
*/
@@ -471,3 +501,13 @@ function upload_js() {
print drupal_call_js('window.parent.iframeHandler', $output);
exit;
}
+
+/**
+ * Theme function for rendering of inline images
+ * @param $file a file object.
+ * @param $image a Boolean, indicating whether an img tag (TRUE) or an anchor tag (FALSE) should be used.
+ * @ingroup themable
+ */
+function theme_upload_inline($file) {
+ return '';
+}
\ No newline at end of file