Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#46 2012-08-21 17:16:52

mrdale
Member
From: Walla Walla
Registered: 2004-11-19
Posts: 2,215
Website

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

I have a section that outputs an ical file. Right now it just wants to save the file with the section name; “ical”. What I’d like it to do is save the file with the name “calendar.ics”.

Here’s my code.

<txp:aks_header file="1" name="Content-Type" value="text/calendar" strip="0" gzip="0" nodebug="0" />

I hacked the plugin to add the line 'ics' => 'text/calendar' in $ext=array(

Any ideas people?

Last edited by mrdale (2012-08-21 17:24:47)

Offline

#47 2012-08-21 19:18:37

Gocom
Developer Emeritus
From: Helsinki, Finland
Registered: 2006-07-14
Posts: 4,533
Website

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

mrdale wrote:

I hacked the plugin to add the line ‘ics’ => ‘text/calendar’ in $ext=array(

I don’t think such hack is doing much of anything. Since you are already setting the content-type header in the tag itself, that addition will not add anything new to the game, and the extension to header mapping is deployed when the page’s URL ends with an extension.

While undocumented, it seems that the extension mapping only works for individual articles. The plugin uses article’s URL title field to get the requested locations “file extension”. Which is all fine, but this URL title is only available for articles. I’m not entirely sure if that is intentional behavior. I can say the regular expression that is used for picking the extension isn’t, and doesn’t seem right. The plugin would be better off with pathinfo which is also offers significantly better performance compared to a regular expression.

Any ideas people?

Most browsers use as or suggest as the file name either:

  • Requested resource’s name which in your case is ical (the name of the section).
  • Content-Disposition HTTP header’s filename field.

To offer a calendar.ics as the “file’s” name, set a Content-Disposition header’s filename field. You should be able to do that with aks_header as you did with the Content-type header. It’s just a header where the rest of them:

<txp:aks_header name="Content-Disposition" value="attachment; filename=""calendar.ics""" />

Note the quotes and the value escaping. Looks funky, but it’s intentional.

Alternatively you can set such headers and generate those files using other tools. Plain PHP is always an option, these thing are not impressively complicated and sending HTTP headers requires just a line of code. Since the code is simple it can be wrapped in rah_function too, offering very much XML like presentation. If you are already using rah_external_output’s, you could also use it’s form partial (snippet) to generate and deliver the iCal file:

; Content-Type: text/calendar
; Content-Disposition: attachment; filename="calendar.ics"

<txp:hide>
	Any markup here that generates the iCal's calender file
</txp:hide>

Things are simple in raw PHP too. The following offers the same functionality as these plugins when used in the page template:

<txp:php>
	header('Content-type: text/calendar');
	header('Content-Disposition: attachment; filename="calendar.ics"');
</txp:php>

The above can be wrapped in a rah_function:

<txp:rah_function call="header" header="Content-type: text/calendar" />
<txp:rah_function call="header" header="Content-Disposition: attachment; filename=""calendar.ics""" />

Last edited by Gocom (2012-08-21 19:19:17)

Offline

#48 2012-08-21 20:02:13

mrdale
Member
From: Walla Walla
Registered: 2004-11-19
Posts: 2,215
Website

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

Thanks… does that mean I should do that in addition to my original call?

nevermind. I just used the php snippet.

Last edited by mrdale (2012-08-21 20:29:42)

Offline

#49 2012-10-24 04:21:33

nardo
Member
From: tuvalahiti
Registered: 2004-04-22
Posts: 743

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

How would you set “charset=UTF-8”?

Offline

#50 2012-10-25 09:18:13

makss
Plugin Author
From: Ukraine
Registered: 2008-10-21
Posts: 355

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

nardo wrote:

How would you set “charset=UTF-8”?

<txp:aks_header name="Content-Type" value="text/html; charset=utf-8" />


aks_cron : Cron inside Textpattern | aks_article : extended article_custom tag
aks_cache : cache for TxP | aks_dragdrop : Drag&Drop categories (article, link, image, file)

Offline

#51 2012-10-25 09:36:59

nardo
Member
From: tuvalahiti
Registered: 2004-04-22
Posts: 743

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

Too easy. Thank you.

Offline

#52 2016-06-22 12:37:36

Destry
Member
From: Haut-Rhin
Registered: 2004-08-04
Posts: 4,912
Website

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

  • Txp 4.6 beta
  • mysql 5.7.13
  • php 7.0.7

This error appears…

Tag error: <txp:aks_header strip="0" gzip="1" /> ->  Textpattern Notice: unregistered_tag while parsing form tmpl-open on page articles
textpattern/lib/txplib_publish.php:518 trigger_error()
textpattern/lib/txplib_publish.php:463 processTags()
textpattern/lib/txplib_misc.php:4330 parse()
textpattern/publish/taghandlers.php:487 parse_form()
output_form()
textpattern/vendors/Textpattern/Tag/Registry.php:83 call_user_func()
textpattern/lib/txplib_publish.php:514 Textpattern\Tag\Registry->process()
textpattern/lib/txplib_publish.php:463 processTags()
textpattern/lib/txplib_misc.php:4391 parse()
textpattern/publish.php:559 parse_page()

Cuttlefish.

Offline

#53 2016-06-22 15:24:25

michaelkpate
Moderator
From: Avon Park, FL
Registered: 2004-02-24
Posts: 1,379
Website GitHub Mastodon

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

Adding this to the top should clear at least some of that up.

// TXP 4.6 tag registration
if (class_exists('\Textpattern\Tag\Registry')) {
Txp::get('\Textpattern\Tag\Registry')
->register('aks_header')
;
}

Offline

#54 2016-06-22 15:59:39

Destry
Member
From: Haut-Rhin
Registered: 2004-08-04
Posts: 4,912
Website

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

Thanks, for looking out, Michael!

I’ve decided to axe it entirely. 4.6 brings spring cleaning. ;)

Offline

#55 2016-07-02 14:00:28

makss
Plugin Author
From: Ukraine
Registered: 2008-10-21
Posts: 355

Re: aks_header : Compress your pages on the fly. Strip white spaces + gzip

michaelkpate wrote #299938:

Adding this to the top should clear at least some of that up.

Thanks, fixed.


aks_cron : Cron inside Textpattern | aks_article : extended article_custom tag
aks_cache : cache for TxP | aks_dragdrop : Drag&Drop categories (article, link, image, file)

Offline

Board footer

Powered by FluxBB