vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.0 Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=33)
-   -   Compose External Javascript (https://vborg.vbsupport.ru/showthread.php?t=59776)

Bernd Glasstett 01-05-2004 10:00 PM

Compose External Javascript
 
vB Compose External v. 1.0.3 (Updated)

This hack provides an easy way to generate JS-Code for the Javascript syndication system on vB 3. It has been tested with VB 3.0.0 RC 1 and higher.

Features:

  • Complete control of the HTML-code before, after and in between the links to the threads
  • Possibility to enter a maximum-value for the count of threads to be displayed by the administrator
  • Users can choose more than one forum to be displayed
  • Users can choose how many threads to be displayed
  • Users can choose how many characters in the thread title should appear (new in version 1.0.1)
  • Users can choose from three pre-made styles (new in version 1.0.3)
  • Integration into forumdisplay and navbar-templates (new in version 1.0.4)
  • Complete integration in the look and feel of vB 3
  • Phrase-compatibility
Plans for future versions:
  • Option to choose the forums from a pulldown-men?
  • Option to add it to the forum-tools (in order to be able to have the JS-Script created for this specific forum)
  • Options for creating the URLs for XML- and RSS-feeds
  • Adding new features when external.php will be updated with new features ;)
These are the instructions how to install it:
  • New templates: 1
  • Templates to be changed: 2
  • PHP-files to be added: 1
  • Phrases to be added: 23
Step 1:
Insert the phrases using the XML-files. There are phrases for some languages. You can of course translate them to other languages using the phrase-system. If you do so, please send me the XML-files for these translations. I will add them to this ZIP. Right now there are:
  • German
  • English
Please be sure to save the language in the phrase system BEFORE you do so!

Step 2:
Upload the file composeexternal.php in the root of your forum.
Upload the files in the folder /images/composeexternal/ on the server.


Step 3:
Add a new template with the name "composeexternal" and add the content of composeexternal_template.txt (in this zip) to it.

Step 4:
Search for the following code on template forumdisplay:
Code:


                    <div><img class="inlineimg" src="$stylevar[imgdir_button]/subscribe.gif" alt="$vbphrase[view_parent_forum]" vspace="1" /> <a href="forumdisplay.php?$session[sessionurl]f=$foruminfo[parentid]">$vbphrase[view_parent_forum]</a></div>
                </div>
        </td>
        <!-- / forum tools -->

Replace with the following code:
Code:


                    <div><img class="inlineimg" src="$stylevar[imgdir_button]/subscribe.gif" alt="$vbphrase[view_parent_forum]" vspace="1" /> <a href="forumdisplay.php?$session[sessionurl]f=$foruminfo[parentid]">$vbphrase[view_parent_forum]</a></div>
                </div>
                    <div><img class="inlineimg" src="$stylevar[imgdir_button]/subscribe.gif" alt="$vbphrase[composeexternal_categorystrip]" vspace="1" /> <a href="composeexternal.php?$session[sessionurl]do=composecode&amp;f=$foruminfo[forumid]">$vbphrase[composeexternal_categorystrip]</a></div>
 
        </td>
        <!-- / forum tools -->



Search for:
Code:


        <if condition="$show['adminoptions']">

Add above:
Code:


        <tr><td class="vbmenu_option"><a href="composeexternal.php?$session[sessionurl]do=composecode&amp;f=$foruminfo[forumid]">$vbphrase[composeexternal_categorystrip]</a></td></tr>



Step 5:

Search for the following code on template navbar:

Code:

                  <if condition="$show['wollink']"><tr><td class="vbmenu_option"><a href="online.php?$session[sessionurl]">$vbphrase[whos_online]</a></td></tr></if>



Add below:
Code:

                <tr><td class="vbmenu_option"><a href="composeexternal.php?$session[sessionurl]">$vbphrase[composeexternal_categorystrip]</a></td></tr>




Credits go to Ypsfanpage.de - a user of our forum. He coded the initial php-file. I ported it to the VB-system and created the php-file and the template.

See the screen-shots below, how it works, or visit our testsite.

Version-History
v. 1.0.0 - Initial release
v. 1.0.1 - Added character-limitation
v. 1.0.2 - Got rid of a small bug, occuring in MSIE, happened when there where too less threads, genereal optimization of the code
v. 1.0.3 - Added three pre-made templates
v. 1.0.4 - Added support for forumdisplay-template and navbar-template

Please click on install, when you choose to use this hack :)

FleaBag 01-06-2004 01:13 PM

This is a great idea, might use it on my site when I get to vB3.

gldtn 01-06-2004 02:30 PM

Very nice.. Do you think you can add some type of option to limit the amount of characters to show.. something like:

<script type="text/javascript"src="http://www.cogumelosmagicos.org/forum/external.php?forumids=30,31,32,38,40&type=js">
</script>
<script type="text/javascript">
<!--
for (i = 0; i < 1; i++)
var titleAsString = new String(threads[i].title);
if (titleAsString.length > 27)
{
var newTitle = titleAsString.substring(0,27);
document.write("Tópico: <a href=\"http://www.cogumelosmagicos.org/forum/showthread.php?threadid="+threads[i].threadid+"\">"+newTitle + "..."+"</a><br />Autor: <a href=\"http://www.cogumelosmagicos.org/forum/member.php?u="+threads[i].poster+"\">"+threads[i].poster+"</a> - "+threads[i].threadtime+"<br />");
}
else
{
document.write("Tópico: <a href=\"http://www.cogumelosmagicos.org/forum/showthread.php?threadid="+threads[i].threadid+"\">"+titleAsString+"</a><br />Autor: <a href=\"http://www.cogumelosmagicos.org/forum/member.php?u="+threads[i].poster+"\">"+threads[i].poster+"</a> - "+threads[i].threadtime+"<br />");
}
//-->
</script>

Thank You

Bernd Glasstett 01-06-2004 04:27 PM

I am incorparating that at this moment, will soon post the new file :) Plus, I already have some new ideas. Will post them also soon :)

Bernd Glasstett 01-06-2004 06:22 PM

Ok, here we go, just updated the file. The old version - if someone doesn't need the character-limitation - is still available for download.

Two more phrases have been updated with the new release:
- composeexternal_charlimit
- composeexternal_charlimitdescription

gldtn 01-06-2004 07:23 PM

Got it.. It works fine.. Thanks a lot.. I hope you'll add more feature to it on future releases... features such as pulling polls, etc..

Also a link to the poster would be nice..

[high]* gldtn clicks install :)[/high]

Bernd Glasstett 01-06-2004 07:52 PM

Quote:

Originally Posted by gldtn
Got it.. It works fine.. Thanks a lot.. I hope you'll add more feature to it on future releases... features such as pulling polls, etc..

Also a link to the poster would be nice..

[high]* gldtn clicks install :)[/high]

We (Ypsfanpage.de and me) were already thinking about hacking the external.php too. That's because the options are limited there. At the moment we will extend the hack to have also XML and RSS supported. It might look then like the user-panel when we are done :)

And if by then it is foreseeable, that Jelsoft is not going to extend the external.php, we will look into that. I would love to see some more things to appear there too. Polls, postings, poster. They are all not covered right now.

gldtn 01-06-2004 08:19 PM

Awesome, I'm looking forward to this, If my scripting knowledge was any good I would've be willing to help you guys out.

Thanks once again for this great hack :D

eva2000 01-06-2004 08:53 PM

nice script you got there :)

seems what ever is generated when used on a web site generates a javascript error in IE 6.0.2800.1106

Code:

Error: 'threads[...].title' null or not an object
Code: 0


eva2000 01-06-2004 09:23 PM

okay so that error is due to having less than 15 threads in the forum being called :o

i got it working with this code thanks to your generator

saved the below code in a file named last15.php

Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Example code</TITLE>
</HEAD>
<BODY>
<script type="text/javascript" src="http://forumdomain.com/external.php?forumids=<?php echo($fid); ?>&type=js"></script>

<b>Last 15 threads :</b>
<ul>
<script type="text/javascript">
<!--
for (i = 0; i < 15; i++)
{
 if (threads[i].title.length > 60)
 { threads[i].title = threads[i].title.substring(0,60) + '...'; }
 document.writeln("<li><a href=\"http://forumdomain.com/showthread.php?t=" + threads[i].threadid + "\">" + threads[i].title + "</a> (" + threads[i].poster + " : " + threads[i].threaddate + " : " + threads[i].threadtime + ") </li>");
}
//-->
</script>
</ul>


</BODY>
</HTML>

then used last15.php?fid=XX

where fid is the forumid i want to call

dede1 01-06-2004 09:24 PM

very nice :)

Bernd Glasstett 01-06-2004 10:44 PM

Quote:

Originally Posted by eva2000
nice script you got there :)

seems what ever is generated when used on a web site generates a javascript error in IE 6.0.2800.1106

Code:

  Error: 'threads[...].title' null or not an object
  Code: 0


Ok, this bug is confirmed. Problem will be: There is no way using the Javascript to verify, whether there are as much threads in this forum or not, because this would require a database-query. What would be possible is making such a query before the script generates the code. If there that much threads -> go on. If not, get the number of threads and use this as a value for maximum-threads.

BUT: This would not help, if after the creation of the JS-code, there would be less threads (through deletion) than priorly confirmed in the forum. So... we need to find a way to eliminate the JS-error, rather than making a workaround in the PHP-file. I might have an idea, but will look into it tomorrow err - today, as it is already 01:46 a.m. here in Germany ;)

Interesting: Mozilla doesn't have problems with the Javascript. Oh well... MSIE ... Nah, I don't say more :D

gldtn 01-07-2004 02:01 AM

Had no javascript errors here with Monzilla and neither with I.E. There is only one thing bugging me.. the delay to update the threads.. I get new threads in the forum but sometimes it don't even updates it for some reason.

Bernd Glasstett 01-07-2004 07:17 AM

This might be because ot the JS being cached. Adding the following code to your Header might help:

Code:

<meta NAME="revisit-after" CONTENT="0 days">
 <meta http-equiv="expires" content="0">
 <meta HTTP-EQUIV="Pragma" CONTENT="no-cache">


gldtn 01-07-2004 02:23 PM

+K for you, too bad Karma is not turned on in this forum :/. Its working flawless now, thanks to you..

Oh.. one more question, not sure if this is possible due to the limitation on the external.php, but is there a way to get the topics to update when there is a new reply to it.. rather than only when a new topic is posted?

Bernd Glasstett 01-07-2004 03:53 PM

At this moment this is not possible and would require hacking the external.php - but comes time, comes solution :D

Bernd Glasstett 01-07-2004 05:32 PM

Here we go: On our new developing system, my co-coder Ypsfanpage.de optimized the code, redrucing some clutter and got rid of the bug in the JS on MSIE. So here we go with version 1.0.2 :)

Work is in progress for the following features (which will then be version 1.0.3):
- Having some predefined styles at hand - for the ones who have problems coding ;)

Bernd Glasstett 01-07-2004 08:00 PM

Now, version 1.0.3 is online. We added three pre-defined styles - which you can change on composeexternal.php if you wish. The download is now bigger and containing previews of the pre-defined styles.

Work is in progress for the following feature (which will be in version 1.0.4):
- Adding the possibility to generate the code for a specific forum changing forumdisplay-template and adding a new point to the forum-tools popup-menu.

Bernd Glasstett 01-09-2004 07:48 AM

Latest installment: version 1.0.4, which offers direct support of forumdisplay and navbar-templates, giving you instructions how to integrate it in these templates. We had to change our template and the php-file a bit, so please redownload the package.

The next release will be a while away, as we are now working on the conversion of our big production-board. But the support of course continues and should there be any bugs, we will eliminate them of course :)

eva2000 01-10-2004 09:38 PM

for some reason i keep getting 'threads.. is undefinied' on first load of page but if i hit ctrl+F1 it loads the threads on external page ? i.e. at http://animeboards.com/showthread.php?t=55535 the 3 example sites i used all don't show threads on first load only on refresh

eva2000 01-11-2004 06:20 AM

Quote:

Originally Posted by eva2000
for some reason i keep getting 'threads.. is undefinied' on first load of page but if i hit ctrl+F1 it loads the threads on external page ? i.e. at http://animeboards.com/showthread.php?t=55535 the 3 example sites i used all don't show threads on first load only on refresh

seems it's my browser as others can see if fine the first time ???

also would it be possible to make composexternal.php an admin only viewing page/function

Bernd Glasstett 01-11-2004 08:49 AM

Quote:

Originally Posted by eva2000
for some reason i keep getting 'threads.. is undefinied' on first load of page but if i hit ctrl+F1 it loads the threads on external page ? i.e. at http://animeboards.com/showthread.php?t=55535 the 3 example sites i used all don't show threads on first load only on refresh

I checked the first site. It's loading perfectly. I checked the second site. It doesn't load. The third one loads too. But one thing is not that good: Placing the following described part of the code in the <head>-Tag. It might not get loaded right. Place it in the <body>-Tag.

HTML Code:

<script type="text/javascript" src="http://animeboards.com/external.php?forumids=3&type=js">
Try it, if it still fails to load, I will take a closer look into the JS-script. But it should work...

Bernd Glasstett 01-11-2004 08:53 AM

Quote:

Originally Posted by eva2000
also would it be possible to make composexternal.php an admin only viewing page/function

We don't plan this to do. It's designed to be used by the users in order to allow them to make the syndication as easy as possible.

If you would like to use it on your own, without adding it to the templates, then add a bookmark or favorite to your browser ;) You don't have to add a link to composeexternal.php to your site. :D

eva2000 01-11-2004 01:14 PM

Quote:

Originally Posted by Bernd Glasstett
We don't plan this to do. It's designed to be used by the users in order to allow them to make the syndication as easy as possible.

If you would like to use it on your own, without adding it to the templates, then add a bookmark or favorite to your browser ;) You don't have to add a link to composeexternal.php to your site. :D

yeah i renamed and edited the admincp/index to include your script inside

i found via website code validator some of the close tags in the javascript aren't escaped... but fixing that doesn't solve my problem - it seems to be just me as others can see it

Bernd Glasstett 01-11-2004 05:03 PM

Have you tried to put the code into the body-tag, as I said?

wacnstac 01-12-2004 12:11 AM

Quote:

Step 1:
Insert the phrases using the XML-files. There are phrases for some languages. You can of course translate them to other languages using the phrase-system. If you do so, please send me the XML-files for these translations. I will add them to this ZIP. Right now there are:
Can you explain in more detail how to do this?

Erwin 01-12-2004 12:17 AM

This is a very cool hack. :) Well done!

eva2000 01-12-2004 01:12 AM

Quote:

Originally Posted by Bernd Glasstett
Have you tried to put the code into the body-tag, as I said?

tried both ways same result for me only not seeing threads on first click with javascript error 'threads is undefined' but other members on my site see it fine

Bernd Glasstett 01-12-2004 07:02 AM

Quote:

Originally Posted by wacnstac
Can you explain in more detail how to do this?

What do you need to be explained? The insertion, the translation of the phrases, or how to export them? Or all of them ;) Just want to be sure to explain the right thing :)

Bernd Glasstett 01-12-2004 07:20 AM

Quote:

Originally Posted by eva2000
tried both ways same result for me only not seeing threads on first click with javascript error 'threads is undefined' but other members on my site see it fine

Strange thing. I tried alle examples again. This time the first two are working fine, the third produces the error. Then I tried again. This time the second one came up with the error.

So I looked into the code and found the first big problem: The code is never the same. It seems, that you have used different versions of the script. Can you please do the following:

- Use the latest version of the script on all three sites.
- And add all code produced by the script only to the body.

When you have done so, please tell it to me, and I will test all three of them again. And if the error still occurs - it doesn't do it on our testsite with the latest script - then I will try to find the error. :)

wacnstac 01-12-2004 04:03 PM

Quote:

What do you need to be explained? The insertion, the translation of the phrases, or how to export them? Or all of them Just want to be sure to explain the right thing
The whole process in general on how to add phrases. I only see a menu option to upload/download a whole language in the control panel.

eva2000 01-13-2004 12:36 AM

Quote:

Originally Posted by Bernd Glasstett
Strange thing. I tried alle examples again. This time the first two are working fine, the third produces the error. Then I tried again. This time the second one came up with the error.

So I looked into the code and found the first big problem: The code is never the same. It seems, that you have used different versions of the script. Can you please do the following:

- Use the latest version of the script on all three sites.
- And add all code produced by the script only to the body.

When you have done so, please tell it to me, and I will test all three of them again. And if the error still occurs - it doesn't do it on our testsite with the latest script - then I will try to find the error. :)

done but really anime_news.php is the only one i care about right now i have the following in that file

Code:

<?php
if ( is_numeric($fid) ) {
$fid = $fid;
} else {
$fid = 224;
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<meta NAME="revisit-after" CONTENT="0 days">
<meta http-equiv="expires" content="0">
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<TITLE>Anime News - Animeboards.com</TITLE>
</HEAD>
<BODY>
<p>
This is a example of some javascript code you can add to your own anime web site to display anime news reported by Animeboards.com. Display, font, color etc are all customisable to fit into your web site's design and color scheme.
</p>
<script type="text/javascript" src="http://animeboards.com/external.php?type=js&amp;forumids=<?php echo($fid); ?>"></script>
<b>Last 15 Threads :</b><br><table width="60%">
<script type="text/javascript">
<!--
 var max = 15;
 if(threads.length < max)
 max = threads.length;
 for(i = 0; i < max; i++)
  {
  if (threads[i].title.length > 50)
    { threads[i].title = threads[i].title.substring(0, 50) + '...'; }
  document.writeln("<tr><td><a href=\"http://animeboards.com/showthread.php?t=" + threads[i].threadid + "\">" + threads[i].title + "<\/a>  <\/td><td><small> : (by " + threads[i].poster + ")<\/small><\/td><td> : <small>" + threads[i].threaddate + "<\/small><\/td><\/tr>");
  }
//-->
</script>
</table>


</BODY>
</HTML>


eva2000 01-13-2004 12:39 AM

one thing though when i uploaded your stock composer on my site the generated code made external.php's link as

www.animeboards.net/external.php

since animeboards.com is a domain alias for animeboards.net

daFish 01-13-2004 07:45 AM

Hi Bernd,

great hack. I have installed this on my testboard and when i generate the code for one specific forum, the preview alawys shows me the latest 5 threads from the whole forum.
The generated external.php link is ok (external.php?forumids=44&type=js) i think.

Is there a way to solve this?

Bernd Glasstett 01-13-2004 07:58 AM

Quote:

Originally Posted by eva2000
one thing though when i uploaded your stock composer on my site the generated code made external.php's link as

www.animeboards.net/external.php

since animeboards.com is a domain alias for animeboards.net

That is something, which we cannot resolve generally. We use the following code to generate the address:

PHP Code:

 $server2_url $_SERVER['REQUEST_URI'];
 
$folder_url str_replace("/composeexternal.php?do=composecode"""$server2_url);
 
$server_url "[url="http://&quot;.$_SERVER"]http://".$_SERVER[/url]['SERVER_NAME'];
 
$forum_url $server_url $folder_url

It takes the request_uri, which is the whole URL, including the /composeexternal-Part and without the http://www-Part. Than it takes the http://-Part and combines the two. What you can do is, search in our script for:

PHP Code:

 $server_url "[url="http://&quot;.$_server['server_name'/"]http://".$_SERVER['SERVER_NAME'[/url]]; 

and replace it with:

PHP Code:

 $server_url "[url="http://&quot;.$_server['server_name'/"]http://animeboards.com[/url]"; 

We wanted it to program as universal as possible, but domain-aliases are almost impossible to get dynamically. The variable above always gets the main domain.

Bernd Glasstett 01-13-2004 08:00 AM

Quote:

Originally Posted by daFish
Hi Bernd,

great hack. I have installed this on my testboard and when i generate the code for one specific forum, the preview alawys shows me the latest 5 threads from the whole forum.
The generated external.php link is ok (external.php?forumids=44&type=js) i think.

Is there a way to solve this?

Hacking the external.php that would be. We noticed the bug. It is located in the external.php. The strange thing is: it doesn't appear always. As it also bugs us a little, we are currently looking for a solution - always thinking about: What if Jelsoft gets rid of the bug in a future version? ;)

Bernd Glasstett 01-13-2004 08:12 AM

Quote:

Originally Posted by eva2000
done but really anime_news.php is the only one i care about right now i have the following in that file
Code:

<script type="text/javascript" src="http://animeboards.com/external.php?type=js&amp;forumids=<?php echo($fid); ?>"></script>

ok, first things first: Please use

Code:

<script type="text/javascript" src=http://animeboards.com/external.php?forumids=<?php echo $fid; ?>&type=js></script>
Instead of the above code. So that it uses the same code, as we are currently using on our development-board ;) We noticed that while &amp; should work out it sometimes doesn't. That's why we use & again. Let's see if the problem is solved with this :)

daFish 01-13-2004 08:13 AM

Quote:

Originally Posted by Bernd Glasstett
Hacking the external.php that would be. We noticed the bug. It is located in the external.php. The strange thing is: it doesn't appear always. As it also bugs us a little, we are currently looking for a solution - always thinking about: What if Jelsoft gets rid of the bug in a future version? ;)

Thanks for clearing this up. :)
Let's hope they'll fix this bug in RC3/Gold version.

daFish 01-24-2004 11:47 AM

Hey Bernd,

i finally got it working after i upgraded my live board, but after the code insert, the XHTML compatibility was broken. Is the code XHTML-valid?

Bernd Glasstett 02-05-2004 02:46 PM

Hm for xhtml-compatibility the code has to be with low-characters. A far as I can see, everything is in that way, but I will take look asap. :)


All times are GMT. The time now is 03:18 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02175 seconds
  • Memory Usage 1,900KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (13)bbcode_code_printable
  • (1)bbcode_html_printable
  • (3)bbcode_php_printable
  • (16)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete