vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 2.x Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=4)
-   -   Template Control Panel for 2.0 (https://vborg.vbsupport.ru/showthread.php?t=8752)

Kier 02-14-2001 10:00 PM

UPDATED 28-02-2001

http://kier.3dfrontier.com/images/ktemplate.gif

This hack for vB2.0 Beta 2 will allow you to edit a single template set, or all of them at the same time, is dramatically less bandwidth-hungry than the current system, and allows quick searches through the templates by clicking in the <select> element and pressing a key; for example, if you want to find the 'header' template, just click in the select and press 'h' on your keyboard...

To install, follow the following instructions:

First, open the file forums/admin/adminfunctions.php and find the line
Code:

OPTION  {COLOR: #51485F; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 10px}
and replace it with this:
Code:

OPTION    {FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 10px}
This will allow the text of the <select> elements to be green or red in the templates page...

Next, open the file forums/admin/template.php and find the block of code that looks like this:
PHP Code:

// ###################### Start Modify #######################
if ($action=="modify") {

(
lots of code in here)

}

// ###################### Start search ####################### 

and comment out the code between the { } like this:
PHP Code:

// ###################### Start Modify #######################
if ($action=="modify") {

/*
(lots of code in here)
*/
}

// ###################### Start search ####################### 

Next, just after the first open brace, add a line so that the final code looks like this:
PHP Code:

// ###################### Start Modify #######################
if ($action=="modify") {
include 
"./ktemplate.php";
/*
(lots of code in here)
*/
}

// ###################### Start search ####################### 

Next, find the section of text within the template.php code that looks like this:
PHP Code:

$DB_site->query("INSERT INTO template (templateid,templatesetid,title,template) VALUES (NULL,'$templatesetid','".addslashes("$title")."','".addslashes("$template")."')"); 

and replace it with this:
PHP Code:

$result $DB_site->query("INSERT INTO template (templateid,templatesetid,title,template) VALUES (NULL,'$templatesetid','".addslashes("$title")."','".addslashes("$template")."')");
$templateid $DB_site->insert_id($result); 

Finally, upload the attached file to your forums/admin/ folder, rename it to ktemplate.php and you're all ready to go.

19th Feb 2001 Additions:
The hack will now auto-select the last template you edited when you return to the list from submitting an edit, or adding a new custom template.
Cookie functions can be disabled for users who do not use output_buffering
Lots of minor bug fixes (this one actually works ;))
Please note: if you do not have output_buffering=On in your php.ini, you should comment out the '$usecookies' line at the top of ktemplate.php
28th Feb 2001 Additions:
I have now restored the original template.php's 'view original' functionality through the use of a little javascript. I have tested the script with browsers going back to Nutscrape 4.6, and they all work fine.
Just as an added extra, the hack now tells you how many global and custom templates you have...
28th Feb 2001 Additions: (more ;))
I just modified the code a little so that you can double-click in the menus for a default event:
Double-clicking a global template name will activate the 'add' function, giving you the option to create a customized template.
Double-clicking a customized/added template will open the edit page for the selected template.
Right-clicking a customized template will display the original template of that name. (Right-click functionality is IE only.)

02-15-2001 01:41 PM

Very nice...thank you so much!

02-15-2001 02:03 PM

Excellent hack!

--JAmes

02-15-2001 02:16 PM

Had to post another thank you for making my job easier....Excellent Hack!

02-15-2001 02:48 PM

A slight enhancement -

This is a new version of the file ktemplate.php, which now gives you the option to specify the size of the <select> items - just open up the code and find the lines at the top of the code that read:
PHP Code:

$global_max_size 10;
$custom_max_size 15

Edit these numbers to taste - their meanings should be fairly self-explanitory. The defaults of 10,15 are what I have found to be most usable, but everything depends on the display resolution you are running.

Note: if you set the value to 1, the select menu will become a pop-up menu, rather than a list.

02-16-2001 07:40 PM

great hack man!
thanks alot :)

02-17-2001 03:51 AM

This is a great hack kier. It certainly speeds up template editing!

Now... if only you could select a default style/template set so that whenever you come into the edit screen it is selected. I've lost count how many times I've overwritten the default one by mistake! :eek:

We'll just never be satisfied. :)

By the way... I'd like to say thanks to the Jelsoft developers/designers of this template concept. It truly is the dogs bollox! There is nothing you can't change with this system. (although my wife isn't too happy with the amount of time I'm spending playing with it) :p

02-17-2001 04:40 AM

Great script! This makes template editing a lot easier, and now when you just edited a template, went to your forum, realized you didn't get it perfect and need to go back the that template you only go to the custom, and not sort through the whole list. Nice job.

Now i'm just wondering why i have 12 header templates.

02-17-2001 06:36 PM

Quote:

Originally posted by fastforward
Now... if only you could select a default style/template set so that whenever you come into the edit screen it is selected. I've lost count how many times I've overwritten the default one by mistake! :eek:
Coming right up...

02-17-2001 07:01 PM

Okay, the hack will now remember which template set you were editing, until you click the [Edit a different template set] link.

Please note that this version of the script requires on of two things to be active:

You must either have GZip encoding turned on for your forum, or you must have
Code:

output_buffering = On;
set in your php.ini configuration file. output_buffering is PHP4 only. Without one of these two items, the cookie-setting mechanism will fail, resulting in an error message.

Once the final version of vB2 is out, I will make the necessary modifications to the script to remove these requirements, but for now, it would require too much messing about with the code to make it worth my while.

02-17-2001 07:12 PM

You da man! :D

02-17-2001 08:09 PM

SUPER :)

I like to see it in Beta2 :)

Thanks..... ;)


cya

02-18-2001 12:02 AM

looks fab great improvement and much easier for people like me..i get this spat out at the top of the page though when i enter the templates in vbb admin
Warning: Cannot add header information - headers already sent by (output started at /home/doasquad/public_html/forums/admin/adminfunctions.php:17) in /home/doasquad/public_html/forums/admin/ktemplate.php on line 28
?? any ideas ?

02-18-2001 12:25 AM

Quote:

Originally posted by pestilence
looks fab great improvement and much easier for people like me..i get this spat out at the top of the page though when i enter the templates in vbb admin
Warning: Cannot add header information - headers already sent by (output started at /home/doasquad/public_html/forums/admin/adminfunctions.php:17) in /home/doasquad/public_html/forums/admin/ktemplate.php on line 28
?? any ideas ?

Like I said above, if you don't use gzip compression for your boards, or you don't have output_buffering enabled in your php.ini, then the cookie function will cause the error you are getting.

I will post a new version with enhanced functionality in a few minutes, and a quick fix for this error.

02-18-2001 03:13 AM

I've updated the hack and posted new instructions at the top of this page.

02-18-2001 04:10 AM

Now if only microsoft was this efficient ..ahhh well i can dream...
kewl hack ..btw

02-18-2001 07:10 AM

can we see a screen shot?
pleasssssssssssssssssss?

02-18-2001 07:55 AM

<a href="http://www.vbulletin.com/forum/showthread.php?s=&threadid=8484" target="_blank">http://www.vbulletin.com/forum/showt...&threadid=8484</a>

02-19-2001 05:09 AM

Quote:

Originally posted by gekko
Now i'm just wondering why i have 12 header templates.
Did I mention...YEAH!! Why?? I have the same thing and no clue why???

02-19-2001 05:11 AM

Quote:

Originally posted by Kier


Like I said above, if you don't use gzip compression for your boards, or you don't have output_buffering enabled in your php.ini, then the cookie function will cause the error you are getting.

I will post a new version with enhanced functionality in a few minutes, and a quick fix for this error.

I am getting this error after your latest update...(thanks for the hack btw, looks like I'll like it)...

Can you explain the meaning of the error, why it happens? Just so we can learn php while we're at it...

02-19-2001 05:54 AM

Quote:

Originally posted by dwh
Can you explain the meaning of the error, why it happens? Just so we can learn php while we're at it...
Sure.

The script stores the $templatesetid of the template set you are working on in a cookie called $bbadmin_templatesetid.

Cookies are set through the PHP function setcookie(..), which sets the cookie by sending an HTTP header to your browser (like any other cookie-setting mechanism).

Here comes the problem: HTTP headers have to be sent to the browser before any display output has been sent to the browser. My cookie-setting system doesn't abide by that rule at the moment, as I tried to make as few modifications to the original template.php as possible, in order to make installation as easy as possible for all you guys and galls.

Therefore, when you run the script, the setcookie(..) function is actually called after PHP has output stuff to the browser, causing it to fail...

u n l e s s . . . ;)

you have output_buffering enabled in your php.ini file. This has the effect of preventing any output being sent to the browser until the PHP script has completely finished its execution. Therefore, the setcookie function is still valid, even though it's being called at an illegal point in the script. Using vB2's GZip compression system will have the same effect.

If you do not use output_buffering or gzip compression, or if you are using PHP3, then you should comment out the line in ktemplate.php that says $usecookies = "yes";. This will prevent the setcookie(..) function from being called.

Does that make sense to you?

02-19-2001 06:01 AM

Yes, thank you so much!

But I thot I set my gzip stuff to on in the options? Gotta double check that but I'm pretty sure...

02-19-2001 06:17 AM

Quote:

Originally posted by dwh
I thot I set my gzip stuff to on in the options? Gotta double check that but I'm pretty sure...
To be honest, I haven't looked that closely at vBulletin's implementation of gzip compression... most implementations employ some form of output buffering, which would allow the cookie to be set, but if the control panel doesn't use the compression, or if vB's gzipping doesn't buffer the output, then setting output_buffering = On in php.ini is going to be the only way to allow the cookie to be set.

Once vB2 goes gold, I will revisit the hack and recode it so that the cookie can be set on any system.

02-19-2001 01:41 PM

You DO have to set output_buffering on in the php.ini. I tried just setting the vB gzip and the error was still apparent.

Works great with output buffering on though.

02-22-2001 04:33 PM

I installed this have into v2.0 and it works fine except for one error that appears at the top of each page. It is as follows:

Oops, php3_SetCookie called after header has been sent in ../ktemplate.php on line 46

What does this mean? How can I fix it?
I do have GZip enabled with a level of "1" compression.

02-28-2001 03:02 AM

very nice hack Keir, however I am missing two options from the original -

1) revert back to original
2) view original

The second in particualr was very helpful, when I screwed up something - or thought I did - and wanted to compare my edited template to the original.

02-28-2001 03:16 AM

Quote:

1) revert back to original
This functionality is still there, just click the 'remove' button. It does the same thing as the original 'revert to original' hyperlink.
Quote:

2) view original
Yes, this function is currently not available. If any javascript gurus can tell me how to read the yyy part from this: <option value=xxx>yyy</option> then I can put the functionality back in very easily... but I don't know how to pull out that info at the moment. I'm sure it's possible though.

02-28-2001 03:25 AM

If they click the view default button, run an extra query to get the name of the template known by its templateid and then just grab that template where templatesetid=-1.

02-28-2001 03:33 AM

Cheers Ed, but I've just found a way to do it without an extra query :)

Will post an updated hack in a short while once i've integrated it into the existing code :D

02-28-2001 03:58 AM

Updated version now available in the first post of the thread.

02-28-2001 04:06 AM

absolutely beautiful, thank you Kier!

02-28-2001 11:43 AM

does this work for beta2?

02-28-2001 11:58 AM

Yes.

02-28-2001 12:10 PM

I had to be sleeping I missed this one. :D

What a hack! Thanks.

02-28-2001 12:26 PM

Ok, I got it working but for some reason I get a parse error in template.php3 (had to rename to .php3 and edit all links in ktemplate to relfect this).

Parse error: parse error in template.php3 on line 487

Line 487 reads:
--------------
?>
--------------

Any ideas?

BTW, I also got an setcookie error, so I turned that option off in the ktemplate file. Is it ok to do that?

rgds,

02-28-2001 02:26 PM

Not sure about your parse error... are you sure you commented out all the right code?

As for the cookie thing, yes, just set the $usecookies variable to "no".

02-28-2001 06:44 PM

This hack makes it so much easier to edit the templates. Thanks a million Kier :)

02-28-2001 10:03 PM

I get lost here. I don't understand why you put ..... instead of the whole bit of code to look for and replace. :D

can you help me out?


Next, find the section of text within the template.php code that looks like this:
PHP Code:

// ###################### Start insert #######################
if ($action=="insert") {

  if (!
$preexists=$DB_site->query_first("SELECT templateid .....
    
$DB_site->query("INSERT INTO template (templateid,tem ...... 

and replace it with this:
PHP Code:

// ###################### Start insert #######################
if ($action=="insert") {

  if (!
$preexists=$DB_site->query_first("SELECT templateid ......
    
$result = $DB_site->query("INSERT INTO template ......
        
$templateid $DB_site->insert_id($result); 


02-28-2001 10:51 PM

But here's what you do.
Find this:
Code:

$DB_site->query("INSERT INTO template (templateid,templatesetid,title,template) VALUES (NULL,'$templatesetid','".addslashes("$title")."','".addslashes("$template")."')");
and replace it with this:
Code:

$result = $DB_site->query("INSERT INTO template (templateid,templatesetid,title,template) VALUES (NULL,'$templatesetid','".addslashes("$title")."','".addslashes("$template")."')");
Then, right below the line that begins $result, add this:
Code:

$templateid = $DB_site->insert_id($result);
(this should go between the $result line and the } else { line)

Hope this helps :)

03-01-2001 10:49 AM

I really like the rightclick view template function.

But I find it more useful if the original template would open in a new window.

To achieve this do the following

In ktemplate.php search for:
Code:

oncontextmenu=\"window.location=('template.php?s=$session[sessionhash]&action=view&title='+this.options[this.selectedIndex].text)\">
and replace it with
Code:

oncontextmenu=\"javascript:window.open('template.php?s=$session[sessionhash]&action=view&title='+this.options[this.selectedIndex].text,'_popit','resizeable=yes,toolbar=no,location=no,menubar=no,scrollbars=no,status=no,width=460, height=320')\">
That's it!


All times are GMT. The time now is 11:24 PM.

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.01978 seconds
  • Memory Usage 1,850KB
  • 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
  • (8)bbcode_code_printable
  • (8)bbcode_php_printable
  • (8)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