mirror of
https://github.com/gnustep/libs-gsweb.git
synced 2025-02-19 10:01:05 +00:00
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd * GSWExtensions/GNUmakefile * GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd * GSWExtensions/GSWExceptionPage.gswc/GSWExceptionPage.gswd use exclamation.png. exclamation.svg is not displayed inline in mozilla due to a bug in mozilla. * GSWExtensions/WebServerResources/exclamation.png * GSWExtensions/WebServerResources/exclamation.svg new file * GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html * GSWExtensions/GSWExceptionPage.gswc/GSWExceptionPage.html better web design * GSWeb/GSWApplication.m -path get path from _resourceManager _resetCache do not call _clearCache, maybe we should trash the _componentDefinitionCache? _finishInitializingSession: make empty, still seems to work +_applicationClass don not use _applicationGSWBundle * GSWeb/GSWResourceManager.h * GSWeb/GSWResourceManager.m major redesign with WO 4.5 docs in mind. * GSWeb/GSWImageButton.m refactor resourceManager code * GSWeb/GSWeb.h remove GSWBundle class * Testing/DynamicElements added Image test. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@30806 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
c5b731b3ca
commit
39c130d0f5
40 changed files with 1306 additions and 3053 deletions
33
ChangeLog
33
ChangeLog
|
@ -1,3 +1,36 @@
|
||||||
|
2010-06-21 David Wetzel <dave@turbocat.de>
|
||||||
|
* GSWExtensions/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.gswd
|
||||||
|
* GSWExtensions/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.gswd
|
||||||
|
* GSWExtensions/GNUmakefile
|
||||||
|
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.gswd
|
||||||
|
* GSWExtensions/GSWExceptionPage.gswc/GSWExceptionPage.gswd
|
||||||
|
use exclamation.png. exclamation.svg is not displayed inline in mozilla
|
||||||
|
due to a bug in mozilla.
|
||||||
|
* GSWExtensions/WebServerResources/exclamation.png
|
||||||
|
* GSWExtensions/WebServerResources/exclamation.svg
|
||||||
|
new file
|
||||||
|
* GSWExtensions/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html
|
||||||
|
* GSWExtensions/GSWExceptionPage.gswc/GSWExceptionPage.html
|
||||||
|
better web design
|
||||||
|
* GSWeb/GSWApplication.m
|
||||||
|
-path
|
||||||
|
get path from _resourceManager
|
||||||
|
_resetCache
|
||||||
|
do not call _clearCache, maybe we should trash the _componentDefinitionCache?
|
||||||
|
_finishInitializingSession:
|
||||||
|
make empty, still seems to work
|
||||||
|
+_applicationClass
|
||||||
|
don not use _applicationGSWBundle
|
||||||
|
* GSWeb/GSWResourceManager.h
|
||||||
|
* GSWeb/GSWResourceManager.m
|
||||||
|
major redesign with WO 4.5 docs in mind.
|
||||||
|
* GSWeb/GSWImageButton.m
|
||||||
|
refactor resourceManager code
|
||||||
|
* GSWeb/GSWeb.h
|
||||||
|
remove GSWBundle class
|
||||||
|
* Testing/DynamicElements
|
||||||
|
added Image test.
|
||||||
|
|
||||||
2010-06-18 David Wetzel <dave@turbocat.de>
|
2010-06-18 David Wetzel <dave@turbocat.de>
|
||||||
* GSWeb/GSWContext.m
|
* GSWeb/GSWContext.m
|
||||||
- computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary
|
- computeQueryDictionaryWithPath:queryDictionary:otherQueryDictionary
|
||||||
|
|
|
@ -27,7 +27,7 @@ include $(GNUSTEP_MAKEFILES)/Auxiliary/gsweb.make
|
||||||
|
|
||||||
GSWAPP_NAME=WebBookStore1
|
GSWAPP_NAME=WebBookStore1
|
||||||
WebBookStore1_HAS_GSWCOMPONENTS=YES
|
WebBookStore1_HAS_GSWCOMPONENTS=YES
|
||||||
WebBookStore1_PRINCIPAL_CLASS=WebBookStore1
|
WebBookStore1_PRINCIPAL_CLASS=Application
|
||||||
WebBookStore1_GSWAPP_INFO_PLIST=Resources/Info-WebBookStore1.plist
|
WebBookStore1_GSWAPP_INFO_PLIST=Resources/Info-WebBookStore1.plist
|
||||||
|
|
||||||
# The Objective-C source files to be compiled
|
# The Objective-C source files to be compiled
|
||||||
|
|
|
@ -124,7 +124,8 @@ appOff.png \
|
||||||
appOn.png \
|
appOn.png \
|
||||||
back.png \
|
back.png \
|
||||||
dir.png \
|
dir.png \
|
||||||
exclamation.mng \
|
exclamation.png \
|
||||||
|
exclamation.svg \
|
||||||
eye.png \
|
eye.png \
|
||||||
lft-OSarw.png \
|
lft-OSarw.png \
|
||||||
rt-OSarw.png \
|
rt-OSarw.png \
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
ExclamationImage: GSWImage
|
||||||
|
{
|
||||||
|
filename = "exclamation.png";
|
||||||
|
framework = "WOExtensions";
|
||||||
|
height="50";
|
||||||
|
width="60";
|
||||||
|
alt="exclamation sign"
|
||||||
|
}
|
||||||
|
|
||||||
ApplicationNameString: GSWString
|
ApplicationNameString: GSWString
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,86 +1,95 @@
|
||||||
<html>
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
<head>
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<title>GNUstepWeb Error</title>
|
<head>
|
||||||
<meta name="robots" content="noindex,nofollow"/>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
</head>
|
<style type="text/css">
|
||||||
<body bgcolor="white">
|
body {color: #111;font-family:"Helvetica Neue",Helvetica,sans-serif;}
|
||||||
|
.fail {margin: auto; padding: 40px; display: block;
|
||||||
<table border="0">
|
border: 1px solid #000000;
|
||||||
<tr>
|
position: relative;}
|
||||||
<td align="center" Valign="TOP">
|
.fail h2 {margin: 0 0 .2em; font-size: 24px}
|
||||||
<h2>[!] An error occured in application <gsweb name="ApplicationNameString"></gsweb>.</h2>
|
.fail p {margin: 0; font-size: .8em;}
|
||||||
<h4><gsweb name="ReenterHyperlink"><< Re-enter <gsweb name="ApplicationNameString"></gsweb></gsweb></h4>
|
.power {float:right;padding-top: 10px;}
|
||||||
</td>
|
img {float:left;padding-right: 10px;}
|
||||||
</tr>
|
a {color: #0092E8;}
|
||||||
<tr>
|
a:hover {color: #0071b3;}
|
||||||
<td align="LEFT" Valign="TOP">
|
</style>
|
||||||
<hr/>
|
<title>GNUstepWeb Error</title>
|
||||||
<table border="0" width="700">
|
<meta name="robots" content="noindex,nofollow"/>
|
||||||
<tr>
|
</head>
|
||||||
<td align="RIGHT" Valign="MIDDLE">
|
<body>
|
||||||
<b>Application:</b>
|
|
||||||
</td>
|
<div class="fail">
|
||||||
<td align="LEFT" Valign="MIDDLE">
|
<gsweb name="ExclamationImage"></gsweb>
|
||||||
<tt><gsweb name="ApplicationNameString"></gsweb></tt>
|
<h2>An error occured in application <gsweb name="ApplicationNameString"></gsweb>.</h2>
|
||||||
</td>
|
<p><gsweb name="ReenterHyperlink">Re-enter <gsweb name="ApplicationNameString"></gsweb> to continue.</gsweb></p>
|
||||||
</tr>
|
|
||||||
<tr>
|
<table border="0" width="700">
|
||||||
<td align="right" valign="top">
|
<tr>
|
||||||
<b>Reference:</b>
|
<td align="RIGHT" Valign="MIDDLE">
|
||||||
</td>
|
<b>Application:</b>
|
||||||
<td align="left" valign="top">
|
</td>
|
||||||
<tt><gsweb name="ReferenceString"></gsweb></tt>
|
<td align="LEFT" Valign="MIDDLE">
|
||||||
</td>
|
<tt><gsweb name="ApplicationNameString"></gsweb></tt>
|
||||||
</tr>
|
</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td align="RIGHT" Valign="MIDDLE">
|
<tr>
|
||||||
<b>Error:</b>
|
<td align="right" valign="top">
|
||||||
</td>
|
<b>Reference:</b>
|
||||||
<td align="LEFT" Valign="MIDDLE">
|
</td>
|
||||||
<tt><gsweb name="ExceptionNameString"></gsweb></tt>
|
<td align="left" valign="top">
|
||||||
</td>
|
<tt><gsweb name="ReferenceString"></gsweb></tt>
|
||||||
</tr>
|
</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td align="RIGHT" Valign="MIDDLE">
|
<tr>
|
||||||
<b>Reason:</b>
|
<td align="RIGHT" Valign="MIDDLE">
|
||||||
</td>
|
<b>Error:</b>
|
||||||
<td align="LEFT" Valign="MIDDLE">
|
</td>
|
||||||
<gsweb name="ReasonRepetition">
|
<td align="LEFT" Valign="MIDDLE">
|
||||||
<tt><gsweb name="ReasonString"></gsweb></tt><br/>
|
<tt><gsweb name="ExceptionNameString"></gsweb></tt>
|
||||||
</gsweb>
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<td align="RIGHT" Valign="MIDDLE">
|
||||||
<td colspan="2" align="LEFT" Valign="bottom">
|
<b>Reason:</b>
|
||||||
<hr/>
|
</td>
|
||||||
<b>User Info Dictionary:</b>
|
<td align="LEFT" Valign="MIDDLE">
|
||||||
</td>
|
<gsweb name="ReasonRepetition">
|
||||||
</tr>
|
<tt><gsweb name="ReasonString"></gsweb></tt><br/>
|
||||||
<gsweb name="HasUserInfoConditional">
|
|
||||||
<gsweb name="UserInfoRowRepetition">
|
|
||||||
<tr>
|
|
||||||
<td align="RIGHT" Valign="TOP">
|
|
||||||
<b><tt><gsweb name="UserInfoKeyString"></gsweb>:</tt></b>
|
|
||||||
</td>
|
|
||||||
<td align="LEFT" Valign="TOP">
|
|
||||||
<tt><gsweb name="UserInfoValueString"></gsweb></tt>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</gsweb>
|
|
||||||
</gsweb>
|
</gsweb>
|
||||||
<gsweb name="NoUserInfoConditional">
|
</td>
|
||||||
<tr>
|
</tr>
|
||||||
<td align="RIGHT" Valign="TOP">
|
<tr>
|
||||||
</td>
|
<td colspan="2" align="LEFT" Valign="bottom">
|
||||||
<td align="LEFT" Valign="TOP">
|
<hr/>
|
||||||
<b>Exception has no userInfo dictionary</b>
|
<b>User Info Dictionary:</b>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</gsweb>
|
<gsweb name="HasUserInfoConditional">
|
||||||
</table>
|
<gsweb name="UserInfoRowRepetition">
|
||||||
</td>
|
<tr>
|
||||||
</tr>
|
<td align="RIGHT" Valign="TOP">
|
||||||
</table>
|
<b><tt><gsweb name="UserInfoKeyString"></gsweb>:</tt></b>
|
||||||
<p>Powered by <a href="http://wiki.gnustep.org/index.php/GNUstepWeb">GNUstep Web</a></p>
|
</td>
|
||||||
</body>
|
<td align="LEFT" Valign="TOP">
|
||||||
|
<tt><gsweb name="UserInfoValueString"></gsweb></tt>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</gsweb>
|
||||||
|
</gsweb>
|
||||||
|
<gsweb name="NoUserInfoConditional">
|
||||||
|
<tr>
|
||||||
|
<td align="RIGHT" Valign="TOP">
|
||||||
|
</td>
|
||||||
|
<td align="LEFT" Valign="TOP">
|
||||||
|
<b>Exception has no userInfo dictionary</b>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</gsweb>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p class="power">Powered by <a href="http://wiki.gnustep.org/index.php/GNUstepWeb">GNUstep Web</a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
ExclamationImage: GSWImage
|
ExclamationImage: GSWImage
|
||||||
{
|
{
|
||||||
filename = "exclamation.mng";
|
filename = "exclamation.png";
|
||||||
framework = "GSWExtensions";
|
framework = "WOExtensions";
|
||||||
border = 0;
|
height="50";
|
||||||
|
width="60";
|
||||||
|
alt="exclamation sign"
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplicationNameString: GSWString
|
ApplicationNameString: GSWString
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
|
|
||||||
ExclamationImage: GSWImage
|
ExclamationImage: GSWImage
|
||||||
{
|
{
|
||||||
filename = "exclamation.mng";
|
filename = "exclamation.png";
|
||||||
framework = "GSWExtensions";
|
framework = "WOExtensions";
|
||||||
border = 0;
|
height="50";
|
||||||
|
width="60";
|
||||||
|
alt="exclamation sign"
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplicationNameString: GSWString
|
ApplicationNameString: GSWString
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
ExclamationImage: GSWImage
|
ExclamationImage: GSWImage
|
||||||
{
|
{
|
||||||
filename = "exclamation.mng";
|
filename = "exclamation.png";
|
||||||
framework = "GSWExtensions";
|
framework = "WOExtensions";
|
||||||
border = 0;
|
height="50";
|
||||||
|
width="60";
|
||||||
|
alt="exclamation sign"
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplicationNameString: GSWString
|
ApplicationNameString: GSWString
|
||||||
|
|
|
@ -1,24 +1,29 @@
|
||||||
<html>
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
<head>
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<title>Missing Session Error</title>
|
<head>
|
||||||
<meta name="robots" content="noindex,nofollow"/>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
</head>
|
<style type="text/css">
|
||||||
<body bgcolor="white">
|
body {color: #111;font-family:"Helvetica Neue",Helvetica,sans-serif;}
|
||||||
|
.fail {margin: auto; padding: 40px; width: 400px; display: block;
|
||||||
<table border="0" width="100%">
|
border: 1px solid #000000;
|
||||||
<tr>
|
position: relative;}
|
||||||
<td align="CENTER" Valign="TOP">
|
.fail h2 {margin: 0 0 .2em; font-size: 24px}
|
||||||
<gsweb name="ExclamationImage"></gsweb><br/>
|
.fail p {margin: 0; font-size: .8em;}
|
||||||
Re-enter<br/>
|
.power {float:right;padding-top: 10px;}
|
||||||
<gsweb name="ReenterHyperlink">
|
img {float:left;padding-right: 10px;}
|
||||||
<b><gsweb name="ApplicationNameString"></gsweb></b>
|
a {color: #0092E8;}
|
||||||
</gsweb>
|
a:hover {color: #0071b3;}
|
||||||
</td>
|
</style>
|
||||||
<td align="LEFT" Valign="MIDDLE">
|
|
||||||
<b>Your session has timed out.</b>
|
<title>Missing Session Error</title>
|
||||||
</td>
|
<meta name="robots" content="noindex,nofollow"/>
|
||||||
</tr>
|
</head>
|
||||||
</table>
|
<body>
|
||||||
|
<div class="fail">
|
||||||
</body>
|
<gsweb name="ExclamationImage"></gsweb>
|
||||||
|
<h2>Your session has timed out.</h2>
|
||||||
|
<p><gsweb name="ReenterHyperlink">Re-enter <gsweb name="ApplicationNameString"></gsweb> to continue.</gsweb></p>
|
||||||
|
<p class="power">Powered by <a href="http://wiki.gnustep.org/index.php/GNUstepWeb">GNUstep Web</a></p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
BIN
GSWExtensions/WebServerResources/exclamation.png
Normal file
BIN
GSWExtensions/WebServerResources/exclamation.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
35
GSWExtensions/WebServerResources/exclamation.svg
Normal file
35
GSWExtensions/WebServerResources/exclamation.svg
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" width="600" height="500" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="g1" x1="41.1948738" y1="616.477173" x2="118.931351" y2="527.555115" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.556763,0,0,-4.315033,37.49756,2758.519)">
|
||||||
|
<stop offset="0" stop-color="#b00"/>
|
||||||
|
<stop offset="1" stop-color="#5f0000"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g2" x1="530.809509" y1="486.631012" x2="174.805481" y2="211.22995" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.960006,0,0,0.960006,11.68071,9.787565)">
|
||||||
|
<stop offset="0" stop-color="#9a0000"/>
|
||||||
|
<stop offset="1" stop-color="#f22803"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g3" x1="187.873566" y1="224.598923" x2="581.837463" y2="483.100006" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.960006,0,0,0.960006,11.68071,9.787558)">
|
||||||
|
<stop offset="0" stop-color="#ec6c60"/>
|
||||||
|
<stop offset="1" stop-color="#d11412"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g4" x1="250.398453" y1="101.536331" x2="412.094299" y2="264.54187" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.960006,0,0,0.960006,11.68071,9.787565)">
|
||||||
|
<stop offset="0" stop-color="#ffd9d9"/>
|
||||||
|
<stop offset="1" stop-color="#ff2727"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="g5"
|
||||||
|
cx="295.471252" cy="186.096344" r="179.550003" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.14292e-8,1.531256,-0.876504,-2.165967e-5,462.7486,-245.0023)">
|
||||||
|
<stop offset="0" stop-color="#fff"/>
|
||||||
|
<stop offset="0.5" stop-color="#fff"/>
|
||||||
|
<stop offset="1" stop-color="#d5d5d5"/>
|
||||||
|
</radialGradient>
|
||||||
|
</defs>
|
||||||
|
<path d="M 287.0439 30.68461 C 287.0439 30.68461 26.88238 457.8871 26.88238 457.8871 C 21.89034 466.0472 21.89034 476.1272 26.88238 484.2873 C 31.77841 492.3513 40.99446 497.4394 50.97852 497.4394 L 571.3016 497.4394 C 581.1896 497.4394 590.4057 492.3513 595.3977 484.2873 C 600.2937 476.1272 600.2937 466.0472 595.3977 457.8871 L 335.2362 30.68461 C 330.2442 22.52457 321.0281 17.43654 311.14 17.43654 C 301.252 17.43654 292.0359 22.52457 287.0439 30.68461z" style="fill-opacity:0.178571"/>
|
||||||
|
<path d="M 275.5863 23.03565 C 275.5863 23.03565 15.42473 450.2381 15.42473 450.2381 C 10.4327 458.3982 10.4327 468.4783 15.42473 476.6383 C 20.32076 484.7024 29.53681 489.7904 39.52087 489.7904 L 559.8439 489.7904 C 569.732 489.7904 578.948 484.7024 583.9401 476.6383 C 588.8361 468.4783 588.8361 458.3982 583.9401 450.2381 L 323.7785 23.03565 C 318.7865 14.8756 309.5705 9.787568 299.6824 9.787568 C 289.7943 9.787568 280.5783 14.8756 275.5863 23.03565z" style="fill:url(#g1)"/>
|
||||||
|
<path d="M 299.6824 31.7717 C 298.0504 31.7717 296.5144 32.6357 295.6504 33.97971 L 165.5696 247.581 L 35.48885 461.1822 C 34.62484 462.5262 34.62484 464.2542 35.48885 465.5982 C 36.35285 466.9422 37.88886 467.8062 39.52087 467.8062 L 559.8439 467.8062 C 561.4759 467.8062 563.0119 466.9422 563.876 465.5982 C 564.74 464.2542 564.74 462.5262 563.876 461.1822 L 303.7144 33.97971 C 302.8504 32.6357 301.3144 31.7717 299.6824 31.7717z" style="fill:url(#g2)"/>
|
||||||
|
<path d="M 299.6464 31.7717 C 298.0144 31.7717 296.4783 32.6357 295.6143 33.97971 L 165.5336 247.581 L 35.45283 461.1822 C 34.58882 462.5262 34.58882 464.2542 35.45283 465.5982 C 36.31683 466.9422 37.85284 467.8062 39.48485 467.8062 L 559.8079 467.8062 C 561.4399 467.8062 562.9759 466.9422 563.8399 465.5982 C 564.7039 464.2542 564.7039 462.5262 563.8399 461.1822 L 303.6784 33.97971 C 302.8144 32.6357 301.2784 31.7717 299.6464 31.7717z" style="fill:none;stroke:url(#g3);stroke-width:11.52;stroke-linejoin:round"/>
|
||||||
|
<path d="M 299.7514 39.46512 C 298.2057 39.54152 296.7649 40.40413 295.9414 41.68514 L 165.8606 255.2864 L 147.7405 285.0466 C 191.8747 311.5396 243.5133 326.8068 298.7014 326.8068 C 354.6732 326.8068 407.0086 311.1293 451.5523 283.9366 L 304.0114 41.68514 C 303.1474 40.34112 301.6234 39.46512 299.9914 39.46512 C 299.9149 39.46512 299.8274 39.46136 299.7514 39.46512z" style="fill:url(#g4);stroke-width:10;stroke-linejoin:round"/>
|
||||||
|
<path d="M 286.4344 145.7244 L 129.2814 403.678 C 126.5934 408.1901 126.5934 413.7581 129.2814 418.1741 C 131.9695 422.6861 137.0575 425.4702 142.5295 425.4702 L 456.7395 425.4702 C 462.2115 425.4702 467.2996 422.6861 469.9876 418.1741 C 472.6756 413.6621 472.6756 408.1901 469.9876 403.678 L 312.9306 145.7244 C 310.2426 141.2124 305.1545 138.4284 299.6825 138.4284 C 294.2105 138.4284 289.1224 141.2124 286.4344 145.7244z" style="fill:url(#g5)"/>
|
||||||
|
<path d="M 291.3968 416.3174 C 282.3931 412.0051 275.5362 401.6362 275.5362 392.3333 C 275.5362 375.0116 293.6366 361.9634 310.762 366.9398 C 322.3151 370.2971 330.1674 380.7229 330.0712 392.5774 C 329.9891 402.6474 325.6306 410.0656 316.7341 415.2773 C 309.9242 419.2665 298.5306 419.7341 291.3968 416.3174 z M 293.4432 347.9194 C 292.3177 347.3009 289.6669 345.1473 287.5529 343.1337 C 280.1664 336.0983 280.1756 336.1602 275.3607 260.8815 C 271.0805 193.9641 271.0451 192.9243 272.8817 188.1175 C 277.0134 177.3028 286.2196 172.5672 301.5485 173.3714 C 311.2922 173.8827 318.7963 177.3045 323.674 183.4607 C 327.8404 188.719 328.7462 191.6916 328.7424 200.0923 C 328.7383 209.2211 322.9068 321.1701 322.0779 328.0305 C 320.9926 337.0156 315.7466 344.3072 308.0575 347.5177 C 303.6637 349.3525 296.4136 349.5518 293.4432 347.9194z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.4 KiB |
|
@ -333,13 +333,7 @@ RCS_ID("$Id$")
|
||||||
|
|
||||||
if (actionClass)
|
if (actionClass)
|
||||||
{
|
{
|
||||||
GSWResourceManager* resourceManager=nil;
|
|
||||||
GSWDeployedBundle* appBundle=nil;
|
|
||||||
id<GSWActionResults> actionResult=nil;
|
id<GSWActionResults> actionResult=nil;
|
||||||
|
|
||||||
resourceManager=[application resourceManager];
|
|
||||||
appBundle=[resourceManager _appProjectBundle];
|
|
||||||
[resourceManager _allFrameworkProjectBundles];//So what ?
|
|
||||||
|
|
||||||
NS_DURING
|
NS_DURING
|
||||||
{
|
{
|
||||||
|
|
|
@ -389,27 +389,22 @@ static NSString * static_tempQueryKey = nil;
|
||||||
GSWAssociation* actionAssociation=nil;
|
GSWAssociation* actionAssociation=nil;
|
||||||
NSArray* regions=nil;
|
NSArray* regions=nil;
|
||||||
if (_file)
|
if (_file)
|
||||||
|
{
|
||||||
|
id imageMapFileNameValue=[_file valueInComponent:component];
|
||||||
|
NSString* imageMapFilePath;
|
||||||
|
GSWResourceManager* resourceManager=[[GSWApplication application]resourceManager];
|
||||||
|
NSArray* languages=[aContext languages];
|
||||||
|
imageMapFilePath=[resourceManager pathForResourceNamed:imageMapFileNameValue
|
||||||
|
inFramework:nil
|
||||||
|
languages:languages];
|
||||||
|
|
||||||
|
if (imageMapFilePath)
|
||||||
|
regions=[GSWGeometricRegion geometricRegionsWithFile:imageMapFilePath];
|
||||||
|
else
|
||||||
{
|
{
|
||||||
id imageMapFileNameValue=[_file valueInComponent:component];
|
//NSDebugMLLog0(@"gswdync",@"GSWActiveImage No image Map.");
|
||||||
NSString* imageMapFilePath=[GSWContext_component(aContext)
|
};
|
||||||
pathForResourceNamed:imageMapFileNameValue
|
}
|
||||||
ofType:nil];
|
|
||||||
if (!imageMapFilePath)
|
|
||||||
{
|
|
||||||
GSWResourceManager* resourceManager=[[GSWApplication application]resourceManager];
|
|
||||||
NSArray* languages=[aContext languages];
|
|
||||||
imageMapFilePath=[resourceManager pathForResourceNamed:imageMapFileNameValue
|
|
||||||
inFramework:nil
|
|
||||||
languages:languages];
|
|
||||||
|
|
||||||
};
|
|
||||||
if (imageMapFilePath)
|
|
||||||
regions=[GSWGeometricRegion geometricRegionsWithFile:imageMapFilePath];
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//NSDebugMLLog0(@"gswdync",@"GSWActiveImage No image Map.");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else if (!WOStrictFlag && _imageMapString)
|
else if (!WOStrictFlag && _imageMapString)
|
||||||
{
|
{
|
||||||
id imageMapValue=[_imageMapString valueInComponent:component];
|
id imageMapValue=[_imageMapString valueInComponent:component];
|
||||||
|
|
|
@ -332,8 +332,9 @@ int GSWApplicationMain(NSString* applicationClassName,
|
||||||
{
|
{
|
||||||
[self _setupForMonitoring];
|
[self _setupForMonitoring];
|
||||||
};
|
};
|
||||||
[[GSWResourceManager _applicationGSWBundle] initializeObject:self
|
// ??
|
||||||
fromArchiveNamed:@"Application"];
|
// [[GSWResourceManager _applicationGSWBundle] initializeObject:self
|
||||||
|
// fromArchiveNamed:@"Application"];
|
||||||
[self setPrintsHTMLParserDiagnostics:NO];
|
[self setPrintsHTMLParserDiagnostics:NO];
|
||||||
|
|
||||||
if ([[self class] recordingPath])
|
if ([[self class] recordingPath])
|
||||||
|
@ -658,7 +659,7 @@ int GSWApplicationMain(NSString* applicationClassName,
|
||||||
{
|
{
|
||||||
NSString* path=nil;
|
NSString* path=nil;
|
||||||
|
|
||||||
path=[[GSWResourceManager _applicationGSWBundle] path];
|
path=[[_resourceManager _appProjectBundle] path];
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
};
|
};
|
||||||
|
@ -852,15 +853,17 @@ int GSWApplicationMain(NSString* applicationClassName,
|
||||||
[self lock];
|
[self lock];
|
||||||
NS_DURING
|
NS_DURING
|
||||||
{
|
{
|
||||||
anEnum=[_componentDefinitionCache objectEnumerator];
|
// we should probably clear the _componentDefinitionCache? -- dw
|
||||||
while ((definition = [anEnum nextObject]))
|
|
||||||
{
|
// anEnum=[_componentDefinitionCache objectEnumerator];
|
||||||
if (((NSString*)definition != GSNotFoundMarker) && (![definition isCachingEnabled]))
|
// while ((definition = [anEnum nextObject]))
|
||||||
[definition _clearCache];
|
// {
|
||||||
}
|
// if (((NSString*)definition != GSNotFoundMarker) && (![definition isCachingEnabled]))
|
||||||
|
// [definition _clearCache];
|
||||||
|
// }
|
||||||
if (![self isCachingEnabled])
|
if (![self isCachingEnabled])
|
||||||
{
|
{
|
||||||
[[GSWResourceManager _applicationGSWBundle] clearCache];
|
[_resourceManager flushDataCache];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NS_HANDLER
|
NS_HANDLER
|
||||||
|
@ -1331,27 +1334,9 @@ int GSWApplicationMain(NSString* applicationClassName,
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(void)_finishInitializingSession:(GSWSession*)aSession
|
-(void)_finishInitializingSession:(GSWSession*)aSession
|
||||||
{
|
{
|
||||||
//OK
|
//Does nothing on WO 5
|
||||||
|
}
|
||||||
[self lock];
|
|
||||||
NS_DURING
|
|
||||||
{
|
|
||||||
[[GSWResourceManager _applicationGSWBundle] initializeObject:aSession
|
|
||||||
fromArchiveNamed:@"Session"];
|
|
||||||
}
|
|
||||||
NS_HANDLER
|
|
||||||
{
|
|
||||||
localException=ExceptionByAddingUserInfoObjectFrameInfo0(localException,
|
|
||||||
@"In initializeObject:fromArchiveNamed:");
|
|
||||||
//TODO
|
|
||||||
[self unlock];
|
|
||||||
[localException raise];
|
|
||||||
};
|
|
||||||
NS_ENDHANDLER;
|
|
||||||
[self unlock];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(GSWSession*)_initializeSessionInContext:(GSWContext*)aContext
|
-(GSWSession*)_initializeSessionInContext:(GSWContext*)aContext
|
||||||
|
@ -1714,64 +1699,16 @@ to another instance **/
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(Class)_sessionClass
|
-(Class)_sessionClass
|
||||||
{
|
{
|
||||||
//OK
|
|
||||||
Class sessionClass=nil;
|
Class sessionClass=nil;
|
||||||
|
|
||||||
sessionClass=[[GSWResourceManager _applicationGSWBundle] scriptedClassWithName:GSWClassName_Session
|
// sessionClass=[[_resourceManager _appProjectBundle] scriptedClassWithName:GSWClassName_Session
|
||||||
superclassName:GSWClassName_Session];
|
// superclassName:GSWClassName_Session];
|
||||||
|
|
||||||
if (!sessionClass)
|
if (!sessionClass)
|
||||||
sessionClass=NSClassFromString(GSWClassName_Session);
|
sessionClass=NSClassFromString(GSWClassName_Session);
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
//Search Compiled Class "Session" (subclass of GSWsession)
|
|
||||||
gswsessionClass=NSClassFromString();
|
|
||||||
sessionClass=NSClassFromString(GSWClassName_Session);
|
|
||||||
|
|
||||||
//If not found, search for library "Session" in application .gswa directory
|
|
||||||
if (!_sessionClass)
|
|
||||||
{
|
|
||||||
NSString* sessionPath=[self pathForResourceNamed:@"session"
|
|
||||||
ofType:nil];
|
|
||||||
Class _principalClass=[self libraryClassWithPath:sessionPath];
|
|
||||||
NSDebugMLLog(@"application",@"_principalClass=%@",_principalClass);
|
|
||||||
if (_principalClass)
|
|
||||||
{
|
|
||||||
_sessionClass=NSClassFromString(GSWClassName_Session);
|
|
||||||
NSDebugMLLog(@"application",@"sessionClass=%@",_sessionClass);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
//If not found, search for scripted "Session" in application .gswa directory
|
|
||||||
if (!sessionClass)
|
|
||||||
{
|
|
||||||
//TODO
|
|
||||||
};
|
|
||||||
|
|
||||||
//If not found, search for scripted "Session" in a session.gsws file
|
|
||||||
if (!sessionClass)
|
|
||||||
{
|
|
||||||
//TODO
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!sessionClass)
|
|
||||||
{
|
|
||||||
sessionClass=_gswsessionClass;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!ClassIsKindOfClass(_sessionClass,_gswsessionClass))
|
|
||||||
{
|
|
||||||
//TODO exception
|
|
||||||
NSDebugMLLog(@"application",
|
|
||||||
@"session class is not a kind of GSWSession");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
NSDebugMLLog(@"application",@"_sessionClass:%@",_sessionClass);
|
|
||||||
*/
|
|
||||||
|
|
||||||
return sessionClass;
|
return sessionClass;
|
||||||
};
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
//NDFN
|
//NDFN
|
||||||
|
@ -2265,7 +2202,7 @@ to another instance **/
|
||||||
|
|
||||||
[noteCenter postNotificationName:@"ApplicationWillDispatchRequestNotification"
|
[noteCenter postNotificationName:@"ApplicationWillDispatchRequestNotification"
|
||||||
object:aRequest];
|
object:aRequest];
|
||||||
|
|
||||||
requestHandler = [self handlerForRequest:aRequest];
|
requestHandler = [self handlerForRequest:aRequest];
|
||||||
|
|
||||||
if (!requestHandler)
|
if (!requestHandler)
|
||||||
|
@ -2488,11 +2425,11 @@ to another instance **/
|
||||||
NS_DURING
|
NS_DURING
|
||||||
{
|
{
|
||||||
errorPage=[self pageWithName:pageName
|
errorPage=[self pageWithName:pageName
|
||||||
inContext:context];
|
inContext:context];
|
||||||
|
|
||||||
if (anException)
|
if (anException)
|
||||||
[errorPage takeValue:anException
|
[errorPage setValue:anException
|
||||||
forKey:@"exception"];
|
forKey:@"exception"];
|
||||||
}
|
}
|
||||||
NS_HANDLER
|
NS_HANDLER
|
||||||
{
|
{
|
||||||
|
@ -3504,13 +3441,30 @@ to another instance **/
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
+(Class)_applicationClass
|
+(Class)_applicationClass
|
||||||
{
|
{
|
||||||
|
NSBundle * mainBundle = [NSBundle mainBundle];
|
||||||
|
NSString * className = [[mainBundle infoDictionary] objectForKey:@"NSPrincipalClass"];
|
||||||
|
Class potentialAppClass = NULL;
|
||||||
|
|
||||||
[[GSWResourceManager _applicationGSWBundle]
|
if (className) {
|
||||||
scriptedClassWithName:GSWClassName_Application//TODO
|
potentialAppClass = NSClassFromString(className);
|
||||||
superclassName:GSWClassName_Application]; //retirune nil //TODO
|
|
||||||
|
if ((potentialAppClass) && GSObjCIsKindOf(potentialAppClass,[GSWApplication class]))
|
||||||
|
{
|
||||||
|
return potentialAppClass;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return NSClassFromString(globalApplicationClassName);
|
potentialAppClass = NSClassFromString(@"Application");
|
||||||
};
|
|
||||||
|
if ((potentialAppClass) && GSObjCIsKindOf(potentialAppClass,[GSWApplication class]))
|
||||||
|
{
|
||||||
|
return potentialAppClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NSLog(@"You should consider creating your own WOApplication subclass.");
|
||||||
|
return NSClassFromString(@"WOApplication");
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
+(Class)_compiledApplicationClass
|
+(Class)_compiledApplicationClass
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
|
|
||||||
Written by: Manuel Guesdon <mguesdon@orange-concept.com>
|
Written by: Manuel Guesdon <mguesdon@orange-concept.com>
|
||||||
Date: Mar 1999
|
Date: Mar 1999
|
||||||
|
Written by: David Wetzel <dave@turbocat.de>
|
||||||
|
|
||||||
$Revision$
|
$Revision$
|
||||||
$Date$
|
$Date$
|
||||||
|
|
||||||
|
@ -33,116 +34,19 @@
|
||||||
#define _GSWBundle_h__
|
#define _GSWBundle_h__
|
||||||
|
|
||||||
|
|
||||||
//====================================================================
|
@interface NSBundle (WOResourceManagement)
|
||||||
@interface GSWBundle : NSObject <NSLocking>
|
|
||||||
{
|
|
||||||
NSString* _path;
|
|
||||||
NSString* _baseURL;
|
|
||||||
NSString* _frameworkName;
|
|
||||||
NSMutableDictionary* _archiveCache;
|
|
||||||
NSMutableDictionary* _apiCache;//NDFN
|
|
||||||
NSMutableDictionary* _encodingCache;
|
|
||||||
NSMutableDictionary* _templateParserTypeCache;//NDFN
|
|
||||||
NSMutableDictionary* _pathCache;
|
|
||||||
NSMutableDictionary* _urlCache;
|
|
||||||
NSMutableDictionary* _stringsTableCache;
|
|
||||||
NSMutableDictionary* _stringsTableArrayCache; //NDFN
|
|
||||||
NSMutableDictionary* _templateCache;
|
|
||||||
NSMutableDictionary* _classCache;
|
|
||||||
NSRecursiveLock* _selfLock;
|
|
||||||
#ifndef NDEBUG
|
|
||||||
int _selfLockn;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
-(NSString*)baseURL;
|
|
||||||
-(NSString*)path;
|
|
||||||
-(NSString*)frameworkName;
|
|
||||||
-(NSString*)description;
|
|
||||||
-(void)dealloc;
|
|
||||||
-(id)initWithPath:(NSString*)aPath
|
|
||||||
baseURL:(NSString*)aBaseURL
|
|
||||||
inFrameworkNamed:(NSString*)aFrameworkName;
|
|
||||||
-(id)initWithPath:(NSString*)aPath
|
|
||||||
baseURL:(NSString*)aBaseURL;
|
|
||||||
-(void)unlock;
|
|
||||||
-(void)lock;
|
|
||||||
|
|
||||||
// CHECKME: do we need this for WO 4.5? -- dw
|
|
||||||
|
|
||||||
-(void)clearCache;
|
|
||||||
//-(void)loadCache;
|
|
||||||
|
|
||||||
//-(id)lockedResourceNamed:(NSString*)aName
|
|
||||||
// ofType:(NSString*)aType
|
|
||||||
// withLanguages:(NSArray*)languages
|
|
||||||
// usingCache:(NSMutableDictionary*)cache
|
|
||||||
// relativePath:(NSString**)relativePath
|
|
||||||
// absolutePath:(NSString**)absolutePath;
|
|
||||||
|
|
||||||
-(void)initializeObject:(id)anObject
|
-(void)initializeObject:(id)anObject
|
||||||
fromArchiveNamed:(NSString*)aName;
|
fromArchive:(NSDictionary*)anArchive;
|
||||||
|
|
||||||
-(void)initializeObject:(id)anObject
|
|
||||||
fromArchive:(NSDictionary*)archive;
|
|
||||||
|
|
||||||
-(Class)scriptedClassWithName:(NSString*)aName
|
|
||||||
superclassName:(NSString*)superclassName;
|
|
||||||
|
|
||||||
-(Class)lockedScriptedClassWithName:(NSString*)aName
|
|
||||||
pathName:(NSString*)pathName
|
|
||||||
superclassName:(NSString*)superclassName;
|
|
||||||
|
|
||||||
-(NSString*)lockedScriptedClassPathWithName:(NSString*)aName;
|
|
||||||
|
|
||||||
//-(Class)compiledClassWithName:(NSString*)aName
|
|
||||||
// superclassName:(NSString*)superclassName;
|
|
||||||
|
|
||||||
-(GSWElement*)templateNamed:(NSString*)aName
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
|
|
||||||
-(GSWElement*)lockedTemplateNamed:(NSString*)aName
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
|
|
||||||
//-(NSString*)stringForKey:(NSString*)key_
|
|
||||||
// inTableNamed:(NSString*)aName
|
|
||||||
// withDefaultValue:(NSString*)defaultValue
|
|
||||||
// languages:(NSArray*)languages;
|
|
||||||
//
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)stringsTableNamed:(NSString*)aName
|
|
||||||
withLanguages:(NSArray*)languages;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
//-(NSArray*)stringsTableArrayNamed:(NSString*)aName
|
|
||||||
// withLanguages:(NSArray*)languages;
|
|
||||||
|
|
||||||
//-(NSString*)urlForResourceNamed:(NSString*)aName
|
|
||||||
// ofType:(NSString*)aType
|
|
||||||
// languages:(NSArray*)languages
|
|
||||||
// request:(GSWRequest*)aRequest;
|
|
||||||
//
|
|
||||||
|
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)aType
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
|
|
||||||
-(NSStringEncoding)encodingForResourcesNamed:(NSString*)aName;
|
|
||||||
-(GSWTemplateParserType)templateParserTypeForResourcesNamed:(NSString*)aName;//NDFN
|
|
||||||
|
|
||||||
-(NSDictionary*)archiveNamed:(NSString*)aName;
|
|
||||||
-(NSDictionary*)apiNamed:(NSString*)aName;//NDFN
|
|
||||||
|
|
||||||
-(NSDictionary*)lockedArchiveNamed:(NSString*)aName;
|
|
||||||
-(NSDictionary*)lockedApiNamed:(NSString*)aName;//NDFN
|
|
||||||
|
|
||||||
//-(id)scriptedClassNameFromClassName:(NSString*)aName;
|
|
||||||
//-(id)scriptPathNameFromScriptedClassName:(NSString*)aName;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface GSWBundleUnarchiverDelegate : NSObject
|
||||||
|
{
|
||||||
|
id _object;
|
||||||
|
}
|
||||||
|
- (id) unarchiver:(NSKeyedUnarchiver*)unarchiver objectForReference:(NSString*)keyPath;
|
||||||
|
- (id) initWithObject:(id)object;
|
||||||
|
@end
|
||||||
|
|
||||||
#endif //_GSWBundle_h__
|
#endif //_GSWBundle_h__
|
||||||
|
|
1005
GSWeb/GSWBundle.m
1005
GSWeb/GSWBundle.m
File diff suppressed because it is too large
Load diff
|
@ -105,7 +105,7 @@
|
||||||
-(GSWElement*)_childTemplate;
|
-(GSWElement*)_childTemplate;
|
||||||
-(GSWElement*) template;
|
-(GSWElement*) template;
|
||||||
-(GSWComponentDefinition*)_componentDefinition;
|
-(GSWComponentDefinition*)_componentDefinition;
|
||||||
-(NSString*)_templateName;
|
-(NSString*)_templateName GS_ATTRIB_DEPRECATED;
|
||||||
-(NSString*)declarationName;
|
-(NSString*)declarationName;
|
||||||
-(BOOL)_isPage;
|
-(BOOL)_isPage;
|
||||||
-(void)_setIsPage:(BOOL)isPage;
|
-(void)_setIsPage:(BOOL)isPage;
|
||||||
|
@ -225,58 +225,32 @@ Call this method before using a component which was cached in a variable.
|
||||||
//+(id)validateValue:(id*)valuePtr
|
//+(id)validateValue:(id*)valuePtr
|
||||||
// forKey:(id)key;
|
// forKey:(id)key;
|
||||||
|
|
||||||
-(NSString*)stringForKey:(NSString*)key
|
|
||||||
inTableNamed:(NSString*)aName
|
|
||||||
withDefaultValue:(NSString*)defaultValue;
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)stringsTableNamed:(NSString*)aName;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)stringsTableArrayNamed:(NSString*)aName;
|
|
||||||
|
|
||||||
-(NSString*)urlForResourceNamed:(NSString*)aName
|
-(NSString*)urlForResourceNamed:(NSString*)aName
|
||||||
ofType:(NSString*)extension;
|
ofType:(NSString*)extension GS_ATTRIB_DEPRECATED;
|
||||||
-(NSString*)_urlForResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)extension;
|
/*
|
||||||
|
Deprecated in WO 4.0.
|
||||||
|
Use GSWResourceManager’s implementation of
|
||||||
|
pathForResourceNamed:inFramework:languages:
|
||||||
|
instead.
|
||||||
|
*/
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)aName
|
-(NSString*)pathForResourceNamed:(NSString*)aName
|
||||||
ofType:(NSString*)extension;
|
ofType:(NSString*)extension GS_ATTRIB_DEPRECATED;
|
||||||
//NDFN
|
|
||||||
-(NSString*)pathForComponentResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)type;
|
|
||||||
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSString*)stringForKey:(id)key
|
|
||||||
inTableNamed:(NSString*)aName
|
|
||||||
withDefaultValue:(NSString*)defaultValue
|
|
||||||
inFramework:(NSString*)frameworkName;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)stringsTableNamed:(NSString*)aName
|
|
||||||
inFramework:(NSString*)frameworkName;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)stringsTableArrayNamed:(NSString*)aName
|
|
||||||
inFramework:(NSString*)frameworkName;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSString*)urlForResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)extension
|
|
||||||
inFramework:(NSString*)frameworkName;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)extension
|
|
||||||
inFramework:(NSString*)frameworkName;
|
|
||||||
|
|
||||||
|
|
||||||
+(GSWElement*)templateWithHTMLString:(NSString*)htmlString
|
+(GSWElement*)templateWithHTMLString:(NSString*)htmlString
|
||||||
declarationString:(NSString*)declarationString
|
declarationString:(NSString*)declarationString
|
||||||
languages:(NSArray*)languages;
|
languages:(NSArray*)languages;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Deprecated in WO 4.0.
|
||||||
|
Use
|
||||||
|
templateWithHTMLString:declarationString:languages:
|
||||||
|
instead.
|
||||||
|
*/
|
||||||
|
|
||||||
+(GSWElement*)templateWithHTMLString:(NSString *)htmlString
|
+(GSWElement*)templateWithHTMLString:(NSString *)htmlString
|
||||||
declarationString:(NSString*)declarationString;//old
|
declarationString:(NSString*)declarationString GS_ATTRIB_DEPRECATED;
|
||||||
|
|
||||||
|
|
||||||
- (GSWResponse*)generateResponse;
|
- (GSWResponse*)generateResponse;
|
||||||
|
|
|
@ -1453,185 +1453,47 @@ Call this method before using a component which was cached in a variable.
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
// stringForKey:inTableNamed:withDefaultValue:
|
|
||||||
|
|
||||||
-(NSString*)stringForKey:(NSString*)key
|
|
||||||
inTableNamed:(NSString*)tableName
|
|
||||||
withDefaultValue:(NSString*)defaultValue
|
|
||||||
{
|
|
||||||
//OK
|
|
||||||
NSString* string=nil;
|
|
||||||
|
|
||||||
string=[GSWApp stringForKey:key
|
|
||||||
inTableNamed:tableName
|
|
||||||
withDefaultValue:defaultValue
|
|
||||||
inFramework:[self frameworkName]
|
|
||||||
languages:[self languages]];
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)stringsTableNamed:(NSString*)aName
|
|
||||||
{
|
|
||||||
//OK
|
|
||||||
NSDictionary* stringsTable=nil;
|
|
||||||
|
|
||||||
stringsTable=[GSWApp stringsTableNamed:aName
|
|
||||||
inFramework:[self frameworkName]
|
|
||||||
languages:[self languages]];
|
|
||||||
return stringsTable;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)stringsTableArrayNamed:(NSString*)aName
|
|
||||||
{
|
|
||||||
//OK
|
|
||||||
NSArray* stringsTableArray=nil;
|
|
||||||
|
|
||||||
stringsTableArray=[GSWApp stringsTableArrayNamed:aName
|
|
||||||
inFramework:[self frameworkName]
|
|
||||||
languages:[self languages]];
|
|
||||||
|
|
||||||
return stringsTableArray;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
// urlForResourceNamed:ofType:
|
// urlForResourceNamed:ofType:
|
||||||
|
|
||||||
-(NSString*)urlForResourceNamed:(NSString*)aName
|
-(NSString*)urlForResourceNamed:(NSString*)aName
|
||||||
ofType:(NSString*)type
|
ofType:(NSString*)type
|
||||||
{
|
{
|
||||||
//TODO
|
NSString* url = nil;
|
||||||
NSString* url=nil;
|
|
||||||
NSString* name;
|
|
||||||
|
|
||||||
if ((type != nil)) {
|
GSOnceMLog(@"%s is depricated in WO 4.0. Use GSWResourceManager’s implementation of "
|
||||||
name = [NSString stringWithFormat:@"%@.%@",aName,type];
|
@"urlForResourceNamed:inFramework:languages:request: "
|
||||||
} else {
|
@"instead.",
|
||||||
name = aName;
|
__PRETTY_FUNCTION__);
|
||||||
}
|
|
||||||
|
|
||||||
url=[GSWApp urlForResourceNamed:name
|
url=[[GSWApp resourceManager] urlForResourceNamed:aName
|
||||||
inFramework:[self frameworkName]
|
ofType:type
|
||||||
languages:[self languages]
|
inFramework:nil
|
||||||
request:nil];//TODO
|
languages:[self languages]
|
||||||
|
request:nil];
|
||||||
|
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(NSString*)_urlForResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)type
|
|
||||||
{
|
|
||||||
[self notImplemented: _cmd]; //TODOFN
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
// pathForResourceNamed:ofType:
|
|
||||||
// Normally: local search. Here we do a resourceManager serahc.
|
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)aName
|
-(NSString*)pathForResourceNamed:(NSString*)aName
|
||||||
ofType:(NSString*)type
|
ofType:(NSString*)type
|
||||||
{
|
{
|
||||||
NSString* path=nil;
|
NSString* path=nil;
|
||||||
|
|
||||||
|
GSOnceMLog(@"%s is depricated in WO 4.0. Use GSWResourceManager’s implementation of "
|
||||||
|
@"pathForResourceNamed:inFramework:languages: "
|
||||||
|
@"instead.",
|
||||||
|
__PRETTY_FUNCTION__);
|
||||||
|
|
||||||
path=[GSWApp pathForResourceNamed:aName
|
path=[[GSWApp resourceManager] pathForResourceNamed:aName
|
||||||
ofType:type
|
ofType:type
|
||||||
inFramework:[self frameworkName]
|
inFramework:nil
|
||||||
languages:[self languages]];
|
languages:[self languages]];
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSString*)pathForComponentResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)type_
|
|
||||||
{
|
|
||||||
NSString* path=nil;
|
|
||||||
NSArray* languages=nil;
|
|
||||||
GSWComponentDefinition* aComponentDefinition=nil;
|
|
||||||
|
|
||||||
languages=[self languages];
|
|
||||||
aComponentDefinition=[self _componentDefinition];
|
|
||||||
if (aComponentDefinition)
|
|
||||||
path=[aComponentDefinition pathForResourceNamed:aName
|
|
||||||
ofType:type_
|
|
||||||
languages:languages];
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSString*)stringForKey:(id)key
|
|
||||||
inTableNamed:(NSString*)aName
|
|
||||||
withDefaultValue:(NSString*)defaultValue
|
|
||||||
inFramework:(NSString*)aFrameworkName
|
|
||||||
{
|
|
||||||
return [GSWApp stringForKey:key
|
|
||||||
inTableNamed:aName
|
|
||||||
withDefaultValue:defaultValue
|
|
||||||
inFramework:aFrameworkName
|
|
||||||
languages:[self languages]];
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)stringsTableNamed:(NSString*)aName
|
|
||||||
inFramework:(NSString*)aFrameworkName
|
|
||||||
{
|
|
||||||
return [GSWApp stringsTableNamed:aName
|
|
||||||
inFramework:aFrameworkName
|
|
||||||
languages:[self languages]];
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)stringsTableArrayNamed:(NSString*)aName
|
|
||||||
inFramework:(NSString*)aFrameworkName
|
|
||||||
{
|
|
||||||
return [GSWApp stringsTableArrayNamed:aName
|
|
||||||
inFramework:aFrameworkName
|
|
||||||
languages:[self languages]];
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSString*)urlForResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)extension
|
|
||||||
inFramework:(NSString*)aFrameworkName;
|
|
||||||
{
|
|
||||||
|
|
||||||
NSString * name;
|
|
||||||
|
|
||||||
if ((extension != nil)) {
|
|
||||||
name = [NSString stringWithFormat:@"%@.%@",aName,extension];
|
|
||||||
} else {
|
|
||||||
name = aName;
|
|
||||||
}
|
|
||||||
|
|
||||||
return [GSWApp urlForResourceNamed:name
|
|
||||||
inFramework:aFrameworkName
|
|
||||||
languages:[self languages]
|
|
||||||
request:nil];//TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)extension
|
|
||||||
inFramework:(NSString*)aFrameworkName
|
|
||||||
{
|
|
||||||
return [GSWApp pathForResourceNamed:aName
|
|
||||||
ofType:(NSString*)extension
|
|
||||||
inFramework:aFrameworkName
|
|
||||||
languages:[self languages]];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
// templateWithHTMLString:declarationString:languages
|
// templateWithHTMLString:declarationString:languages
|
||||||
|
@ -1651,10 +1513,14 @@ Call this method before using a component which was cached in a variable.
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
// templateWithHTMLString:declarationString:
|
// templateWithHTMLString:declarationString:
|
||||||
//old
|
|
||||||
+(GSWElement*)templateWithHTMLString:(NSString*)htmlString
|
+(GSWElement*)templateWithHTMLString:(NSString*)htmlString
|
||||||
declarationString:(NSString*)pageDefString
|
declarationString:(NSString*)pageDefString
|
||||||
{
|
{
|
||||||
|
GSOnceMLog(@"%s is depricated in WO 4.0. Use "
|
||||||
|
@"templateWithHTMLString:declarationString:languages:"
|
||||||
|
@"instead.",
|
||||||
|
__PRETTY_FUNCTION__);
|
||||||
|
|
||||||
return [self templateWithHTMLString:htmlString
|
return [self templateWithHTMLString:htmlString
|
||||||
declarationString:pageDefString
|
declarationString:pageDefString
|
||||||
languages:nil];
|
languages:nil];
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
#define _GSWComponentDefinition_h__
|
#define _GSWComponentDefinition_h__
|
||||||
|
|
||||||
@class GSWElement;
|
@class GSWElement;
|
||||||
@class GSWBundle;
|
|
||||||
@class GSWComponent;
|
@class GSWComponent;
|
||||||
@class GSWContext;
|
@class GSWContext;
|
||||||
@class GSWComponentReference;
|
@class GSWComponentReference;
|
||||||
|
@ -58,14 +57,15 @@
|
||||||
NSDictionary * _archive;
|
NSDictionary * _archive;
|
||||||
NSStringEncoding _encoding;
|
NSStringEncoding _encoding;
|
||||||
BOOL _isStateless;
|
BOOL _isStateless;
|
||||||
GSWBundle * _bundle;
|
|
||||||
GSWComponent * _sharedInstance;
|
GSWComponent * _sharedInstance;
|
||||||
NSMutableArray * _instancePool;
|
NSMutableArray * _instancePool;
|
||||||
BOOL _lockInstancePool;
|
BOOL _lockInstancePool;
|
||||||
BOOL _hasBeenAccessed;
|
BOOL _hasBeenAccessed;
|
||||||
BOOL _hasContextConstructor;
|
BOOL _hasContextConstructor;
|
||||||
NSLock * _instancePoolLock;
|
NSLock * _instancePoolLock;
|
||||||
};
|
NSDate * _wooReadDate;
|
||||||
|
NSDate * _htmlReadDate;
|
||||||
|
}
|
||||||
|
|
||||||
-(id)initWithName:(NSString*)aName
|
-(id)initWithName:(NSString*)aName
|
||||||
path:(NSString*)aPath
|
path:(NSString*)aPath
|
||||||
|
@ -94,6 +94,11 @@
|
||||||
|
|
||||||
- (GSWElement *) template;
|
- (GSWElement *) template;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* returns the contents of the .wod
|
||||||
|
*/
|
||||||
|
- (NSDictionary *) archive;
|
||||||
|
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)aName
|
-(NSString*)pathForResourceNamed:(NSString*)aName
|
||||||
ofType:(NSString*)aType
|
ofType:(NSString*)aType
|
||||||
languages:(NSArray*)languages;
|
languages:(NSArray*)languages;
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include "GSWeb.h"
|
#include "GSWeb.h"
|
||||||
#include <GNUstepBase/NSObject+GNUstepBase.h>
|
#include <GNUstepBase/NSObject+GNUstepBase.h>
|
||||||
|
#include <GNUstepBase/GSMime.h>
|
||||||
|
|
||||||
//====================================================================
|
//====================================================================
|
||||||
|
|
||||||
|
@ -80,6 +81,8 @@ static GSWContext * TheTemporaryContext;
|
||||||
ASSIGN(_url, baseURL);
|
ASSIGN(_url, baseURL);
|
||||||
ASSIGN(_frameworkName, aFrameworkName);
|
ASSIGN(_frameworkName, aFrameworkName);
|
||||||
DESTROY(_language);
|
DESTROY(_language);
|
||||||
|
DESTROY(_wooReadDate);
|
||||||
|
DESTROY(_htmlReadDate);
|
||||||
_hasBeenAccessed = NO;
|
_hasBeenAccessed = NO;
|
||||||
_hasContextConstructor = NO;
|
_hasContextConstructor = NO;
|
||||||
_isStateless = NO;
|
_isStateless = NO;
|
||||||
|
@ -88,10 +91,7 @@ static GSWContext * TheTemporaryContext;
|
||||||
_lockInstancePool = [GSWApp isConcurrentRequestHandlingEnabled];
|
_lockInstancePool = [GSWApp isConcurrentRequestHandlingEnabled];
|
||||||
|
|
||||||
if ((_name != nil) && (_frameworkName != nil)) {
|
if ((_name != nil) && (_frameworkName != nil)) {
|
||||||
NSBundle * nsbundle = [NSBundle bundleForClass:NSClassFromString(_className)];
|
_componentClass = NSClassFromString(_className);
|
||||||
if (nsbundle != nil) {
|
|
||||||
_componentClass = NSClassFromString(_className);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
myBasePath = [aPath stringByAppendingPathComponent: aName];
|
myBasePath = [aPath stringByAppendingPathComponent: aName];
|
||||||
ASSIGN(_htmlPath,[myBasePath stringByAppendingPathExtension:@"html"]);
|
ASSIGN(_htmlPath,[myBasePath stringByAppendingPathExtension:@"html"]);
|
||||||
|
@ -116,25 +116,10 @@ static GSWContext * TheTemporaryContext;
|
||||||
// __PRETTY_FUNCTION__, _name];
|
// __PRETTY_FUNCTION__, _name];
|
||||||
// }
|
// }
|
||||||
_archive = nil;
|
_archive = nil;
|
||||||
_encoding = NSUTF8StringEncoding;
|
_encoding = 0; // to test for real value later
|
||||||
_template = nil;
|
_template = nil;
|
||||||
[self setCachingEnabled:[[GSWApp class] isCachingEnabled]];
|
[self setCachingEnabled:[[GSWApp class] isCachingEnabled]];
|
||||||
_isAwake = NO;
|
_isAwake = NO;
|
||||||
if (_frameworkName == nil) {
|
|
||||||
_bundle=[[GSWBundle alloc] initWithPath:aPath
|
|
||||||
baseURL:baseURL
|
|
||||||
inFrameworkNamed: nil];
|
|
||||||
} else {
|
|
||||||
_bundle=[[GSWBundle alloc] initWithPath:aPath
|
|
||||||
baseURL:baseURL
|
|
||||||
inFrameworkNamed: _frameworkName];
|
|
||||||
if (_bundle == nil)
|
|
||||||
{
|
|
||||||
[NSException raise:NSInvalidArgumentException
|
|
||||||
format:@"%s: No framework named '%@'",
|
|
||||||
__PRETTY_FUNCTION__, _frameworkName];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_instancePoolLock = [[NSLock alloc] init];
|
_instancePoolLock = [[NSLock alloc] init];
|
||||||
|
|
||||||
|
@ -156,10 +141,13 @@ static GSWContext * TheTemporaryContext;
|
||||||
DESTROY(_wodPath);
|
DESTROY(_wodPath);
|
||||||
DESTROY(_wooPath);
|
DESTROY(_wooPath);
|
||||||
DESTROY(_archive);
|
DESTROY(_archive);
|
||||||
DESTROY(_bundle);
|
|
||||||
DESTROY(_sharedInstance);
|
DESTROY(_sharedInstance);
|
||||||
DESTROY(_instancePool);
|
DESTROY(_instancePool);
|
||||||
|
|
||||||
|
DESTROY(_wooReadDate);
|
||||||
|
DESTROY(_htmlReadDate);
|
||||||
|
|
||||||
|
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -232,11 +220,10 @@ static GSWContext * TheTemporaryContext;
|
||||||
-(NSString*)description
|
-(NSString*)description
|
||||||
{
|
{
|
||||||
//TODO
|
//TODO
|
||||||
return [NSString stringWithFormat:@"<%s %p - name:[%@] bundle:[%@] frameworkName=[%@] componentClass=[%@] isCachingEnabled=[%s] isAwake=[%s]>",
|
return [NSString stringWithFormat:@"<%s %p - name:[%@] frameworkName=[%@] componentClass=[%@] isCachingEnabled=[%s] isAwake=[%s]>",
|
||||||
object_getClassName(self),
|
object_getClassName(self),
|
||||||
(void*)self,
|
(void*)self,
|
||||||
_name,
|
_name,
|
||||||
_bundle,
|
|
||||||
_frameworkName,
|
_frameworkName,
|
||||||
_componentClass,
|
_componentClass,
|
||||||
_caching ? "YES" : "NO",
|
_caching ? "YES" : "NO",
|
||||||
|
@ -279,37 +266,8 @@ static GSWContext * TheTemporaryContext;
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(void)_clearCache
|
-(void)_clearCache
|
||||||
{
|
{
|
||||||
//OK
|
|
||||||
[_bundle clearCache];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
-(GSWElement*)templateWithName:(NSString*)aName
|
|
||||||
languages:(NSArray*)languages
|
|
||||||
{
|
|
||||||
GSWElement* element=nil;
|
|
||||||
|
|
||||||
element=[_bundle templateNamed:aName
|
|
||||||
languages:languages];
|
|
||||||
|
|
||||||
return element;
|
|
||||||
};
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)aName
|
|
||||||
ofType:(NSString*)aType
|
|
||||||
languages:(NSArray*)languages
|
|
||||||
{
|
|
||||||
NSString* path=nil;
|
|
||||||
|
|
||||||
path=[_bundle pathForResourceNamed:aName
|
|
||||||
ofType:aType
|
|
||||||
languages:languages];
|
|
||||||
|
|
||||||
return path;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// CHECKME
|
// CHECKME
|
||||||
|
|
||||||
-(GSWComponent*) _componentInstanceInContext:(GSWContext*) aContext
|
-(GSWComponent*) _componentInstanceInContext:(GSWContext*) aContext
|
||||||
|
@ -475,24 +433,9 @@ static GSWContext * TheTemporaryContext;
|
||||||
{
|
{
|
||||||
BOOL createClassesOk=NO;
|
BOOL createClassesOk=NO;
|
||||||
NSString* superClassName=nil;
|
NSString* superClassName=nil;
|
||||||
if (!WOStrictFlag)
|
|
||||||
{
|
|
||||||
// Search component archive for a superclass (superClassName keyword)
|
|
||||||
NSDictionary* archive=[_bundle archiveNamed:_name];
|
|
||||||
superClassName=[archive objectForKey:@"superClassName"];
|
|
||||||
if (superClassName)
|
|
||||||
{
|
|
||||||
if (!NSClassFromString(superClassName))
|
|
||||||
{
|
|
||||||
ExceptionRaise(NSGenericException,@"Superclass %@ of component %@ doesn't exist",
|
|
||||||
superClassName,
|
|
||||||
_name);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
// If we haven't found a superclass, use GSWComponent as the superclass
|
// If we haven't found a superclass, use GSWComponent as the superclass
|
||||||
if (!superClassName)
|
if (!superClassName)
|
||||||
superClassName=@"GSWComponent";
|
superClassName=@"WOComponent";
|
||||||
// Create class
|
// Create class
|
||||||
createClassesOk=[GSWApplication createUnknownComponentClasses:[NSArray arrayWithObject:_name]
|
createClassesOk=[GSWApplication createUnknownComponentClasses:[NSArray arrayWithObject:_name]
|
||||||
superClassName:superClassName];
|
superClassName:superClassName];
|
||||||
|
@ -518,27 +461,18 @@ static GSWContext * TheTemporaryContext;
|
||||||
return componentReference;
|
return componentReference;
|
||||||
};
|
};
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)componentAPI
|
|
||||||
{
|
|
||||||
NSDictionary* componentAPI=nil;
|
|
||||||
componentAPI=[_bundle apiNamed:_name];
|
|
||||||
|
|
||||||
return componentAPI;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(void) finishInitializingComponent:(GSWComponent*)component
|
-(void) finishInitializingComponent:(GSWComponent*)component
|
||||||
{
|
{
|
||||||
NSDictionary* archive=nil;
|
NSDictionary * archive=nil;
|
||||||
|
NSBundle * bundle = [NSBundle bundleForClass:NSClassFromString(_className)];
|
||||||
archive = [_bundle archiveNamed:_name];
|
|
||||||
|
archive = [self archive];
|
||||||
|
|
||||||
if (archive) {
|
if (archive) {
|
||||||
[_bundle initializeObject:component
|
[bundle initializeObject:component
|
||||||
fromArchive:archive];
|
fromArchive:archive];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,33 +513,161 @@ static GSWContext * TheTemporaryContext;
|
||||||
[self notImplemented: _cmd]; //TODOFN
|
[self notImplemented: _cmd]; //TODOFN
|
||||||
};
|
};
|
||||||
|
|
||||||
- (GSWElement *) template
|
/*
|
||||||
|
* returns the contents of the .woo
|
||||||
|
*/
|
||||||
|
- (NSDictionary *) archive
|
||||||
{
|
{
|
||||||
BOOL htmlChangedOnDisk = NO;
|
if ((_caching) && (_archive)) {
|
||||||
BOOL wodChangedOnDisk = NO;
|
// nothing to waste time with.
|
||||||
BOOL doCache = [self isCachingEnabled];
|
return _archive;
|
||||||
|
} else {
|
||||||
if (doCache == NO) {
|
NSFileManager * defaultManager = [NSFileManager defaultManager];
|
||||||
htmlChangedOnDisk = YES; // todo compare last chage date with load date
|
NSDictionary * attributes;
|
||||||
if (_htmlPath != nil && !htmlChangedOnDisk) {
|
NSDate * modDate;
|
||||||
wodChangedOnDisk = YES; // todo compare last chage date with load date
|
|
||||||
|
attributes = [defaultManager attributesOfItemAtPath:_wooPath error:NULL];
|
||||||
|
modDate = [attributes fileModificationDate];
|
||||||
|
|
||||||
|
|
||||||
|
// file not found.
|
||||||
|
if (!modDate) {
|
||||||
|
modDate = [NSDate date];
|
||||||
|
ASSIGN(_wooReadDate, modDate);
|
||||||
|
ASSIGN(_archive, [NSDictionary dictionary]);
|
||||||
|
return _archive;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((!_wooReadDate) || (([modDate compare:_wooReadDate] == NSOrderedDescending))) {
|
||||||
|
ASSIGN(_wooReadDate, [NSDate date]);
|
||||||
|
ASSIGN(_archive, [NSDictionary dictionaryWithContentsOfFile:_wooPath]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_htmlPath != nil && (_template == nil || htmlChangedOnDisk || wodChangedOnDisk)) {
|
return _archive;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-(NSStringEncoding) encoding
|
||||||
|
{
|
||||||
|
NSDictionary * archive = nil;
|
||||||
|
NSString * encodingName = nil;
|
||||||
|
|
||||||
|
if ((_encoding == 0)) {
|
||||||
|
|
||||||
|
_encoding = [GSWMessage defaultEncoding]; // safer, because we may not have a .woo file
|
||||||
|
|
||||||
|
archive = [self archive];
|
||||||
|
if (archive)
|
||||||
|
{
|
||||||
|
encodingName = [archive objectForKey:@"encoding"];
|
||||||
|
if (encodingName)
|
||||||
|
{
|
||||||
|
_encoding = [GSMimeDocument encodingFromCharset:encodingName];
|
||||||
|
|
||||||
|
if ((_encoding == 0)) {
|
||||||
|
[NSException raise: NSInvalidArgumentException
|
||||||
|
format: @"%s %@ -- unknown encoding '%@'",__PRETTY_FUNCTION__, _wooPath, encodingName];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return _encoding;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (GSWElement *) _lockedTemplate
|
||||||
|
{
|
||||||
|
//OK
|
||||||
|
GSWElement* template=nil;
|
||||||
|
NSStringEncoding encoding = [self encoding];
|
||||||
|
|
||||||
|
NSString* pageDefString=nil;
|
||||||
|
NSString* htmlString = [NSString stringWithContentsOfFile:_htmlPath
|
||||||
|
encoding:encoding];
|
||||||
|
|
||||||
|
if (!htmlString)
|
||||||
|
{
|
||||||
|
[NSException raise:NSInvalidArgumentException
|
||||||
|
format:@"%s: No HTML file found at '%@'",
|
||||||
|
__PRETTY_FUNCTION__, _htmlPath];
|
||||||
|
}
|
||||||
|
|
||||||
|
pageDefString = [NSString stringWithContentsOfFile:_wodPath
|
||||||
|
encoding:encoding];
|
||||||
|
|
||||||
|
if (!pageDefString) {
|
||||||
|
[NSException raise:NSInvalidArgumentException
|
||||||
|
format:@"%s: No WOD file found at '%@'",
|
||||||
|
__PRETTY_FUNCTION__, _wodPath];
|
||||||
|
}
|
||||||
|
|
||||||
NS_DURING
|
NS_DURING
|
||||||
|
{
|
||||||
|
template=[GSWTemplateParser templateNamed:_name
|
||||||
|
inFrameworkNamed:nil
|
||||||
|
withParserType:GSWTemplateParserType_Default
|
||||||
|
parserClassName:nil
|
||||||
|
withString:htmlString
|
||||||
|
encoding:encoding
|
||||||
|
fromPath:nil
|
||||||
|
declarationsString:pageDefString
|
||||||
|
languages:nil
|
||||||
|
declarationsPath:nil];
|
||||||
|
}
|
||||||
|
NS_HANDLER
|
||||||
|
{
|
||||||
|
localException=ExceptionByAddingUserInfoObjectFrameInfo0(localException,
|
||||||
|
@"In template Parsing");
|
||||||
|
[localException raise];
|
||||||
|
}
|
||||||
|
NS_ENDHANDLER;
|
||||||
|
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (GSWElement *) template
|
||||||
|
{
|
||||||
|
BOOL htmlChangedOnDisk = NO;
|
||||||
|
|
||||||
|
// _htmlReadDate
|
||||||
|
if (_caching == NO) {
|
||||||
|
htmlChangedOnDisk = YES;
|
||||||
|
} else {
|
||||||
|
NSFileManager * defaultManager = [NSFileManager defaultManager];
|
||||||
|
NSDictionary * attributes;
|
||||||
|
NSDate * modDate;
|
||||||
|
|
||||||
|
attributes = [defaultManager attributesOfItemAtPath:_wooPath error:NULL];
|
||||||
|
modDate = [attributes fileModificationDate];
|
||||||
|
|
||||||
|
if ((!_htmlReadDate) || (([modDate compare:_htmlReadDate] == NSOrderedDescending))) {
|
||||||
|
htmlChangedOnDisk = YES;
|
||||||
|
} else {
|
||||||
|
attributes = [defaultManager attributesOfItemAtPath:_wodPath error:NULL];
|
||||||
|
modDate = [attributes fileModificationDate];
|
||||||
|
|
||||||
|
if (([modDate compare:_htmlReadDate] == NSOrderedDescending)) {
|
||||||
|
htmlChangedOnDisk = YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_htmlPath != nil && (_template == nil || htmlChangedOnDisk)) {
|
||||||
|
ASSIGN(_htmlReadDate, [NSDate date]);
|
||||||
|
NS_DURING
|
||||||
[TemplateLock lock];
|
[TemplateLock lock];
|
||||||
DESTROY(_template);
|
DESTROY(_template);
|
||||||
|
|
||||||
_template = RETAIN([_bundle templateNamed: _name
|
_template = RETAIN([self _lockedTemplate]);
|
||||||
languages:nil]); // _language? array?
|
|
||||||
[TemplateLock unlock];
|
[TemplateLock unlock];
|
||||||
NS_HANDLER
|
NS_HANDLER
|
||||||
DESTROY(_template);
|
DESTROY(_template);
|
||||||
[TemplateLock unlock];
|
[TemplateLock unlock];
|
||||||
[localException raise];
|
[localException raise];
|
||||||
NS_ENDHANDLER
|
NS_ENDHANDLER
|
||||||
|
|
||||||
}
|
}
|
||||||
return _template;
|
return _template;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1519,7 +1519,7 @@ GSWEB_EXPORT BOOL GSWContext_isSenderIDSearchOver(GSWContext* aContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((queryDictionary != nil) && ([queryDictionary count] > 0)) {
|
if ((queryDictionary != nil) && ([queryDictionary count] > 0)) {
|
||||||
aQueryString = [queryDictionary encodeAsCGIFormValuesEscpaeAmpersand:escapeQueryDict];
|
aQueryString = [queryDictionary encodeAsCGIFormValuesEscapeAmpersand:escapeQueryDict];
|
||||||
}
|
}
|
||||||
|
|
||||||
url = [self _urlWithRequestHandlerKey:[[GSWApp class] directActionRequestHandlerKey]
|
url = [self _urlWithRequestHandlerKey:[[GSWApp class] directActionRequestHandlerKey]
|
||||||
|
|
|
@ -460,6 +460,7 @@ static SEL appendStringSel = NULL;
|
||||||
int tmpIndex=0;
|
int tmpIndex=0;
|
||||||
NSRange protocolEndRange;
|
NSRange protocolEndRange;
|
||||||
NSRange queryStringStartRange=[Left rangeOfString:@"?"];
|
NSRange queryStringStartRange=[Left rangeOfString:@"?"];
|
||||||
|
|
||||||
if (queryStringStartRange.length>0)
|
if (queryStringStartRange.length>0)
|
||||||
{
|
{
|
||||||
if (queryStringStartRange.location+1<[Left length])
|
if (queryStringStartRange.location+1<[Left length])
|
||||||
|
@ -527,8 +528,9 @@ static SEL appendStringSel = NULL;
|
||||||
ASSIGN(_host,[Left substringToIndex:hostEndRangeSlash.location]);
|
ASSIGN(_host,[Left substringToIndex:hostEndRangeSlash.location]);
|
||||||
//NSDebugMLLog(@"low",@"host [%@]",_host);
|
//NSDebugMLLog(@"low",@"host [%@]",_host);
|
||||||
if (hostEndRangeSlash.location+hostEndRangeSlash.length<[Left length])
|
if (hostEndRangeSlash.location+hostEndRangeSlash.length<[Left length])
|
||||||
|
{
|
||||||
Left=[Left substringFromIndex:hostEndRangeSlash.location+hostEndRangeSlash.length-1];//Keep the '/'
|
Left=[Left substringFromIndex:hostEndRangeSlash.location+hostEndRangeSlash.length-1];//Keep the '/'
|
||||||
else
|
} else
|
||||||
Left=nil;
|
Left=nil;
|
||||||
//NSDebugMLLog(@"low",@"Left [%@]",Left);
|
//NSDebugMLLog(@"low",@"Left [%@]",Left);
|
||||||
}
|
}
|
||||||
|
@ -638,13 +640,13 @@ static SEL appendStringSel = NULL;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
//NSDebugMLLog(@"low",@"url=%@",_url);
|
// NSLog(@"%s %d _url:'%@'",__PRETTY_FUNCTION__, __LINE__, _url);
|
||||||
//NSDebugMLLog(@"low",@"prefix=%@",_prefix);
|
// NSLog(@"%s %d _prefix:'%@'",__PRETTY_FUNCTION__, __LINE__, _prefix);
|
||||||
//NSDebugMLLog(@"low",@"applicationName=%@",_applicationName);
|
// NSLog(@"%s %d _applicationName:'%@'",__PRETTY_FUNCTION__, __LINE__, _applicationName);
|
||||||
//NSDebugMLLog(@"low",@"applicationNumberString=%@",_applicationNumberString);
|
// NSLog(@"%s %d _applicationNumberString:'%@'",__PRETTY_FUNCTION__, __LINE__, _applicationNumberString);
|
||||||
//NSDebugMLLog(@"low",@"requestHandlerKey=%@",_requestHandlerKey);
|
// NSLog(@"%s %d _requestHandlerKey:'%@'",__PRETTY_FUNCTION__, __LINE__, _requestHandlerKey);
|
||||||
//NSDebugMLLog(@"low",@"queryString=%@",_queryString);
|
// NSLog(@"%s %d _queryString:'%@'",__PRETTY_FUNCTION__, __LINE__, _queryString);
|
||||||
//NSDebugMLLog(@"low",@"requestHandlerPath=%@",_requestHandlerPath);
|
// NSLog(@"%s %d _requestHandlerPath:'%@'",__PRETTY_FUNCTION__, __LINE__, _requestHandlerPath);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -169,7 +169,7 @@ void _unpackHeaderLineAddToDict(NSString *line, NSMutableDictionary* headers)
|
||||||
|
|
||||||
//PRIVATE
|
//PRIVATE
|
||||||
|
|
||||||
void _appendMessageHeaders(GSWMessage * message,NSMutableString * headers)
|
void _appendMessageHeaders(GSWResponse * message,NSMutableString * headers)
|
||||||
{
|
{
|
||||||
NSMutableDictionary * headerDict = [message headers];
|
NSMutableDictionary * headerDict = [message headers];
|
||||||
NSArray * keyArray = nil;
|
NSArray * keyArray = nil;
|
||||||
|
@ -209,14 +209,17 @@ void _appendMessageHeaders(GSWMessage * message,NSMutableString * headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
//PRIVATE
|
//PRIVATE
|
||||||
void _sendMessage(GSWMessage * message, NSFileHandle* fh, NSString * httpVersion, GSWRequest * request, NSMutableString * headers)
|
void _sendMessage(GSWResponse * message, NSFileHandle* fh, NSString * httpVersion, GSWRequest * request, NSMutableString * headers)
|
||||||
{
|
{
|
||||||
int contentLength = 0;
|
int contentLength = 0;
|
||||||
BOOL keepAlive = NO;
|
BOOL keepAlive = NO;
|
||||||
BOOL requestIsHead = NO;
|
BOOL requestIsHead = NO;
|
||||||
|
NSString * eTagString = nil;
|
||||||
|
NSString * ifNoneMatchValue;
|
||||||
|
|
||||||
if (message) {
|
if (message) {
|
||||||
contentLength = [message _contentLength];
|
contentLength = [message _contentLength];
|
||||||
|
eTagString = [message headerForKey:@"ETag"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request) {
|
if (request) {
|
||||||
|
@ -225,10 +228,19 @@ void _sendMessage(GSWMessage * message, NSFileHandle* fh, NSString * httpVersion
|
||||||
keepAlive = [connectionValue isEqualToString:KEEP_ALIVE];
|
keepAlive = [connectionValue isEqualToString:KEEP_ALIVE];
|
||||||
}
|
}
|
||||||
requestIsHead = [[request method] isEqualToString:HEAD];
|
requestIsHead = [[request method] isEqualToString:HEAD];
|
||||||
|
ifNoneMatchValue = [request headerForKey:@"if-none-match"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ([ifNoneMatchValue isEqualToString:eTagString]) {
|
||||||
|
// return 304 Not Modified
|
||||||
|
[message setStatus:304];
|
||||||
|
}
|
||||||
|
|
||||||
|
[headers appendString:GSWIntToNSString([message status])];
|
||||||
|
[headers appendString:URIResponseString];
|
||||||
|
|
||||||
_appendMessageHeaders(message,headers);
|
_appendMessageHeaders(message,headers);
|
||||||
|
|
||||||
if ([httpVersion isEqualToString:HTTP11]) {
|
if ([httpVersion isEqualToString:HTTP11]) {
|
||||||
// bug #24006 keep-alive is not implemented.
|
// bug #24006 keep-alive is not implemented.
|
||||||
// I am uable to reproduce the need for double clicking on links/forms,
|
// I am uable to reproduce the need for double clicking on links/forms,
|
||||||
|
@ -239,7 +251,7 @@ void _sendMessage(GSWMessage * message, NSFileHandle* fh, NSString * httpVersion
|
||||||
[headers appendString:@"connection: keep-alive\r\n"];
|
[headers appendString:@"connection: keep-alive\r\n"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((contentLength > 0) || _alwaysAppendContentLength) {
|
if ((contentLength > 0) || _alwaysAppendContentLength) {
|
||||||
[headers appendString:CONTENT_LENGTHCOLON];
|
[headers appendString:CONTENT_LENGTHCOLON];
|
||||||
[headers appendString:[NSString stringWithFormat:@"%d\r\n", contentLength]];
|
[headers appendString:[NSString stringWithFormat:@"%d\r\n", contentLength]];
|
||||||
|
@ -249,7 +261,8 @@ void _sendMessage(GSWMessage * message, NSFileHandle* fh, NSString * httpVersion
|
||||||
[fh writeData: [headers dataUsingEncoding:NSISOLatin1StringEncoding
|
[fh writeData: [headers dataUsingEncoding:NSISOLatin1StringEncoding
|
||||||
allowLossyConversion:YES]];
|
allowLossyConversion:YES]];
|
||||||
|
|
||||||
if ((requestIsHead == NO) && (contentLength > 0)) {
|
if (((requestIsHead == NO) && (contentLength > 0)) &&
|
||||||
|
([message status] != 304)) {
|
||||||
[fh writeData: [message content]];
|
[fh writeData: [message content]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -401,7 +414,7 @@ void _sendMessage(GSWMessage * message, NSFileHandle* fh, NSString * httpVersion
|
||||||
method: [requestArray objectAtIndex:0]
|
method: [requestArray objectAtIndex:0]
|
||||||
length: contentLength];
|
length: contentLength];
|
||||||
}
|
}
|
||||||
|
|
||||||
request = [[GSWRequest alloc] initWithMethod:method
|
request = [[GSWRequest alloc] initWithMethod:method
|
||||||
uri:[requestArray objectAtIndex:1]
|
uri:[requestArray objectAtIndex:1]
|
||||||
httpVersion:[requestArray objectAtIndex:2]
|
httpVersion:[requestArray objectAtIndex:2]
|
||||||
|
@ -430,8 +443,6 @@ void _sendMessage(GSWMessage * message, NSFileHandle* fh, NSString * httpVersion
|
||||||
|
|
||||||
[bufferStr appendString:httpVersion];
|
[bufferStr appendString:httpVersion];
|
||||||
[bufferStr appendString:SPACE];
|
[bufferStr appendString:SPACE];
|
||||||
[bufferStr appendString:GSWIntToNSString([response status])];
|
|
||||||
[bufferStr appendString:URIResponseString];
|
|
||||||
|
|
||||||
_sendMessage(response, fh, httpVersion, request, bufferStr);
|
_sendMessage(response, fh, httpVersion, request, bufferStr);
|
||||||
|
|
||||||
|
|
162
GSWeb/GSWImage.m
162
GSWeb/GSWImage.m
|
@ -110,109 +110,99 @@ RCS_ID("$Id$")
|
||||||
NSString *fileNameValue;
|
NSString *fileNameValue;
|
||||||
NSString *frameworkName = nil;
|
NSString *frameworkName = nil;
|
||||||
NSString *resourceURL;
|
NSString *resourceURL;
|
||||||
|
|
||||||
resourcemanager = [GSWApp resourceManager];
|
resourcemanager = [GSWApp resourceManager];
|
||||||
component = GSWContext_component(context);
|
component = GSWContext_component(context);
|
||||||
fileNameValue = [filename valueInComponent:component];
|
fileNameValue = [filename valueInComponent:component];
|
||||||
frameworkName
|
frameworkName = [framework valueInComponent:component];
|
||||||
= [GSWHTMLDynamicElement _frameworkNameForAssociation: framework
|
|
||||||
inComponent: component];
|
|
||||||
|
|
||||||
resourceURL = [context _urlForResourceNamed: fileNameValue
|
resourceURL = [context _urlForResourceNamed: fileNameValue
|
||||||
inFramework: frameworkName];
|
inFramework: frameworkName];
|
||||||
|
|
||||||
if (resourceURL != nil)
|
if (resourceURL != nil)
|
||||||
|
{
|
||||||
|
NSString *widthStr = nil;
|
||||||
|
NSString *heightStr = nil;
|
||||||
|
BOOL calculateWidth = NO;
|
||||||
|
BOOL calculateHeight = NO;
|
||||||
|
|
||||||
|
if (width != nil)
|
||||||
{
|
{
|
||||||
NSString *widthStr = nil;
|
id widthValue;
|
||||||
NSString *heightStr = nil;
|
widthValue = [width valueInComponent:component];
|
||||||
BOOL calculateWidth = NO;
|
if (widthValue)
|
||||||
BOOL calculateHeight = NO;
|
{
|
||||||
|
widthStr = NSStringWithObject(widthValue);
|
||||||
if (width != nil || height != nil)
|
}
|
||||||
{
|
calculateWidth = (widthStr == nil || [widthStr isEqual:@"*"]);
|
||||||
if (width != nil)
|
}
|
||||||
{
|
if (height != nil)
|
||||||
id widthValue;
|
{
|
||||||
widthValue = [width valueInComponent:component];
|
id heightValue;
|
||||||
if (widthValue)
|
heightValue = [height valueInComponent:component];
|
||||||
{
|
if (heightValue)
|
||||||
widthStr = NSStringWithObject(widthValue);
|
{
|
||||||
}
|
heightStr = NSStringWithObject(heightValue);
|
||||||
calculateWidth = (widthStr == nil || [widthStr isEqual:@"*"]);
|
}
|
||||||
}
|
calculateHeight = (heightStr == nil || [heightStr isEqual:@"*"]);
|
||||||
if (height != nil)
|
}
|
||||||
{
|
|
||||||
id heightValue;
|
if (calculateWidth || calculateHeight)
|
||||||
heightValue = [height valueInComponent:component];
|
{
|
||||||
if (heightValue)
|
GSWImageInfo * imageinfo;
|
||||||
{
|
|
||||||
heightStr = NSStringWithObject(heightValue);
|
GSOnceMLog(@"%@: No height or width information provided for '%@'. If possible, this information should be provided for best performance.",
|
||||||
}
|
NSStringFromClass([self class]), fileNameValue);
|
||||||
calculateHeight = (heightStr == nil || [heightStr isEqual:@"*"]);
|
|
||||||
}
|
imageinfo = [resourcemanager _imageInfoForUrl: resourceURL
|
||||||
}
|
fileName: fileNameValue
|
||||||
else
|
framework: frameworkName
|
||||||
{
|
languages: [context languages]];
|
||||||
calculateWidth = YES;
|
if (imageinfo != nil)
|
||||||
calculateHeight = YES;
|
|
||||||
|
|
||||||
GSOnceMLog(@"%@: No height or width information provided for '%@'. If possible, this information should be provided for best performance.",
|
|
||||||
NSStringFromClass([self class]), fileNameValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (calculateWidth || calculateHeight)
|
|
||||||
{
|
|
||||||
GSWImageInfo * imageinfo;
|
|
||||||
|
|
||||||
imageinfo = [resourcemanager _imageInfoForUrl: resourceURL
|
|
||||||
fileName: fileNameValue
|
|
||||||
framework: frameworkName
|
|
||||||
languages: [context languages]];
|
|
||||||
if (imageinfo != nil)
|
|
||||||
{
|
{
|
||||||
if (calculateWidth)
|
if (calculateWidth)
|
||||||
{
|
{
|
||||||
widthStr = [imageinfo widthString];
|
widthStr = [imageinfo widthString];
|
||||||
}
|
}
|
||||||
if (calculateHeight)
|
if (calculateHeight)
|
||||||
{
|
{
|
||||||
heightStr = [imageinfo heightString];
|
heightStr = [imageinfo heightString];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NSLog(@"%@: Could not get height/width information for image at '%@' '%@' '%@'",
|
NSLog(@"%@: Could not get height/width information for image at '%@' '%@' '%@'",
|
||||||
NSStringFromClass([self class]), resourceURL,
|
NSStringFromClass([self class]), resourceURL,
|
||||||
fileNameValue, frameworkName);
|
fileNameValue, frameworkName);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
[response _appendTagAttribute: @"src"
|
|
||||||
value: resourceURL
|
|
||||||
escapingHTMLAttributeValue: NO];
|
|
||||||
|
|
||||||
if (widthStr != nil)
|
|
||||||
{
|
|
||||||
[response _appendTagAttribute: @"width"
|
|
||||||
value: widthStr
|
|
||||||
escapingHTMLAttributeValue: NO];
|
|
||||||
}
|
|
||||||
if (heightStr != nil)
|
|
||||||
{
|
|
||||||
[response _appendTagAttribute: @"height"
|
|
||||||
value: heightStr
|
|
||||||
escapingHTMLAttributeValue: NO];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
[response _appendTagAttribute: @"src"
|
||||||
|
value: resourceURL
|
||||||
|
escapingHTMLAttributeValue: NO];
|
||||||
|
|
||||||
|
if (widthStr != nil)
|
||||||
{
|
{
|
||||||
NSString *message
|
[response _appendTagAttribute: @"width"
|
||||||
= [resourcemanager errorMessageUrlForResourceNamed: fileNameValue
|
value: widthStr
|
||||||
inFramework: frameworkName];
|
escapingHTMLAttributeValue: NO];
|
||||||
[response _appendTagAttribute:@"src"
|
|
||||||
value: message
|
|
||||||
escapingHTMLAttributeValue:NO];
|
|
||||||
}
|
}
|
||||||
|
if (heightStr != nil)
|
||||||
|
{
|
||||||
|
[response _appendTagAttribute: @"height"
|
||||||
|
value: heightStr
|
||||||
|
escapingHTMLAttributeValue: NO];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NSString *message
|
||||||
|
= [resourcemanager errorMessageUrlForResourceNamed: fileNameValue
|
||||||
|
inFramework: frameworkName];
|
||||||
|
[response _appendTagAttribute:@"src"
|
||||||
|
value: message
|
||||||
|
escapingHTMLAttributeValue:NO];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// used from GSWActiveImage
|
// used from GSWActiveImage
|
||||||
|
|
|
@ -462,26 +462,20 @@ RCS_ID("$Id$")
|
||||||
GSWAssociation* actionAssociation=nil;
|
GSWAssociation* actionAssociation=nil;
|
||||||
NSArray* regions=nil;
|
NSArray* regions=nil;
|
||||||
if (_imageMapFileName)
|
if (_imageMapFileName)
|
||||||
|
{
|
||||||
|
id imageMapFileNameValue=[_imageMapFileName valueInComponent:component];
|
||||||
|
NSString* imageMapFilePath;
|
||||||
|
|
||||||
|
imageMapFilePath=[[GSWApp resourceManager] pathForResourceNamed:imageMapFileNameValue
|
||||||
|
inFramework:nil
|
||||||
|
languages:[aContext languages]];
|
||||||
|
if (imageMapFilePath)
|
||||||
|
regions=[GSWGeometricRegion geometricRegionsWithFile:imageMapFilePath];
|
||||||
|
else
|
||||||
{
|
{
|
||||||
id imageMapFileNameValue=[_imageMapFileName valueInComponent:component];
|
//NSDebugMLLog0(@"gswdync",@"GSWActiveImage No image Map.");
|
||||||
NSString* imageMapFilePath=[component
|
};
|
||||||
pathForResourceNamed:imageMapFileNameValue
|
}
|
||||||
ofType:nil];
|
|
||||||
if (!imageMapFilePath)
|
|
||||||
{
|
|
||||||
GSWResourceManager* resourceManager=[[GSWApplication application]resourceManager];
|
|
||||||
NSArray* languages=[aContext languages];
|
|
||||||
imageMapFilePath=[resourceManager pathForResourceNamed:imageMapFileNameValue
|
|
||||||
inFramework:nil
|
|
||||||
languages:languages];
|
|
||||||
};
|
|
||||||
if (imageMapFilePath)
|
|
||||||
regions=[GSWGeometricRegion geometricRegionsWithFile:imageMapFilePath];
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//NSDebugMLLog0(@"gswdync",@"GSWActiveImage No image Map.");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else if (!WOStrictFlag && _imageMapString)
|
else if (!WOStrictFlag && _imageMapString)
|
||||||
{
|
{
|
||||||
id imageMapValue=[_imageMapString valueInComponent:component];
|
id imageMapValue=[_imageMapString valueInComponent:component];
|
||||||
|
|
|
@ -57,128 +57,35 @@ GSWEB_EXPORT NSDictionary* globalMime;
|
||||||
};
|
};
|
||||||
|
|
||||||
-(NSString*)description;
|
-(NSString*)description;
|
||||||
-(void)_initFrameworkProjectBundles;
|
|
||||||
|
|
||||||
//-(NSString*)frameworkNameForPath:(NSString*)path_;
|
//-(NSString*)frameworkNameForPath:(NSString*)path_;
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)name
|
-(NSString*)pathForResourceNamed:(NSString*)name
|
||||||
inFramework:(NSString*)frameworkName
|
inFramework:(NSString*)frameworkName
|
||||||
languages:(NSArray*)languages;
|
languages:(NSArray*)languages;
|
||||||
|
|
||||||
-(NSString*)urlForResourceNamed:(NSString*)name
|
-(NSString*)urlForResourceNamed:(NSString*)name
|
||||||
inFramework:(NSString*)frameworkName
|
inFramework:(NSString*)frameworkName
|
||||||
languages:(NSArray*)languages
|
languages:(NSArray*)languages
|
||||||
request:(GSWRequest*)request;
|
request:(GSWRequest*)request;
|
||||||
-(NSString*)stringForKey:(NSString*)key_
|
|
||||||
|
/*
|
||||||
|
* Return value: string from tableName using key to look it up.
|
||||||
|
* first searches the tableName.strings file in the locale
|
||||||
|
* subdirectories. languages specifies the search order.
|
||||||
|
*/
|
||||||
|
|
||||||
|
-(NSString*)stringForKey:(NSString*)key
|
||||||
inTableNamed:(NSString*)tableName
|
inTableNamed:(NSString*)tableName
|
||||||
withDefaultValue:(NSString*)defaultValue_
|
withDefaultValue:(NSString*)defaultValue
|
||||||
inFramework:(NSString*)frameworkName
|
inFramework:(NSString*)frameworkName
|
||||||
languages:(NSArray*)languages;
|
languages:(NSArray*)languages;
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)stringsTableNamed:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)aFrameworkName
|
|
||||||
languages:(NSArray*)languages
|
|
||||||
foundLanguage:(NSString**)foundLanguagePtr;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)stringsTableNamed:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)stringsTableArrayNamed:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
-(void)lock;
|
-(void)lock;
|
||||||
|
|
||||||
-(void)unlock;
|
-(void)unlock;
|
||||||
|
|
||||||
-(NSString*)lockedStringForKey:(NSString*)key
|
|
||||||
inTableNamed:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)framework
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)lockedStringsTableNamed:(NSString*)aTableName
|
|
||||||
inFramework:(NSString*)aFrameworkName
|
|
||||||
languages:(NSArray*)languages
|
|
||||||
foundLanguage:(NSString**)foundLanguagePtr;
|
|
||||||
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSString*)lockedStringForKey:(NSString*)aKey
|
|
||||||
inTableNamed:(NSString*)aTableName
|
|
||||||
inFramework:(NSString*)aFrameworkName
|
|
||||||
languages:(NSArray*)languages
|
|
||||||
foundLanguage:(NSString**)foundLanguagePtr;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSDictionary*)lockedStringsTableNamed:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)framework
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)lockedStringsTableArrayNamed:(NSString*)aTableName
|
|
||||||
inFramework:(NSString*)aFrameworkName
|
|
||||||
languages:(NSArray*)languages
|
|
||||||
foundLanguage:(NSString**)foundLanguagePtr;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)lockedStringsTableArrayNamed:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)framework
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
-(NSString*)lockedCachedStringForKey:(NSString*)key
|
|
||||||
inTableNamed:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
language:(NSString*)language;
|
|
||||||
|
|
||||||
-(NSDictionary*)lockedCachedStringsTableWithName:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
language:(NSString*)language;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)lockedCachedStringsTableArrayWithName:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
language:(NSString*)language;
|
|
||||||
|
|
||||||
-(NSDictionary*)lockedStringsTableWithName:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
language:(NSString*)language;
|
|
||||||
|
|
||||||
//NDFN
|
|
||||||
-(NSArray*)lockedStringsTableArrayWithName:(NSString*)tableName
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
language:(NSString*)language;
|
|
||||||
|
|
||||||
-(NSString*)lockedUrlForResourceNamed:(NSString*)name
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
languages:(NSArray*)languages_
|
|
||||||
request:(GSWRequest*)request;
|
|
||||||
|
|
||||||
-(NSString*)lockedCachedURLForResourceNamed:(NSString*)name
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
-(NSString*)lockedPathForResourceNamed:(NSString*)name
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
languages:(NSArray*)languages;
|
|
||||||
|
|
||||||
/** GSWeb specific
|
|
||||||
Returns the bundle for framework named aFrameworkName or application
|
|
||||||
bundle if none is found
|
|
||||||
**/
|
|
||||||
-(GSWDeployedBundle*)cachedBundleForFrameworkNamed:(NSString*)aFrameworkName;
|
|
||||||
|
|
||||||
/** Returns the bundle for framework named aFrameworkName or application
|
|
||||||
bundle if none is found
|
|
||||||
**/
|
|
||||||
-(GSWDeployedBundle*)lockedCachedBundleForFrameworkNamed:(NSString*)name;
|
|
||||||
|
|
||||||
-(void)flushDataCache;
|
-(void)flushDataCache;
|
||||||
|
|
||||||
-(void)setURLValuedElementData:(GSWURLValuedElementData*)data;
|
|
||||||
|
|
||||||
-(void)setData:(NSData*)data
|
-(void)setData:(NSData*)data
|
||||||
forKey:(NSString*)key
|
forKey:(NSString*)key
|
||||||
mimeType:(NSString*)type
|
mimeType:(NSString*)type
|
||||||
|
@ -190,29 +97,32 @@ bundle if none is found
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)name
|
-(NSString*)pathForResourceNamed:(NSString*)name
|
||||||
inFramework:(NSString*)frameworkName
|
inFramework:(NSString*)frameworkName
|
||||||
language:(NSString*)language;
|
language:(NSString*)language;
|
||||||
-(NSString*)lockedPathForResourceNamed:(NSString*)name
|
|
||||||
inFramework:(NSString*)frameworkName
|
|
||||||
language:(NSString*)language;
|
|
||||||
-(GSWDeployedBundle*)_appProjectBundle;
|
-(GSWDeployedBundle*)_appProjectBundle;
|
||||||
-(NSArray*)_allFrameworkProjectBundles;
|
|
||||||
-(void)lockedRemoveDataForKey:(NSString*)key;
|
|
||||||
-(BOOL)_doesRequireJavaVirualMachine;
|
-(BOOL)_doesRequireJavaVirualMachine;
|
||||||
-(NSString*)_absolutePathForJavaClassPath:(NSString*)path;
|
-(NSString*)_absolutePathForJavaClassPath:(NSString*)path;
|
||||||
-(GSWURLValuedElementData*)_cachedDataForKey:(NSString*)key;
|
-(GSWURLValuedElementData*)_cachedDataForKey:(NSString*)key;
|
||||||
-(void)lockedCacheData:(GSWURLValuedElementData*)data;
|
|
||||||
-(NSString*)contentTypeForResourcePath:(NSString*)path;
|
-(NSString*)contentTypeForResourcePath:(NSString*)path;
|
||||||
-(NSArray*)_frameworkClassPaths;
|
-(NSArray*)_frameworkClassPaths;
|
||||||
|
|
||||||
|
/* Deprecated in WO 4.0.
|
||||||
|
* Use urlForResourceNamed:inFramework:languages:request: instead.
|
||||||
|
*/
|
||||||
|
|
||||||
-(NSString*)urlForResourceNamed:(NSString*)name
|
-(NSString*)urlForResourceNamed:(NSString*)name
|
||||||
inFramework:(NSString*)frameworkName;
|
inFramework:(NSString*)frameworkName GS_ATTRIB_DEPRECATED;
|
||||||
|
|
||||||
|
/* Deprecated in WO 4.0.
|
||||||
|
* Use pathForResourceNamed:inFramework:languages: instead.
|
||||||
|
*/
|
||||||
|
|
||||||
-(NSString*)pathForResourceNamed:(NSString*)name
|
-(NSString*)pathForResourceNamed:(NSString*)name
|
||||||
inFramework:(NSString*)frameworkName;
|
inFramework:(NSString*)frameworkName GS_ATTRIB_DEPRECATED;
|
||||||
|
|
||||||
+(NSString*)GSLanguageFromISOLanguage:(NSString*)ISOLanguage; //NDFN
|
+(NSString*)GSLanguageFromISOLanguage:(NSString*)ISOLanguage; //NDFN
|
||||||
+(NSArray*)GSLanguagesFromISOLanguages:(NSArray*)ISOlanguages; //NDFN
|
+(NSArray*)GSLanguagesFromISOLanguages:(NSArray*)ISOlanguages; //NDFN
|
||||||
+(NSString*)ISOLanguageFromGSLanguage:(NSString*)GSLanguage; //NDFN
|
+(NSString*)ISOLanguageFromGSLanguage:(NSString*)GSLanguage; //NDFN
|
||||||
+(NSArray*)ISOLanguagesFromGSLanguages:(NSArray*)GSlanguages; //NDFN
|
+(NSArray*)ISOLanguagesFromGSLanguages:(NSArray*)GSlanguages; //NDFN
|
||||||
+(GSWBundle*)_applicationGSWBundle;
|
|
||||||
|
|
||||||
- (NSString*) errorMessageUrlForResourceNamed:(NSString *) resourceName
|
- (NSString*) errorMessageUrlForResourceNamed:(NSString *) resourceName
|
||||||
inFramework:(NSString *) frameworkName;
|
inFramework:(NSString *) frameworkName;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -44,10 +44,6 @@
|
||||||
-(GSWResponse*)_generateResponseForData:(NSData*)aData
|
-(GSWResponse*)_generateResponseForData:(NSData*)aData
|
||||||
mimeType:(NSString*)mimeType;
|
mimeType:(NSString*)mimeType;
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
//====================================================================
|
|
||||||
@interface GSWResourceRequestHandler (GSWRequestHandlerClassAA)
|
|
||||||
+(id)handler;
|
+(id)handler;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
|
@ -38,27 +38,108 @@ RCS_ID("$Id$")
|
||||||
//====================================================================
|
//====================================================================
|
||||||
@implementation GSWResourceRequestHandler
|
@implementation GSWResourceRequestHandler
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
-(GSWResponse*)_404ResponseForPath:(NSString*)aPath
|
||||||
|
{
|
||||||
|
GSWResponse * aResponse = [GSWApp createResponseInContext:nil];
|
||||||
|
|
||||||
|
[aResponse setStatus:404];
|
||||||
|
[aResponse setHeader:@"0"
|
||||||
|
forKey:@"content-length"];
|
||||||
|
return aResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-(NSString*) _filepathForUripath:(NSString*) uri
|
||||||
|
{
|
||||||
|
// testpic.jpg
|
||||||
|
NSString * filePath = nil;
|
||||||
|
NSString * framework = nil;
|
||||||
|
NSRange range = [uri rangeOfString:@"/"];
|
||||||
|
|
||||||
|
if ((range.location == NSNotFound)) {
|
||||||
|
// app wrapper resource
|
||||||
|
framework = nil;
|
||||||
|
} else {
|
||||||
|
framework = [uri substringToIndex:range.location];
|
||||||
|
range = [uri rangeOfString:@"/"
|
||||||
|
options:NSBackwardsSearch];
|
||||||
|
if ((range.location != NSNotFound)) {
|
||||||
|
uri = [uri substringFromIndex:range.location+1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
range = [uri rangeOfString:@".."
|
||||||
|
options:NSBackwardsSearch];
|
||||||
|
|
||||||
|
if ((range.location != NSNotFound)) {
|
||||||
|
[NSException raise:NSInvalidArgumentException
|
||||||
|
format:@"Resource paths containing '..' are not accepted."];
|
||||||
|
}
|
||||||
|
|
||||||
|
range = [uri rangeOfString:@"~'"
|
||||||
|
options:NSBackwardsSearch];
|
||||||
|
|
||||||
|
if ((range.location != NSNotFound)) {
|
||||||
|
[NSException raise:NSInvalidArgumentException
|
||||||
|
format:@"Resource paths containing '~' are not accepted."];
|
||||||
|
}
|
||||||
|
|
||||||
|
range = [uri rangeOfString:@".wo"
|
||||||
|
options:NSBackwardsSearch];
|
||||||
|
|
||||||
|
if ((range.location != NSNotFound)) {
|
||||||
|
[NSException raise:NSInvalidArgumentException
|
||||||
|
format:@"Resource paths containing '.wo' are not accepted."];
|
||||||
|
}
|
||||||
|
|
||||||
|
range = [uri rangeOfString:@".wod"
|
||||||
|
options:NSBackwardsSearch];
|
||||||
|
|
||||||
|
if ((range.location != NSNotFound)) {
|
||||||
|
[NSException raise:NSInvalidArgumentException
|
||||||
|
format:@"Resource paths containing '.wod' are not accepted."];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
filePath = [[GSWApp resourceManager] pathForResourceNamed:uri
|
||||||
|
inFramework:framework
|
||||||
|
language:nil];
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
|
||||||
-(GSWResponse*)handleRequest:(GSWRequest*)aRequest
|
-(GSWResponse*)handleRequest:(GSWRequest*)aRequest
|
||||||
{
|
{
|
||||||
//OK
|
|
||||||
// /GSWeb/ObjCTest3.gswa/wr?gswdata=0
|
|
||||||
GSWResponse* response=nil;
|
GSWResponse* response=nil;
|
||||||
NSString* gswdata=nil;
|
NSString * wodataValue=nil;
|
||||||
NSDictionary* elements=nil;
|
NSDictionary * elements=nil;
|
||||||
|
NSString * uri = nil;
|
||||||
|
NSString * urlRequestHandlerPath = nil;
|
||||||
|
NSString * filePath = nil;
|
||||||
|
|
||||||
elements=[aRequest uriOrFormOrCookiesElements];
|
uri = [aRequest uri];
|
||||||
gswdata=[elements objectForKey:GSWKey_Data[GSWebNamingConv]];
|
urlRequestHandlerPath = [uri urlRequestHandlerPath];
|
||||||
|
|
||||||
if (gswdata)
|
// elements=[aRequest uriOrFormOrCookiesElements];
|
||||||
response=[self _responseForDataCachedWithKey:gswdata];
|
// gswdata=[elements objectForKey:GSWKey_Data[GSWebNamingConv]];
|
||||||
else
|
|
||||||
|
wodataValue = [aRequest stringFormValueForKey:@"wodata"];
|
||||||
|
if (wodataValue)
|
||||||
{
|
{
|
||||||
ExceptionRaise0(@"GSWResourceRequestHandler",@"No data key in request");
|
response = [self _responseForDataCachedWithKey:wodataValue];
|
||||||
};
|
} else {
|
||||||
|
filePath = [self _filepathForUripath:urlRequestHandlerPath];
|
||||||
|
|
||||||
|
response = [self _responseForDataAtPath:filePath];
|
||||||
|
}
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter] postNotificationName:DidHandleRequestNotification
|
||||||
|
object:response
|
||||||
|
userInfo:nil];
|
||||||
|
|
||||||
[response _finalizeInContext:nil];
|
[response _finalizeInContext:nil];
|
||||||
return response;
|
return response;
|
||||||
};
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(GSWResponse*)_responseForJavaClassAtPath:(NSString*)aPath
|
-(GSWResponse*)_responseForJavaClassAtPath:(NSString*)aPath
|
||||||
|
@ -70,9 +151,36 @@ RCS_ID("$Id$")
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(GSWResponse*)_responseForDataAtPath:(NSString*)aPath
|
-(GSWResponse*)_responseForDataAtPath:(NSString*)aPath
|
||||||
{
|
{
|
||||||
[self notImplemented: _cmd]; //TODOFN
|
NSUInteger fileLength = 0;
|
||||||
return nil;
|
NSString * contentType;
|
||||||
};
|
NSData * fileData;
|
||||||
|
GSWResponse * aResponse;
|
||||||
|
|
||||||
|
|
||||||
|
fileData = [NSData dataWithContentsOfFile:aPath];
|
||||||
|
|
||||||
|
if (!fileData) {
|
||||||
|
return [self _404ResponseForPath:aPath];
|
||||||
|
}
|
||||||
|
|
||||||
|
contentType = [[GSWApp resourceManager] contentTypeForResourcePath:aPath];
|
||||||
|
|
||||||
|
aResponse = [GSWApp createResponseInContext:nil];
|
||||||
|
|
||||||
|
[aResponse setStatus:200];
|
||||||
|
[aResponse setHeader:[NSString stringWithFormat:@"%d",[fileData length]]
|
||||||
|
forKey:@"content-length"];
|
||||||
|
|
||||||
|
if (contentType)
|
||||||
|
{
|
||||||
|
[aResponse setHeader:contentType
|
||||||
|
forKey:@"content-type"];
|
||||||
|
}
|
||||||
|
|
||||||
|
[aResponse setContent:fileData];
|
||||||
|
|
||||||
|
return aResponse;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
-(GSWResponse*)_responseForDataCachedWithKey:(NSString*)aKey
|
-(GSWResponse*)_responseForDataCachedWithKey:(NSString*)aKey
|
||||||
|
@ -106,10 +214,6 @@ RCS_ID("$Id$")
|
||||||
return nil;
|
return nil;
|
||||||
};
|
};
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
//====================================================================
|
|
||||||
@implementation GSWResourceRequestHandler (GSWRequestHandlerClassA)
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
+(id)handler
|
+(id)handler
|
||||||
|
|
|
@ -101,7 +101,9 @@ void GSWResponse_appendTagAttributeValueEscapingHTMLAttributeValue(GSWResponse*
|
||||||
@"text/calendar",
|
@"text/calendar",
|
||||||
@"text/x-vcalendar",
|
@"text/x-vcalendar",
|
||||||
@"text/enriched",
|
@"text/enriched",
|
||||||
@"text/directory",nil]));
|
@"text/directory",
|
||||||
|
@"image/svg+xml",
|
||||||
|
nil]));
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -277,6 +279,14 @@ void GSWResponse_appendTagAttributeValueEscapingHTMLAttributeValue(GSWResponse*
|
||||||
|
|
||||||
dataLength=[self _contentLength];
|
dataLength=[self _contentLength];
|
||||||
|
|
||||||
|
if (dataLength>0) {
|
||||||
|
NSString * eTagString = [NSString stringWithFormat:@"%lx",
|
||||||
|
(unsigned long) [_contentData hash]];
|
||||||
|
|
||||||
|
[self setHeader:eTagString
|
||||||
|
forKey:@"ETag"];
|
||||||
|
}
|
||||||
|
|
||||||
// Now we see if we can gzip the content
|
// Now we see if we can gzip the content
|
||||||
// it does not make sense to compress data less than 150 bytes.
|
// it does not make sense to compress data less than 150 bytes.
|
||||||
if ((dataLength > 150) && ([self _browserSupportsCompression:[aContext request]]))
|
if ((dataLength > 150) && ([self _browserSupportsCompression:[aContext request]]))
|
||||||
|
|
|
@ -99,7 +99,7 @@
|
||||||
@class GSWStatisticsStore;
|
@class GSWStatisticsStore;
|
||||||
@class GSWRequestHandler;
|
@class GSWRequestHandler;
|
||||||
@class GSWComponentDefinition;
|
@class GSWComponentDefinition;
|
||||||
@class GSWBundle;
|
//@class GSWBundle;
|
||||||
@class GSWMultiKeyDictionary;
|
@class GSWMultiKeyDictionary;
|
||||||
@class GSWCookie;
|
@class GSWCookie;
|
||||||
@class GSWElementID;
|
@class GSWElementID;
|
||||||
|
@ -122,7 +122,6 @@
|
||||||
@class GSWDeclaration;
|
@class GSWDeclaration;
|
||||||
@class GSWDeclarationParser;
|
@class GSWDeclarationParser;
|
||||||
@class GSWDynamicGroup;
|
@class GSWDynamicGroup;
|
||||||
@class GSWBundle;
|
|
||||||
@class GSWSessionTimeOutManager;
|
@class GSWSessionTimeOutManager;
|
||||||
@class GSWServerSessionStore;
|
@class GSWServerSessionStore;
|
||||||
@class GSWDeployedBundle;
|
@class GSWDeployedBundle;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
"tif" = "image/tiff";
|
"tif" = "image/tiff";
|
||||||
"tiff" = "image/tiff";
|
"tiff" = "image/tiff";
|
||||||
"jpeg" = "image/jpeg";
|
"jpeg" = "image/jpeg";
|
||||||
|
"svg" = "image/svg+xml";
|
||||||
|
|
||||||
// Audio types
|
// Audio types
|
||||||
"au" = "audio/basic";
|
"au" = "audio/basic";
|
||||||
|
|
|
@ -34,6 +34,7 @@ DynamicElements_GSWAPP_INFO_PLIST=Resources/Info-DynamicElements.plist
|
||||||
DynamicElements_RESOURCE_FILES = \
|
DynamicElements_RESOURCE_FILES = \
|
||||||
Resources/Info-DynamicElements.plist \
|
Resources/Info-DynamicElements.plist \
|
||||||
|
|
||||||
|
DynamicElements_WEBSERVER_RESOURCE_FILES = testpic.jpg
|
||||||
|
|
||||||
# The Objective-C source files to be compiled
|
# The Objective-C source files to be compiled
|
||||||
DynamicElements_OBJC_FILES = \
|
DynamicElements_OBJC_FILES = \
|
||||||
|
@ -53,7 +54,8 @@ PopUpButton2Page.m \
|
||||||
TextField1Page.m \
|
TextField1Page.m \
|
||||||
CheckBox1Page.m \
|
CheckBox1Page.m \
|
||||||
CheckBox2Page.m \
|
CheckBox2Page.m \
|
||||||
RadioButton1Page.m
|
RadioButton1Page.m \
|
||||||
|
ImagePage.m
|
||||||
|
|
||||||
DynamicElements_COMPONENTS = \
|
DynamicElements_COMPONENTS = \
|
||||||
Main.wo \
|
Main.wo \
|
||||||
|
@ -69,7 +71,8 @@ PopUpButton2Page.wo \
|
||||||
TextField1Page.wo \
|
TextField1Page.wo \
|
||||||
CheckBox1Page.wo \
|
CheckBox1Page.wo \
|
||||||
CheckBox2Page.wo \
|
CheckBox2Page.wo \
|
||||||
RadioButton1Page.wo
|
RadioButton1Page.wo \
|
||||||
|
ImagePage.wo
|
||||||
|
|
||||||
|
|
||||||
-include Makefile.preamble
|
-include Makefile.preamble
|
||||||
|
|
39
Testing/DynamicElements/ImagePage.h
Normal file
39
Testing/DynamicElements/ImagePage.h
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
/** ImagePage.h - <title>GSWeb Testing: Class GSWImage</title>
|
||||||
|
|
||||||
|
Copyright (C) 2010 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Written by: David Wetzel <dave@turbocat.de>
|
||||||
|
|
||||||
|
$Revision: 15261 $
|
||||||
|
$Date: 2002-12-06 06:28:27 -0800 (Fr, 06 Dez 2002) $
|
||||||
|
$Id: CheckBox2Page.h 15261 2002-12-06 14:28:27Z mguesdon $
|
||||||
|
|
||||||
|
This file is part of the GNUstep Web Library.
|
||||||
|
|
||||||
|
<license>
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with this library; if not, write to the Free
|
||||||
|
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
</license>
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _ImagePage_h__
|
||||||
|
#define _ImagePage_h__
|
||||||
|
|
||||||
|
@interface ImagePage: BasePage
|
||||||
|
{
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
||||||
|
#endif //_ImagePage_h__
|
38
Testing/DynamicElements/ImagePage.m
Normal file
38
Testing/DynamicElements/ImagePage.m
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/** ImagePage.m - <title>GSWeb Testing: Class GSWImage</title>
|
||||||
|
|
||||||
|
Copyright (C) 2010 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Written by: David Wetzel <dave@turbocat.de>
|
||||||
|
|
||||||
|
$Revision: 30689 $
|
||||||
|
$Date: 2010-06-11 18:18:12 -0700 (Fr, 11 Jun 2010) $
|
||||||
|
$Id: CheckBox2Page.m 30689 2010-06-12 01:18:12Z dwetzel $
|
||||||
|
|
||||||
|
This file is part of the GNUstep Web Library.
|
||||||
|
|
||||||
|
<license>
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with this library; if not, write to the Free
|
||||||
|
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
</license>
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include <WebObjects/WebObjects.h>
|
||||||
|
#include "BasePage.h"
|
||||||
|
#include "ImagePage.h"
|
||||||
|
|
||||||
|
|
||||||
|
@implementation ImagePage
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
14
Testing/DynamicElements/ImagePage.wo/ImagePage.html
Normal file
14
Testing/DynamicElements/ImagePage.wo/ImagePage.html
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>GSW Image Test</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>GSWImage Test 1 (Web server resources)</h2>
|
||||||
|
<br/>
|
||||||
|
<webobject name="TestImage"></webobject>
|
||||||
|
<hr/>
|
||||||
|
<webobject name="MainPageLink"></webobject>
|
||||||
|
</body>
|
||||||
|
</html>
|
11
Testing/DynamicElements/ImagePage.wo/ImagePage.wod
Normal file
11
Testing/DynamicElements/ImagePage.wo/ImagePage.wod
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
MainPageLink: WOHyperlink
|
||||||
|
{
|
||||||
|
pageName = "Main";
|
||||||
|
string = "Main Page";
|
||||||
|
}
|
||||||
|
|
||||||
|
TestImage: WOImage
|
||||||
|
{
|
||||||
|
filename = "testpic.jpg";
|
||||||
|
alt = "test";
|
||||||
|
}
|
1
Testing/DynamicElements/ImagePage.wo/ImagePage.woo
Normal file
1
Testing/DynamicElements/ImagePage.wo/ImagePage.woo
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"WebObjects Release" = "WebObjects 5.0"; encoding = NSUTF8StringEncoding; }
|
|
@ -78,6 +78,11 @@
|
||||||
pageName = "RadioButton1Page";
|
pageName = "RadioButton1Page";
|
||||||
label = "RadioButton 1";
|
label = "RadioButton 1";
|
||||||
comment = "GSWRadioButton Test 1";
|
comment = "GSWRadioButton Test 1";
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pageName = "ImagePage";
|
||||||
|
label = "Image";
|
||||||
|
comment = "GSWImage Test";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
RadioButtonList = {
|
RadioButtonList = {
|
||||||
|
|
BIN
Testing/DynamicElements/WebServerResources/testpic.jpg
Normal file
BIN
Testing/DynamicElements/WebServerResources/testpic.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
Loading…
Reference in a new issue