вопрос
Добрый день, появилась такая проблема:
Есть дополнительное поле загрузка файла, разрешены doc,pdf и т д
мне нужно что бы в предварительном просмотре выводился нормальный вариант как в attachment.tpl
Но у меня выводится кодом
Если же такой вариант не возможен, подскажите как можно посмотреть файл не публикуя его изначально?
Есть дополнительное поле загрузка файла, разрешены doc,pdf и т д
мне нужно что бы в предварительном просмотре выводился нормальный вариант как в attachment.tpl
Но у меня выводится кодом
[attachment=1200:p_392_17.doc]
Если же такой вариант не возможен, подскажите как можно посмотреть файл не публикуя его изначально?
Ответил: Live_one
вообщем (у меня по русскому языку двойка, я не знаю, что в русском языке не существует слова вообщем) решили мне проблему с за определенную сумму :)
Автор: Николай Петров (lutskboy)
Вот решение всей проблемы:
1.открыть engine\inc\preview.php
и после require_once ROOT_DIR.'/engine/classes/templates.class.php';
вставить
$news_id=isset($_REQUEST['id'])?$_REQUEST['id']:0;
function show_attach($story, $id, $static = false) {
global $db, $config, $lang, $user_group, $member_id, $_TIME, $news_date;
$find_1 = array();
$find_2 = array();
$replace_1 = array();
$replace_2 = array();
$tpl = new dle_template();
$tpl->dir = ROOT_DIR.'/templates/'.$config['skin'].'/';
if( $static ) {
if( is_array( $id ) and count( $id ) ) {
$list = array();
foreach ( $id as $value ) {
$list[] = intval($value);
}
$id = implode( ',', $list );
$where = "static_id IN ({$id})";
} else $where = "static_id = '".intval($id)."'";
$db->query( "SELECT * FROM " . PREFIX . "_static_files WHERE $where" );
$area = "&area=static";
} else {
if( is_array( $id ) and count( $id ) ) {
$list = array();
foreach ( $id as $value ) {
$list[] = intval($value);
}
$id = implode( ',', $list );
$where = "news_id IN ({$id})";
} else $where = "news_id = '".intval($id)."'";
$db->query( "SELECT * FROM " . PREFIX . "_files WHERE $where" );
$area = "";
}
if( !file_exists( $tpl->dir . "/attachment.tpl" ) ) {
$tpl->template = <<[allow-download]{name} [count] [{size}] ({$lang['att_dcount']} {count})[/count][/allow-download]
[not-allow-download]{$lang['att_denied']}[/not-allow-download]
HTML;
$tpl->copy_template = $tpl->template;
} else {
$tpl->load_template( 'attachment.tpl' );
}
while ( $row = $db->get_row() ) {
$row['name'] = explode( "/", $row['name'] );
$row['name'] = end( $row['name'] );
$filename_arr = explode( ".", $row['onserver'] );
$type = strtolower(end( $filename_arr ));
$find_1[] = '[attachment=' . $row['id'] . ']';
$find_2[] = "#\[attachment={$row['id']}:(.+?)\]#i";
if (stripos ( $tpl->copy_template, "{md5}" ) !== false) {
if($row['checksum']) $tpl->set( '{md5}', $row['checksum'] );
else $tpl->set( '{md5}', @md5_file( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) );
}
if (stripos ( $tpl->copy_template, "{size}" ) !== false) {
if($row['size']) $tpl->set( '{size}', formatsize($row['size']) );
else $tpl->set( '{size}', formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) ) );
}
$onlineview_ext = array('doc', 'docx','odt','pdf','xls','xlsx');
if ( in_array($type, $onlineview_ext) ) {
$tpl->set( '[allow-online]', "" );
$tpl->set( '[/allow-online]', "" );
$tpl->set( '{online-view-link}', "https://docs.google.com/viewer?url=".urlencode( $config['http_home_url']."engine/download.php?id=".$row['id'].$area."&viewonline=1" ) );
} else {
$tpl->set( '{online-view-link}', "" );
$tpl->set_block( "'\\[allow-online\\](.*?)\\[/allow-online\\]'si", "" );
}
if ( $user_group[$member_id['user_group']]['allow_files'] ) {
$tpl->set( '[allow-download]', "" );
$tpl->set( '[/allow-download]', "" );
$tpl->set_block( "'\\[not-allow-download\\](.*?)\\[/not-allow-download\\]'si", "" );
} else {
$tpl->set( '[not-allow-download]', "" );
$tpl->set( '[/not-allow-download]', "" );
$tpl->set_block( "'\\[allow-download\\](.*?)\\[/allow-download\\]'si", "" );
}
if ( $config['files_count'] ) {
$tpl->set( '{count}', $row['dcount'] );
$tpl->set( '[count]', "" );
$tpl->set( '[/count]', "" );
$tpl->set_block( "'\\[not-allow-count\\](.*?)\\[/not-allow-count\\]'si", "" );
} else {
$tpl->set( '{count}', "" );
$tpl->set( '[not-allow-count]', "" );
$tpl->set( '[/not-allow-count]', "" );
$tpl->set_block( "'\\[count\\](.*?)\\[/count\\]'si", "" );
}
if( date( 'Ymd', $row['date'] ) == date( 'Ymd', $_TIME ) ) {
$tpl->set( '{date}', $lang['time_heute'] . langdate( ", H:i", $row['date'] ) );
} elseif( date( 'Ymd', $row['date'] ) == date( 'Ymd', ($_TIME - 86400) ) ) {
$tpl->set( '{date}', $lang['time_gestern'] . langdate( ", H:i", $row['date'] ) );
} else {
$tpl->set( '{date}', langdate( $config['timestamp_active'], $row['date'] ) );
}
$news_date = $row['date'];
$tpl->copy_template = preg_replace_callback ( "#\{date=(.+?)\}#i", "formdate", $tpl->copy_template );
if( $area ) $area_link = str_replace("&", "&", $area);
$tpl->set( '{name}', $row['name'] );
$tpl->set( '{extension}', $type );
$tpl->set( '{link}', $config['http_home_url']."engine/download.php?id=".$row['id'].$area_link );
$tpl->set( '{id}', $row['id'] );
$tpl->compile( 'attachment' );
$replace_1[] = $tpl->result['attachment'];
$tpl->result['attachment'] = str_replace( $row['name'], "\\1", $tpl->result['attachment'] );
$replace_2[] = $tpl->result['attachment'];
$tpl->result['attachment'] = '';
}
$tpl->clear();
$db->free();
$story = str_replace ( $find_1, $replace_1, $story );
$story = preg_replace( $find_2, $replace_2, $story );
return $story;
}
2. ищем echo $tpl->result['shortstory'];
перед ним вставить
if( strpos( $tpl->result['shortstory'], "[attachment=" ) !== false ) {
$tpl->result['shortstory'] = show_attach( $tpl->result['shortstory'], $news_id );
}
3. ищем echo $tpl->result['fullstory'];
перед ним вставить
if( strpos( $tpl->result['fullstory'], "[attachment=" ) !== false ) {
$tpl->result['fullstory'] = show_attach( $tpl->result['fullstory'], $news_id );
}
Автор: Николай Петров (lutskboy)
Вот решение всей проблемы:
1.открыть engine\inc\preview.php
и после require_once ROOT_DIR.'/engine/classes/templates.class.php';
вставить
$news_id=isset($_REQUEST['id'])?$_REQUEST['id']:0;
function show_attach($story, $id, $static = false) {
global $db, $config, $lang, $user_group, $member_id, $_TIME, $news_date;
$find_1 = array();
$find_2 = array();
$replace_1 = array();
$replace_2 = array();
$tpl = new dle_template();
$tpl->dir = ROOT_DIR.'/templates/'.$config['skin'].'/';
if( $static ) {
if( is_array( $id ) and count( $id ) ) {
$list = array();
foreach ( $id as $value ) {
$list[] = intval($value);
}
$id = implode( ',', $list );
$where = "static_id IN ({$id})";
} else $where = "static_id = '".intval($id)."'";
$db->query( "SELECT * FROM " . PREFIX . "_static_files WHERE $where" );
$area = "&area=static";
} else {
if( is_array( $id ) and count( $id ) ) {
$list = array();
foreach ( $id as $value ) {
$list[] = intval($value);
}
$id = implode( ',', $list );
$where = "news_id IN ({$id})";
} else $where = "news_id = '".intval($id)."'";
$db->query( "SELECT * FROM " . PREFIX . "_files WHERE $where" );
$area = "";
}
if( !file_exists( $tpl->dir . "/attachment.tpl" ) ) {
$tpl->template = <<
[not-allow-download]{$lang['att_denied']}[/not-allow-download]
HTML;
$tpl->copy_template = $tpl->template;
} else {
$tpl->load_template( 'attachment.tpl' );
}
while ( $row = $db->get_row() ) {
$row['name'] = explode( "/", $row['name'] );
$row['name'] = end( $row['name'] );
$filename_arr = explode( ".", $row['onserver'] );
$type = strtolower(end( $filename_arr ));
$find_1[] = '[attachment=' . $row['id'] . ']';
$find_2[] = "#\[attachment={$row['id']}:(.+?)\]#i";
if (stripos ( $tpl->copy_template, "{md5}" ) !== false) {
if($row['checksum']) $tpl->set( '{md5}', $row['checksum'] );
else $tpl->set( '{md5}', @md5_file( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) );
}
if (stripos ( $tpl->copy_template, "{size}" ) !== false) {
if($row['size']) $tpl->set( '{size}', formatsize($row['size']) );
else $tpl->set( '{size}', formatsize( @filesize( ROOT_DIR . '/uploads/files/' . $row['onserver'] ) ) );
}
$onlineview_ext = array('doc', 'docx','odt','pdf','xls','xlsx');
if ( in_array($type, $onlineview_ext) ) {
$tpl->set( '[allow-online]', "" );
$tpl->set( '[/allow-online]', "" );
$tpl->set( '{online-view-link}', "https://docs.google.com/viewer?url=".urlencode( $config['http_home_url']."engine/download.php?id=".$row['id'].$area."&viewonline=1" ) );
} else {
$tpl->set( '{online-view-link}', "" );
$tpl->set_block( "'\\[allow-online\\](.*?)\\[/allow-online\\]'si", "" );
}
if ( $user_group[$member_id['user_group']]['allow_files'] ) {
$tpl->set( '[allow-download]', "" );
$tpl->set( '[/allow-download]', "" );
$tpl->set_block( "'\\[not-allow-download\\](.*?)\\[/not-allow-download\\]'si", "" );
} else {
$tpl->set( '[not-allow-download]', "" );
$tpl->set( '[/not-allow-download]', "" );
$tpl->set_block( "'\\[allow-download\\](.*?)\\[/allow-download\\]'si", "" );
}
if ( $config['files_count'] ) {
$tpl->set( '{count}', $row['dcount'] );
$tpl->set( '[count]', "" );
$tpl->set( '[/count]', "" );
$tpl->set_block( "'\\[not-allow-count\\](.*?)\\[/not-allow-count\\]'si", "" );
} else {
$tpl->set( '{count}', "" );
$tpl->set( '[not-allow-count]', "" );
$tpl->set( '[/not-allow-count]', "" );
$tpl->set_block( "'\\[count\\](.*?)\\[/count\\]'si", "" );
}
if( date( 'Ymd', $row['date'] ) == date( 'Ymd', $_TIME ) ) {
$tpl->set( '{date}', $lang['time_heute'] . langdate( ", H:i", $row['date'] ) );
} elseif( date( 'Ymd', $row['date'] ) == date( 'Ymd', ($_TIME - 86400) ) ) {
$tpl->set( '{date}', $lang['time_gestern'] . langdate( ", H:i", $row['date'] ) );
} else {
$tpl->set( '{date}', langdate( $config['timestamp_active'], $row['date'] ) );
}
$news_date = $row['date'];
$tpl->copy_template = preg_replace_callback ( "#\{date=(.+?)\}#i", "formdate", $tpl->copy_template );
if( $area ) $area_link = str_replace("&", "&", $area);
$tpl->set( '{name}', $row['name'] );
$tpl->set( '{extension}', $type );
$tpl->set( '{link}', $config['http_home_url']."engine/download.php?id=".$row['id'].$area_link );
$tpl->set( '{id}', $row['id'] );
$tpl->compile( 'attachment' );
$replace_1[] = $tpl->result['attachment'];
$tpl->result['attachment'] = str_replace( $row['name'], "\\1", $tpl->result['attachment'] );
$replace_2[] = $tpl->result['attachment'];
$tpl->result['attachment'] = '';
}
$tpl->clear();
$db->free();
$story = str_replace ( $find_1, $replace_1, $story );
$story = preg_replace( $find_2, $replace_2, $story );
return $story;
}
2. ищем echo $tpl->result['shortstory'];
перед ним вставить
if( strpos( $tpl->result['shortstory'], "[attachment=" ) !== false ) {
$tpl->result['shortstory'] = show_attach( $tpl->result['shortstory'], $news_id );
}
3. ищем echo $tpl->result['fullstory'];
перед ним вставить
if( strpos( $tpl->result['fullstory'], "[attachment=" ) !== false ) {
$tpl->result['fullstory'] = show_attach( $tpl->result['fullstory'], $news_id );
}