Closed GoogleCodeExporter closed 9 years ago
Hi,
Can you please edit the class to print out the value of
$this->includesRelativePath
Just modify the class and edit at
public function elementsToString($includeTableTags = true)
{
and put under it
die($this->includesRelativePath);
And post the output here, thanks!
Original comment by moncojhr@gmail.com
on 12 Apr 2010 at 2:39
/community2/components/com_agenda/php-form-builder-class/includes
'community2' is the root of my joomla installation. 'com_agenda' is the
component i
am building. the full path is something like /home/tom/HTML/community2/...
Original comment by tom.bere...@gmail.com
on 12 Apr 2010 at 2:56
Hi thanks, for your report, this is caused because you are using a absolute path
instead of a relative path.
Perhaps the should be changed to includesPath and have a function to check if
it is a
relative path or a absolute path to make the decision if the path is set
incorrectly.
For now you can comment out the two lines in the class while we fix it:
if(empty($this->includesRelativePath) ||
!file_exists($this->includesRelativePath) ||
!is_dir($this->includesRelativePath))
$str .= "\n\t" . '<script type="text/javascript">alert("php-form-builder-class
Configuration Error: Invalid includes Directory Path\n\nUse the
includesRelativePath
form attribute to identify the location of the inclues directory included
within the
php-form-builder-class folder.");</script>';
to stop the warning.
Original comment by moncojhr@gmail.com
on 12 Apr 2010 at 3:00
Here is a change to the logic so it checks absolute paths and relative paths:
if(empty($this->includesRelativePath) || !is_dir($this->includesRelativePath)
&& (!file_exists($this->includesRelativePath) &&
!file_exists($_SERVER['DOCUMENT_ROOT'].$this->includesRelativePath) ))
$str .= "\n\t" . '<script type="text/javascript">alert("php-form-builder-class
Configuration Error: Invalid includes Directory Path\n\nUse the
includesRelativePath
form attribute to identify the location of the inclues directory included
within the
php-form-builder-class folder.");</script>';
Original comment by moncojhr@gmail.com
on 12 Apr 2010 at 3:28
Original comment by moncojhr@gmail.com
on 12 Apr 2010 at 5:15
Tom,
Thanks for your support of this project.
The includes directory contains both javascript and php components that are
used by the class. An absolute
path in a javascript environment differs from that in a php environment because
the initial slash is interpreted
differently. In javascript, the slash begins at the document root while in php
the slash represents the root
directory of the web server. Because of this difference, a relative path is
used to identify the includes
directory. This way, both javascript and php and share the same path.
Just because the javascript alert error message is suppressed doesn't
necessarily mean that the includes
directory is correctly identified for both javascript and php.
- Andrew
Original comment by ajporterfield@gmail.com
on 12 Apr 2010 at 1:55
Thanks Andrew.
you are right, i've changed to a relative address. but the real problem is
still there.
here's the relative address that works (ie: loads the javascripts for TinyMCE,
etc.)
incudesRelativePath" => "components/com_agenda/php-form-builder-class/includes"
but it doesn't make your safety-check happy (ie: it pops up the message "invalid
Includes Directory Path"). the relative path that makes the error go away is
simply:
incudesRelativePath" => "includes"
but that doesn't load the javascripts (ie: doesn't work).
i commented out the error message.
Original comment by tom.bere...@gmail.com
on 12 Apr 2010 at 3:21
Should have thought of that...
you can have an absolute path and it will work perfectly fine... except for
when the
class does
require_once($form->includesRelativePath . "/recaptchalib.php");
So you would need to change that... you could check if the path starts with /
and if
it does slap on $_SERVER['DOCUMENT_ROOT'] ...
It becomes a problem specifying the relative path if you are messing around with
mod_rewrite or including forms from random directories.
So I think its necassary to get absolute paths working.
Andrew, do you want me to go in and make all the php side stuff work with
absolute
paths + use my patch for the javascript error check?
Cheers,
moncojhr
Original comment by moncojhr@gmail.com
on 12 Apr 2010 at 5:30
moncojhr,
I think a good approach would be to...
1. Change the includesRelativePath attribute to includesPath to remove any
confusion on if the path is relative
or absolute.
2. Allow both relative and absolute paths to be handled correctly. If the
includesPath attribute does not begin
with a slash, it is handled as it is currently in version 1.0.2. If there is
an initial slash in the includesPath
attribute, then we need to determine if the user is beginning the path from the
server root or document root.
This could turn out to be easier said than done, but it's worth a shot. One
way to implement would be to put
all of these conditional checks at the start of the elementToString() function,
which is where the current js alert
in question is. Then two private form attributes (jsIncludesPath and
phpIncludesPath) could be set for future
use in the class. This approach eliminates the need to check the path multiple
times throughout the form
building process.
3. Leave the default value as it is currently in version 1.0.2 which
identifies the path as relative. For most
developers using this class, the default value will prevent them from having to
define this attribute when
building forms. If we switch the default value to assume an absolute path, my
fear is that more people will
have to include with attribute in each of the forms they build.
Original comment by ajporterfield@gmail.com
on 12 Apr 2010 at 8:42
Tom,
Unfortunately, I do not have experience using Jumla! which makes it a challenge
for me to provide you with setup
advice. Adding support for absolute paths may or may not remedy your issue.
One thing you may try is to create
a symbolic link of the php-form-builder-class directory to satisfy the path
discrepancies.
- Andrew
Original comment by ajporterfield@gmail.com
on 12 Apr 2010 at 8:49
Hi Tom, in the SVN version i've added a patch so you can use absolute and
relative
paths now.
Can you please get the SVN version and test it?
It should work when you use "includesPath" => JURI::base( true )
."/components/com_agenda/php-form-builder-class/includes"
Note that the variable name includesRelativePath is deprecated in favour of
includesPath now.
Original comment by moncojhr@gmail.com
on 14 Apr 2010 at 5:02
includesPath worked like a charm. :)
includesRelativePath no longer gives an error when i give it the
/component/com_agenda/... string, either in absolute or relative (the old
behavior
was that it worked but gave an erroneous error).
includesRelativePath behaves the same as before when i give it 'includes' (ie:
doesn't complain but doesn't work).
it's all good.
thank you.
Original comment by tom.bere...@gmail.com
on 14 Apr 2010 at 1:33
Hi, just to let you know includesPath works with absolute and relative paths,
but in
your circumstance you dont know where the form is going to load so you cant use
a
relative path.
includesRelativePath is just set to includesPath for the moment so it wont break
anyone's form and will eventually be removed.
Thanks for testing!
Original comment by moncojhr@gmail.com
on 15 Apr 2010 at 2:58
hi , i just uploaded the pfbc and the same problem is being display throw fire
bug in "CKEDITOR is not defined" what should i do :(
Original comment by josianei...@gmail.com
on 27 Jan 2012 at 9:53
Original issue reported on code.google.com by
tom.bere...@gmail.com
on 12 Apr 2010 at 2:13