kune-commits
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
April 2012
- 2 participants
- 91 discussions
Author: vjrj_
Date: 2012-04-09 18:09:32 +0200 (Mon, 09 Apr 2012)
New Revision: 1829
Modified:
trunk/src/main/webapp/tutorials/blogs.svg
trunk/src/main/webapp/tutorials/lists.svg
trunk/src/main/webapp/tutorials/tasks.svg
Log:
tutorials updated
Modified: trunk/src/main/webapp/tutorials/blogs.svg
===================================================================
--- trunk/src/main/webapp/tutorials/blogs.svg 2012-04-09 07:04:40 UTC (rev 1828)
+++ trunk/src/main/webapp/tutorials/blogs.svg 2012-04-09 16:09:32 UTC (rev 1829)
@@ -48,19 +48,19 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="1.8253692"
- inkscape:cx="126.03787"
- inkscape:cy="1271.6673"
+ inkscape:zoom="1.0263357"
+ inkscape:cx="298.74718"
+ inkscape:cy="1214.2666"
inkscape:document-units="px"
- inkscape:current-layer="g20936"
+ inkscape:current-layer="layer6"
showgrid="false"
showborder="true"
inkscape:showpageshadow="false"
- inkscape:window-width="1078"
- inkscape:window-height="919"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
inkscape:window-x="0"
inkscape:window-y="24"
- inkscape:window-maximized="0" />
+ inkscape:window-maximized="1" />
<defs
id="defs4">
<marker
@@ -1834,9 +1834,55 @@
id="path3005"
style="color:#000000;fill:none;stroke:#231f20;stroke-width:1.2205478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
+ <g
+ id="g16566">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20"
+ d="m 505.19825,162.77235 0,50.0359 50,0 0,-34.41493 -4.58984,-4.58866 c 0.91075,1.85972 1.41601,3.94051 1.41601,6.15076 0,3.30067 -1.11925,6.34197 -3.02734,8.73797 -0.005,5.02762 -0.0487,17.86648 -0.0487,17.86648 l -37.5,0 c 0,0 0,-33.50814 0,-37.63676 l 17.87109,0 c 2.3881,-1.88173 5.41475,-2.97775 8.69141,-2.97775 2.22654,0 4.33103,0.49292 6.20117,1.41565 l -4.58984,-4.58866 -34.42383,0 z"
+ id="path16505" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20"
+ d="m 545.43262,183.26081 -5.34687,-5.35174 0,-5.72821 -6.28594,0 c 0,6.00689 0,7.04037 0,7.04037 0,0.94038 0.43281,1.75267 1.08594,2.33221 l 6.12812,6.12654 z"
+ id="path16507"
+ sodipodi:nodetypes="ccccsccc" />
+ <path
+ transform="matrix(5.1206514,0,0,5.1193287,442.04803,71.008174)"
+ d="m 21.480664,21.282667 a 2.7403326,2.7403326 0 1 1 -5.480665,0 2.7403326,2.7403326 0 1 1 5.480665,0 z"
+ sodipodi:ry="2.7403326"
+ sodipodi:rx="2.7403326"
+ sodipodi:cy="21.282667"
+ sodipodi:cx="18.740332"
+ id="path16509"
+ style="color:#000000;fill:none;stroke:#231f20;stroke-width:1.2205478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ </g>
+ <path
+ transform="matrix(1.9422895,0,0,1.9545274,470.35448,138.41877)"
+ d="m 34,30 a 8,8 0 1 1 -16,0 8,8 0 1 1 16,0 z"
+ sodipodi:ry="8"
+ sodipodi:rx="8"
+ sodipodi:cy="30"
+ sodipodi:cx="26"
+ id="path16591"
+ style="color:#000000;fill:#99bb00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.20000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path16593"
+ d="m 520.57662,190.80049 c 0,12.13607 0,12.50859 0,12.50859"
+ style="fill:none;stroke:#ffffff;stroke-width:6.23487616;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6.235;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 514.36148,197.05478 c 12.06009,0 12.43026,0 12.43026,0"
+ id="path16595"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
</g>
<g
- style="display:none"
+ style="display:inline"
inkscape:label="es"
id="layer7"
inkscape:groupmode="layer">
@@ -2110,138 +2156,6 @@
sodipodi:role="line">explained</tspan></text>
</g>
<g
- inkscape:groupmode="layer"
- id="g20936"
- inkscape:label="en-working"
- style="display:none">
- <text
- xml:space="preserve"
- style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="207.26842"
- y="166.0929"
- id="text20938"
- sodipodi:linespacing="125%"
- transform="scale(0.99912117,1.0008796)"><tspan
- sodipodi:role="line"
- x="207.26842"
- y="166.0929"
- style="font-size:32px;font-weight:bold;fill:#aa4400"
- id="tspan20940">blogs</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="149.85907"
- y="-168.92439"
- id="text20942"
- sodipodi:linespacing="125%"
- transform="translate(0,435.82679)"><tspan
- y="-168.92439"
- x="149.85907"
- id="tspan20944"
- sodipodi:role="line"
- style="font-style:italic">click to continue</tspan></text>
- <text
- sodipodi:linespacing="125%"
- id="text20946"
- y="409.18921"
- x="134.0341"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- id="tspan20948"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="409.18921"
- x="134.0341"
- sodipodi:role="line">Sorry, we are</tspan><tspan
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="424.18921"
- x="134.0341"
- sodipodi:role="line"
- id="tspan20950">still designing </tspan><tspan
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="439.18921"
- x="134.0341"
- sodipodi:role="line"
- id="tspan20952">this tutorial.</tspan><tspan
- id="tspan20954"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="454.18921"
- x="134.0341"
- sodipodi:role="line">Meanwhile...</tspan><tspan
- id="tspan20956"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="469.18921"
- x="134.0341"
- sodipodi:role="line" /></text>
- <text
- sodipodi:linespacing="125%"
- id="text20958"
- y="650.30011"
- x="181.83585"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="650.30011"
- x="181.83585"
- sodipodi:role="line"
- id="tspan20960" /><tspan
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="665.30011"
- x="181.83585"
- sodipodi:role="line"
- id="tspan20962">...give us your <tspan
- id="tspan20964"
- style="font-weight:bold">feedback </tspan></tspan><tspan
- id="tspan20966"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="680.30011"
- x="181.83585"
- sodipodi:role="line">and participate</tspan><tspan
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="695.30011"
- x="181.83585"
- sodipodi:role="line"
- id="tspan20968">to improve this tool...</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="154.17371"
- y="566.2572"
- id="text20970"
- sodipodi:linespacing="125%"><tspan
- id="tspan20972"
- sodipodi:role="line"
- x="154.17371"
- y="566.2572"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">...here you can create</tspan><tspan
- id="tspan20974"
- sodipodi:role="line"
- x="154.17371"
- y="581.2572"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">your new <tspan
- style="font-weight:bold"
- id="tspan20976">blogs</tspan> and</tspan><tspan
- sodipodi:role="line"
- x="154.17371"
- y="596.2572"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- id="tspan20978"><tspan
- style="font-weight:bold"
- id="tspan20980">posts</tspan>...</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="207.5244"
- y="184.92917"
- id="text20982"
- sodipodi:linespacing="125%"
- transform="scale(0.99912117,1.0008796)"><tspan
- sodipodi:role="line"
- x="207.5244"
- y="184.92917"
- style="font-size:16px;font-style:normal;font-weight:normal;fill:#aa4400"
- id="tspan20984">explained</tspan></text>
- </g>
- <g
style="display:none"
inkscape:label="fr"
id="layer9"
Modified: trunk/src/main/webapp/tutorials/lists.svg
===================================================================
--- trunk/src/main/webapp/tutorials/lists.svg 2012-04-09 07:04:40 UTC (rev 1828)
+++ trunk/src/main/webapp/tutorials/lists.svg 2012-04-09 16:09:32 UTC (rev 1829)
@@ -18,6 +18,30 @@
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="lists.svg">
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.39040741"
+ inkscape:cx="526.18109"
+ inkscape:cy="744.09448"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ showborder="true"
+ inkscape:showpageshadow="false"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3793" />
+ </sodipodi:namedview>
<!-- Start kune i18n part -->
<script
id="kunelangtable">
@@ -41,30 +65,6 @@
text { font-family: 'Ubuntu'; text-rendering: geometricPrecision; }
</style>
<!-- End kune font part -->
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.8253692"
- inkscape:cx="210.70999"
- inkscape:cy="1037.236"
- inkscape:document-units="px"
- inkscape:current-layer="svg2"
- showgrid="false"
- showborder="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="1078"
- inkscape:window-height="1867"
- inkscape:window-x="0"
- inkscape:window-y="24"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid3793" />
- </sodipodi:namedview>
<defs
id="defs4">
<marker
@@ -281,7 +281,7 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="layers"
- style="display:inline">
+ style="display:none">
<rect
y="-403.77679"
x="30.756149"
@@ -290,15 +290,15 @@
id="rect4591"
style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635472;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
<rect
- style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635472;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="rect8725"
- width="249.10905"
- height="164.02649"
- x="30.756149"
- y="-87.776787" />
+ width="489.25537"
+ height="180.40009"
+ x="227.33287"
+ y="555.18671" />
<rect
- y="197.10745"
- x="112.92581"
+ y="934.67401"
+ x="159.4111"
height="100.40426"
width="220.28499"
id="rect14204"
@@ -308,8 +308,64 @@
id="rect6444"
width="212.24748"
height="91.091072"
- x="84.837708"
- y="96.393478" />
+ x="131.323"
+ y="833.96008" />
+ <rect
+ y="355.18671"
+ x="87.33287"
+ height="140.3757"
+ width="448.32135"
+ id="rect7329"
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+ <rect
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+ id="rect7331"
+ width="448.32135"
+ height="101.26097"
+ x="87.33287"
+ y="254.30144" />
+ <rect
+ y="151.30144"
+ x="87.33287"
+ height="101.26097"
+ width="448.32135"
+ id="rect7333"
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+ <rect
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+ id="rect7335"
+ width="448.32135"
+ height="101.26097"
+ x="87.33287"
+ y="49.301437" />
+ <rect
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+ id="rect7337"
+ width="438.716"
+ height="98.532036"
+ x="557.33289"
+ y="195.18671" />
+ <rect
+ y="93.186707"
+ x="557.33289"
+ height="98.532036"
+ width="448.32135"
+ id="rect7339"
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+ <rect
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+ id="rect7341"
+ width="381.72427"
+ height="98.532036"
+ x="557.33289"
+ y="-6.8132935" />
+ <rect
+ y="-106.81329"
+ x="557.33289"
+ height="98.532036"
+ width="432.95279"
+ id="rect7343"
+ style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
</g>
<g
style="display:inline"
@@ -322,42 +378,507 @@
<polygon
transform="matrix(-1,0,0,1,240.06426,148.07327)"
style="fill:#231f20"
- points="32,4 0,4 0,0 32,0 32,4 "
+ points="0,4 0,0 32,0 32,4 32,4 "
id="polygon5" />
<polygon
transform="matrix(-1.4,0,0,1,240.06426,148.07327)"
style="fill:#231f20"
- points="0,8 20,8 20,12 20,12 0,12 "
+ points="20,8 20,12 20,12 0,12 0,8 "
id="polygon7" />
<polygon
transform="matrix(-0.875,0,0,1,240.06426,148.07327)"
style="fill:#231f20"
- points="0,20 32,20 32,24 32,24 0,24 "
+ points="32,20 32,24 32,24 0,24 0,20 "
id="polygon9" />
<polygon
transform="matrix(-1,0,0,1,240.06426,148.07327)"
style="fill:#231f20"
- points="24,32 0,32 0,28 24,28 24,32 "
+ points="0,32 0,28 24,28 24,32 24,32 "
id="polygon11" />
</g>
<path
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 174.035,690.39519 c -36.78501,6.53254 -42.5348,26.83565 -42.5348,26.83565 l -2.47152,7.12811"
+ d="m 220.52029,1427.9618 c -36.78501,6.5325 -42.5348,26.8356 -42.5348,26.8356 l -2.47152,7.1281"
id="path14206"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5858-1"
- d="m 145.09495,570.24435 c -36.78501,-6.53253 -42.5348,-26.83565 -42.5348,-26.83565 l -2.47152,-7.1281"
+ d="m 191.58024,1307.8109 c -36.78501,-6.5325 -42.5348,-26.8356 -42.5348,-26.8356 l -2.47152,-7.1281"
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- id="path3-6"
- d="m 110.34936,428.52925 v -8 h -4.734 c -0.141,-0.391 -0.289,-0.771 -0.469,-1.146 l 3.344,-3.339 -5.656,-5.661 -3.344,3.344 c -0.364,-0.172 -0.766,-0.265 -1.141,-0.406 v -4.792 h -8 v 4.792 c -0.383,0.141 -0.781,0.234 -1.145,0.406 l -3.34,-3.344 -5.66,5.661 3.34,3.339 c -0.175,0.375 -0.324,0.755 -0.461,1.146 h -4.734 v 8 h 4.734 c 0.137,0.391 0.285,0.771 0.461,1.146 l -3.34,3.339 5.66,5.661 3.34,-3.344 c 0.363,0.172 0.762,0.266 1.145,0.406 v 4.792 h 8 v -4.792 c 0.375,-0.141 0.777,-0.234 1.141,-0.406 l 3.344,3.344 5.656,-5.661 -3.344,-3.339 c 0.18,-0.375 0.328,-0.755 0.469,-1.146 h 4.734 z m -16,0.083 c -2.211,0 -4,-1.791 -4,-4 0,-2.208 1.789,-4 4,-4 2.207,0 4,1.792 4,4 0,2.209 -1.793,4 -4,4 z"
- style="fill:#231f20;display:inline"
- inkscape:connector-curvature="0" />
+ <g
+ style="display:inline"
+ id="g6999"
+ transform="translate(-352.48241,-242.57286)">
+ <g
+ transform="matrix(1.5538316,0,0,1.5636219,474.14543,752.48169)"
+ id="g3000">
+ <polygon
+ id="polygon5-4"
+ points="32,4 0,4 0,0 32,0 32,4 "
+ style="fill:#231f20"
+ transform="matrix(-1,0,0,1,32,0)" />
+ <polygon
+ id="polygon7-7"
+ points="0,8 20,8 20,12 20,12 0,12 "
+ style="fill:#231f20"
+ transform="matrix(-1.4,0,0,1,32,0)" />
+ <polygon
+ id="polygon9-3"
+ points="0,20 32,20 32,24 32,24 0,24 "
+ style="fill:#231f20"
+ transform="matrix(-0.875,0,0,1,32,0)" />
+ <polygon
+ id="polygon11-6"
+ points="24,32 0,32 0,28 24,28 24,32 "
+ style="fill:#231f20"
+ transform="matrix(-1,0,0,1,32,0)" />
+ </g>
+ <path
+ transform="matrix(1.9422895,0,0,1.9545274,454.99992,718.86382)"
+ d="m 34,30 c 0,4.418278 -3.581722,8 -8,8 -4.418278,0 -8,-3.581722 -8,-8 0,-4.418278 3.581722,-8 8,-8 4.418278,0 8,3.581722 8,8 z"
+ sodipodi:ry="8"
+ sodipodi:rx="8"
+ sodipodi:cy="30"
+ sodipodi:cx="26"
+ id="path4645"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#99bb00;stroke-width:3.20000005;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path5203"
+ d="m 505.22206,771.24554 c 0,12.13607 0,12.50859 0,12.50859"
+ style="fill:none;stroke:#99bb00;stroke-width:6.23487616;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#99bb00;stroke-width:6.23487616;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 499.00692,777.49983 c 12.06009,0 12.43026,0 12.43026,0"
+ id="path5205"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <rect
+ y="397.68146"
+ x="602.09045"
+ height="19.296482"
+ width="27.9799"
+ id="rect14110"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <g
+ style="display:inline"
+ id="g6978"
+ transform="translate(97.51759,-22.57286)">
+ <g
+ transform="translate(60.457286,-31.551835)"
+ id="g14090"
+ style="display:inline">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14084"
+ width="27.9799"
+ height="19.296482"
+ x="431.11557"
+ y="408.56085" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#7b0099;display:inline"
+ d="m 429.13971,406.7408 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14086" />
+ </g>
+ <g
+ transform="translate(8,-21)"
+ id="g5924">
+ <rect
+ y="410.25433"
+ x="495.57285"
+ height="19.296482"
+ width="27.9799"
+ id="rect5918"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path5920"
+ d="m 493.597,408.43427 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ style="fill:#d40000;display:inline"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ id="g6964"
+ transform="translate(97.51759,-2.57286)">
+ <g
+ transform="translate(-6.7336683,-18.291457)"
+ id="g14010">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14008"
+ width="27.9799"
+ height="19.296482"
+ x="497.84924"
+ y="468.85229" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20;display:inline"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14006" />
+ </g>
+ <g
+ transform="translate(17.266332,-8.291457)"
+ id="g14020">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14022"
+ width="27.9799"
+ height="19.296482"
+ x="497.84924"
+ y="468.85229" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20;display:inline"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14024" />
+ </g>
+ <g
+ transform="translate(-14.733668,12.708543)"
+ id="g14026">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14028"
+ width="27.9799"
+ height="19.296482"
+ x="497.84924"
+ y="468.85229" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20;display:inline"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14030" />
+ </g>
+ <g
+ id="g14014"
+ transform="translate(3.2663317,-0.291457)">
+ <rect
+ y="468.85229"
+ x="497.84924"
+ height="19.296482"
+ width="27.9799"
+ id="rect14016"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path14018"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ style="fill:#231f20;display:inline"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ id="g6986"
+ transform="translate(97.51759,-2.57286)">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14034"
+ width="27.9799"
+ height="19.296482"
+ x="490.11557"
+ y="650.56085" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#e6e6e6;display:inline"
+ d="m 488.13971,648.7408 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14036" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14040"
+ width="27.9799"
+ height="19.296482"
+ x="514.1156"
+ y="660.56085" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ececec;display:inline"
+ d="m 512.13971,658.7408 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14042" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14046"
+ width="27.9799"
+ height="19.296482"
+ x="482.11557"
+ y="681.56085" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#cccccc;display:inline"
+ d="m 480.13971,679.7408 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14048" />
+ <rect
+ y="668.56085"
+ x="500.11557"
+ height="19.296482"
+ width="27.9799"
+ id="rect14052"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path14054"
+ d="m 498.13971,666.7408 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ style="fill:#e6e6e6;display:inline"
+ inkscape:connector-curvature="0" />
+ <g
+ transform="translate(12.266332,219.70854)"
+ id="g14064">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14066"
+ width="27.9799"
+ height="19.296482"
+ x="497.84924"
+ y="468.85229" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20;display:inline"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14068" />
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:2.62818265px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="571.67639"
+ y="548.42993"
+ id="text5928"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5988"
+ x="571.67639"
+ y="548.42993"
+ style="fill:#ff0000">> Can you present your report an hour later?</tspan><tspan
+ sodipodi:role="line"
+ id="tspan5990"
+ x="571.67639"
+ y="551.71515" /><tspan
+ sodipodi:role="line"
+ id="tspan5992"
+ x="571.67639"
+ y="555.00037"
+ style="fill:#000000">Yes I can. The summary will be sent no later than 5pm.</tspan><tspan
+ sodipodi:role="line"
+ id="tspan5994"
+ x="571.67639"
+ y="558.28564"
+ style="fill:#000000">Jim</tspan><tspan
+ sodipodi:role="line"
+ id="tspan5996"
+ x="571.67639"
+ y="561.57086" /><tspan
+ sodipodi:role="line"
+ id="tspan5998"
+ x="571.67639"
+ y="564.85608"
+ style="fill:#0000ff">At 10.01am Wednesday, Danny wrote:</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6000"
+ x="571.67639"
+ y="568.1413"
+ style="fill:#0000ff">>> 2.00pm: Present report</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6002"
+ x="571.67639"
+ y="571.42651"
+ style="fill:#ff0000">> Jim, I have a meeting at that time. </tspan><tspan
+ sodipodi:role="line"
+ id="tspan6004"
+ x="571.67639"
+ y="574.71173"
+ style="fill:#ff0000">></tspan><tspan
+ sodipodi:role="line"
+ id="tspan6006"
+ x="571.67639"
+ y="577.99701"
+ style="fill:#0000ff">>> 4.30pm: Send out summary of feedback</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6008"
+ x="571.67639"
+ y="581.28223"
+ style="fill:#ff0000">> Also if you do the above, this may need to happen.</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6010"
+ x="571.67639"
+ y="584.56744"
+ style="fill:#ff0000">> Danny</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6012"
+ x="571.67639"
+ y="587.85266"
+ style="fill:#ff0000">></tspan><tspan
+ sodipodi:role="line"
+ id="tspan6014"
+ x="571.67639"
+ y="591.13788"
+ style="fill:#ff0000">> At 9.40am Wednesday, Jim wrote:</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6016"
+ x="571.67639"
+ y="594.42316"
+ style="fill:#0000ff">>> My schedule for today will be:</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6018"
+ x="571.67639"
+ y="597.70837"
+ style="fill:#0000ff">>> 10.00am: Gather data for report</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6020"
+ x="571.67639"
+ y="600.99359"
+ style="fill:#0000ff">>> 2.00pm: Present report to team</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6022"
+ x="571.67639"
+ y="604.27881"
+ style="fill:#0000ff">>> 4.30pm: Send out summary of feedback</tspan><tspan
+ sodipodi:role="line"
+ id="tspan6024"
+ x="571.67639"
+ y="607.56403"
+ style="fill:#0000ff">>> Jim</tspan></text>
+ <g
+ style="display:inline"
+ id="g7010"
+ transform="translate(-352.48241,-222.57286)">
+ <polygon
+ transform="matrix(-1.5625,0,0,1.5636219,526.5,849.15307)"
+ style="fill:#99bb00;fill-opacity:1;display:inline"
+ points="32,4 0,4 0,0 32,0 32,4 "
+ id="polygon4303" />
+ <text
+ xml:space="preserve"
+ style="font-size:8.50789261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="476.79333"
+ y="844.08685"
+ id="text5297"
+ sodipodi:linespacing="125%"><tspan
+ style="font-weight:bold"
+ sodipodi:role="line"
+ id="tspan5307"
+ x="476.79333"
+ y="844.08685">Last news</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g7018"
+ transform="translate(-352.48241,-212.57286)">
+ <polygon
+ id="polygon4340"
+ points="0,4 0,0 32,0 32,4 32,4 "
+ style="fill:#231f20;display:inline"
+ transform="matrix(-1.5625,0,0,1.5636219,526.5,932.15307)" />
+ <polygon
+ id="polygon4342"
+ points="20,8 20,12 20,12 0,12 0,8 "
+ style="fill:#99bb00;fill-opacity:1;display:inline"
+ transform="matrix(-2.1875,0,0,1.5636219,526.5,932.15307)" />
+ <polygon
+ id="polygon4344"
+ points="32,20 32,24 32,24 0,24 0,20 "
+ style="fill:#99bb00;fill-opacity:1;display:inline"
+ transform="matrix(-1.3671875,0,0,1.5636219,526.5,932.15307)" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5372"
+ y="928.08685"
+ x="476.79333"
+ style="font-size:8.50789261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="928.08685"
+ x="476.79333"
+ id="tspan5374"
+ sodipodi:role="line"
+ style="font-weight:bold">Last news</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g7029"
+ transform="translate(-352.48241,-212.57286)">
+ <polygon
+ id="polygon3431"
+ points="32,0 32,4 32,4 0,4 0,0 "
+ style="fill:#231f20;display:inline"
+ transform="matrix(-1.5625,0,0,1.5636219,526.5,1051.1531)" />
+ <polygon
+ id="polygon3433"
+ points="20,12 0,12 0,8 20,8 20,12 "
+ style="fill:#231f20;display:inline"
+ transform="matrix(-2.1875,0,0,1.5636219,526.5,1051.1531)" />
+ <polygon
+ id="polygon3435"
+ points="32,24 0,24 0,20 32,20 32,24 "
+ style="fill:#231f20;display:inline"
+ transform="matrix(-1.3671875,0,0,1.5636219,526.5,1051.1531)" />
+ <polygon
+ id="polygon3437"
+ points="24,28 24,32 24,32 0,32 0,28 "
+ style="fill:#99bb00;fill-opacity:1;display:inline"
+ transform="matrix(-1.5625,0,0,1.5636219,526.5,1051.1531)" />
+ <text
+ xml:space="preserve"
+ style="font-size:8.50789261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="476.79333"
+ y="1047.0869"
+ id="text5376"
+ sodipodi:linespacing="125%"><tspan
+ style="font-weight:bold"
+ sodipodi:role="line"
+ id="tspan5378"
+ x="476.79333"
+ y="1047.0869">Last news</tspan></text>
+ </g>
+ <g
+ transform="translate(200.03869,532.47169)"
+ id="g23010"
+ style="display:inline">
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:none;stroke:#231f20;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path22183"
+ sodipodi:cx="-18.305084"
+ sodipodi:cy="3.6610169"
+ sodipodi:rx="5.1525426"
+ sodipodi:ry="5.1525426"
+ d="m -13.152542,3.6610169 c 0,2.8456707 -2.306872,5.1525426 -5.152542,5.1525426 -2.845671,0 -5.152543,-2.3068719 -5.152543,-5.1525426 0,-2.84567065 2.306872,-5.1525426 5.152543,-5.1525426 2.84567,0 5.152542,2.30687195 5.152542,5.1525426 z"
+ transform="matrix(1.7017328,0,0,1.7017328,109.33073,517.00513)" />
+ <path
+ transform="matrix(1.7017328,0,0,1.7017328,109.33073,548.30382)"
+ d="m -13.152542,3.6610169 c 0,2.8456707 -2.306872,5.1525426 -5.152542,5.1525426 -2.845671,0 -5.152543,-2.3068719 -5.152543,-5.1525426 0,-2.84567065 2.306872,-5.1525426 5.152543,-5.1525426 2.84567,0 5.152542,2.30687195 5.152542,5.1525426 z"
+ sodipodi:ry="5.1525426"
+ sodipodi:rx="5.1525426"
+ sodipodi:cy="3.6610169"
+ sodipodi:cx="-18.305084"
+ id="path22953"
+ style="color:#000000;fill:none;stroke:#231f20;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:none;stroke:#231f20;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path22955"
+ sodipodi:cx="-18.305084"
+ sodipodi:cy="3.6610169"
+ sodipodi:rx="5.1525426"
+ sodipodi:ry="5.1525426"
+ d="m -13.152542,3.6610169 c 0,2.8456707 -2.306872,5.1525426 -5.152542,5.1525426 -2.845671,0 -5.152543,-2.3068719 -5.152543,-5.1525426 0,-2.84567065 2.306872,-5.1525426 5.152543,-5.1525426 2.84567,0 5.152542,2.30687195 5.152542,5.1525426 z"
+ transform="matrix(1.7017328,0,0,1.7017328,140.62945,532.72866)" />
+ <path
+ style="fill:none;stroke:#231f20;stroke-width:6.95526648;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 85.751365,551.08812 16.213515,-8.01698"
+ id="path22957"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path22959"
+ d="m 85.751365,525.68297 16.213515,8.01699"
+ style="fill:#231f20;fill-opacity:1;stroke:#231f20;stroke-width:6.95526648;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ </g>
</g>
<g
- style="display:inline"
+ style="display:none"
inkscape:label="es"
id="layer7"
inkscape:groupmode="layer">
@@ -407,242 +928,312 @@
style="font-style:italic">pulsa con tu ratón para continuar</tspan></text>
<text
sodipodi:linespacing="125%"
- id="text3071-9-1"
- y="406.39865"
- x="135.67761"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- id="tspan13782-8"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="406.39865"
- x="135.67761"
- sodipodi:role="line">Lo siento, estamos</tspan><tspan
- id="tspan8780"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="421.39865"
- x="135.67761"
- sodipodi:role="line">diseñando este</tspan><tspan
- id="tspan8782"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="436.39865"
- x="135.67761"
- sodipodi:role="line">tutorial.</tspan><tspan
- id="tspan8870"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="451.39865"
- x="135.67761"
- sodipodi:role="line">Mientras tanto...</tspan><tspan
- id="tspan8784"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="466.39865"
- x="135.67761"
- sodipodi:role="line" /></text>
- <text
- sodipodi:linespacing="125%"
id="text14208"
- y="650.30011"
- x="181.83585"
+ y="1387.8667"
+ x="228.32114"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="650.30011"
- x="181.83585"
+ y="1387.8667"
+ x="228.32114"
sodipodi:role="line"
id="tspan14210" /><tspan
style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="665.30011"
- x="181.83585"
+ y="1402.8667"
+ x="228.32114"
sodipodi:role="line"
id="tspan14214">...darnos tu <tspan
id="tspan14216"
style="font-weight:bold">feedback </tspan></tspan><tspan
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="680.30011"
- x="181.83585"
+ y="1417.8667"
+ x="228.32114"
sodipodi:role="line"
id="tspan14218">y participar para </tspan><tspan
id="tspan14220"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="695.30011"
- x="181.83585"
+ y="1432.8667"
+ x="228.32114"
sodipodi:role="line">mejorar esta </tspan><tspan
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="710.30011"
- x="181.83585"
+ y="1447.8667"
+ x="228.32114"
sodipodi:role="line"
id="tspan14222">herramienta...</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="154.17371"
- y="566.2572"
+ x="200.659"
+ y="1303.8237"
id="text6446"
sodipodi:linespacing="125%"><tspan
id="tspan14200"
sodipodi:role="line"
- x="154.17371"
- y="566.2572"
+ x="200.659"
+ y="1303.8237"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">...aquí puedes crear </tspan><tspan
id="tspan14247"
sodipodi:role="line"
- x="154.17371"
- y="581.2572"
+ x="200.659"
+ y="1318.8237"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">nuevas <tspan
style="font-weight:bold"
id="tspan18194">listas</tspan> y </tspan><tspan
id="tspan14251"
sodipodi:role="line"
- x="154.17371"
- y="596.2572"
+ x="200.659"
+ y="1333.8237"
style="font-size:12px;font-style:normal;font-weight:bold;fill:#aa4400"><tspan
id="tspan8937"
style="font-weight:normal"><tspan
style="font-weight:bold"
- id="tspan18196">mensajes</tspan>...</tspan></tspan></text>
- </g>
- <g
- inkscape:groupmode="layer"
- id="g22147"
- inkscape:label="en-working"
- style="display:none">
- <g
- style="display:inline"
- id="g22149"
- transform="translate(106.00677,59.44173)">
- <text
- xml:space="preserve"
- style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="101.1684"
- y="122.68937"
- id="text22151"
- sodipodi:linespacing="125%"
- transform="scale(0.99912117,1.0008796)"><tspan
- sodipodi:role="line"
- x="101.1684"
- y="122.68937"
- style="font-size:32px;font-weight:bold;fill:#aa4400"
- id="tspan22153">listas</tspan></text>
- <text
- transform="scale(0.99912117,1.0008796)"
- sodipodi:linespacing="125%"
- id="text22155"
- y="95.114334"
- x="101.42439"
- style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- id="tspan22157"
- style="font-size:16px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="95.114334"
- x="101.42439"
- sodipodi:role="line">explicando las</tspan></text>
- </g>
+ id="tspan15042">posts</tspan>...</tspan></tspan></text>
<text
- transform="translate(0,435.82679)"
sodipodi:linespacing="125%"
- id="text22159"
- y="-168.92439"
- x="149.85907"
+ id="text15572"
+ y="1043.8451"
+ x="342.73889"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- style="font-style:italic"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ y="1043.8451"
+ x="342.73889"
sodipodi:role="line"
- id="tspan22161"
- x="149.85907"
- y="-168.92439">pulsa con tu ratón para continuar</tspan></text>
+ id="tspan13522">Más ventajas: éste es un sistema <tspan
+ id="tspan24241"
+ style="font-weight:bold">descentralizado </tspan>que</tspan><tspan
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ y="1058.8451"
+ x="342.73889"
+ sodipodi:role="line"
+ id="tspan13695">mantiene tu privacidad. Es decir, que al usarlo y tener </tspan><tspan
+ id="tspan21344"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ y="1073.8451"
+ x="342.73889"
+ sodipodi:role="line">aquí tu lista de contactos, ésta estará en un sistema </tspan><tspan
+ id="tspan15585"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ y="1088.8451"
+ x="342.73889"
+ sodipodi:role="line">que te dé confianza (como quizás éste), mientras que </tspan><tspan
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ y="1103.8451"
+ x="342.73889"
+ sodipodi:role="line"
+ id="tspan13553">a su vez te puedes comunicar con usuarios/as que </tspan><tspan
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ y="1118.8451"
+ x="342.73889"
+ sodipodi:role="line"
+ id="tspan13557">hayan elegido otros sistemas fuera de este sitio</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="135.67761"
- y="406.39865"
- id="text22163"
+ x="664.62036"
+ y="364.18488"
+ id="text7345"
sodipodi:linespacing="125%"><tspan
+ y="364.18488"
+ x="664.62036"
+ id="tspan7347"
+ sodipodi:role="line"><tspan
+ id="tspan7349"
+ style="font-weight:bold">Las listas de correo</tspan> (o los Grupos de Google/Yahoo) </tspan><tspan
+ y="379.18488"
+ x="664.62036"
+ id="tspan7351"
+ sodipodi:role="line">se usan a menudo por los grupos para <tspan
+ style="font-weight:bold"
+ id="tspan7545">debatir </tspan></tspan><tspan
+ y="394.18488"
+ x="664.62036"
+ id="tspan7355"
+ sodipodi:role="line">diferentes asuntos sobre un <tspan
+ style="font-weight:bold"
+ id="tspan7549">tema </tspan>específico</tspan><tspan
+ y="409.18488"
+ x="664.62036"
+ id="tspan7359"
+ sodipodi:role="line" /></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7361"
+ y="454.18488"
+ x="664.62036"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="454.18488"
+ x="664.62036"
+ id="tspan7363"
+ sodipodi:role="line">Sin embargo, frecuentemente generan </tspan><tspan
+ y="469.18488"
+ x="664.62036"
sodipodi:role="line"
- x="135.67761"
- y="406.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan22165">Lo siento, estamos</tspan><tspan
+ id="tspan7551"><tspan
+ style="font-weight:bold"
+ id="tspan7555"><tspan
+ style="font-weight:normal"
+ id="tspan15040">mucha </tspan>cantidad de correos</tspan> muy rápidamente. </tspan><tspan
+ y="484.18488"
+ x="664.62036"
+ id="tspan7369"
+ sodipodi:role="line">>> Además cada respuesta </tspan><tspan
+ y="499.18488"
+ x="664.62036"
sodipodi:role="line"
- x="135.67761"
- y="421.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan22167">diseñando este</tspan><tspan
+ id="tspan7563">>> debe citar lo que otros </tspan><tspan
+ y="514.18488"
+ x="664.62036"
sodipodi:role="line"
- x="135.67761"
- y="436.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan22169">tutorial.</tspan><tspan
- sodipodi:role="line"
- x="135.67761"
- y="451.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan22171">Mientras tanto...</tspan><tspan
- sodipodi:role="line"
- x="135.67761"
- y="466.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan22173" /></text>
+ id="tspan7565">>> han dicho antes</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="181.83585"
- y="650.30011"
- id="text22175"
+ x="659.97186"
+ y="566.67566"
+ id="text7371"
sodipodi:linespacing="125%"><tspan
- id="tspan22177"
- sodipodi:role="line"
- x="181.83585"
- y="650.30011"
- style="font-size:12px;font-weight:normal;fill:#aa4400" /><tspan
- id="tspan22179"
- sodipodi:role="line"
- x="181.83585"
- y="665.30011"
- style="font-size:12px;font-weight:normal;fill:#aa4400">...darnos tu <tspan
+ y="566.67566"
+ x="659.97186"
+ id="tspan7377"
+ sodipodi:role="line">El resultado es frecuentemente un <tspan
style="font-weight:bold"
- id="tspan22181">feedback </tspan></tspan><tspan
- id="tspan22183"
+ id="tspan7571">lío de leer</tspan> y <tspan
+ id="tspan7379"
+ style="font-weight:bold">organizar </tspan></tspan><tspan
+ y="581.67566"
+ x="659.97186"
+ id="tspan7381"
+ sodipodi:role="line">(con gente escribiendo en otros colores, respondiendo </tspan><tspan
+ y="596.67566"
+ x="659.97186"
sodipodi:role="line"
- x="181.83585"
- y="680.30011"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">y participar para </tspan><tspan
- sodipodi:role="line"
- x="181.83585"
- y="695.30011"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- id="tspan22185">mejorar esta </tspan><tspan
- id="tspan22187"
- sodipodi:role="line"
- x="181.83585"
- y="710.30011"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">herramienta...</tspan></text>
+ id="tspan7581">correos antiguos, etc)</tspan></text>
<text
sodipodi:linespacing="125%"
- id="text22189"
- y="566.2572"
- x="154.17371"
+ id="text7383"
+ y="665.2594"
+ x="659.97186"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="566.2572"
- x="154.17371"
+ y="665.2594"
+ x="659.97186"
+ id="tspan7385"
+ sodipodi:role="line">Aún peor: si el asunto <tspan
+ style="font-weight:bold"
+ id="tspan7610">se retoma</tspan> después de unos meses,</tspan><tspan
+ y="680.2594"
+ x="659.97186"
+ id="tspan7389"
+ sodipodi:role="line">necesitamos repetir lo que se dijo anteriormente,</tspan><tspan
+ y="695.2594"
+ x="659.97186"
+ style="font-weight:bold"
+ id="tspan7393"
+ sodipodi:role="line"><tspan
+ id="tspan7621"
+ style="font-weight:normal">buscando correos antiguos o </tspan>repitiendo discusiones</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="199.97188"
+ y="517.69958"
+ id="text7395"
+ sodipodi:linespacing="125%"><tspan
+ y="517.69958"
+ x="199.97188"
+ id="tspan7397"
+ sodipodi:role="line">Nuestras listas <tspan
+ id="tspan7399"
+ style="font-weight:bold">no usan correos electrónicos</tspan>, </tspan><tspan
+ y="532.69958"
+ x="199.97188"
+ id="tspan7401"
+ sodipodi:role="line">sino el mismo sistema avanzado que el resto. </tspan><tspan
+ y="547.69958"
+ x="199.97188"
+ id="tspan7403"
+ sodipodi:role="line">Puedes fácilmente <tspan
+ id="tspan7405"
+ style="font-weight:bold">crear</tspan> y <tspan
+ id="tspan7407"
+ style="font-weight:bold">suscribirte </tspan></tspan><tspan
+ y="562.69958"
+ x="199.97188"
+ id="tspan7409"
+ sodipodi:role="line">a una lista en tus grupos</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7411"
+ y="627.69958"
+ x="199.97188"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="627.69958"
+ x="199.97188"
+ id="tspan7413"
+ sodipodi:role="line">Sin embargo, cada vez que una persona <tspan
+ id="tspan7415"
+ style="font-weight:bold">comienza</tspan></tspan><tspan
+ y="642.69958"
+ x="199.97188"
+ id="tspan7421"
+ sodipodi:role="line">una discusión, <tspan
+ id="tspan7419"
+ style="font-weight:bold;fill:#99bb00">crea un <tspan
+ style="font-style:italic"
+ id="tspan7515">post</tspan></tspan> con un título (parecido </tspan><tspan
+ y="657.69958"
+ x="199.97188"
sodipodi:role="line"
- id="tspan22191">...aquí puedes crear </tspan><tspan
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="581.2572"
- x="154.17371"
+ id="tspan7513">al "asunto" de los correos electrónicos)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="199.97188"
+ y="843.69958"
+ id="text7423"
+ sodipodi:linespacing="125%"><tspan
+ y="843.69958"
+ x="199.97188"
+ id="tspan7425"
+ sodipodi:role="line">Si la discusión retorna tras unos meses, </tspan><tspan
+ y="858.69958"
+ x="199.97188"
+ id="tspan7427"
+ sodipodi:role="line">cualquiera puede ir al <tspan
+ style="font-style:italic;font-weight:bold"
+ id="tspan7531">post anterior</tspan></tspan><tspan
+ y="873.69958"
+ x="199.97188"
+ id="tspan7429"
+ sodipodi:role="line">y <tspan
+ id="tspan7433"
+ style="font-weight:bold;fill:#99bb00">actualizarlo</tspan>, sin generar nuevos posts, </tspan><tspan
+ y="888.69958"
+ x="199.97188"
+ id="tspan7437"
+ sodipodi:role="line">y manteniéndolo todo organizado </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="199.97188"
+ y="727.69958"
+ id="text7439"
+ sodipodi:linespacing="125%"><tspan
+ id="tspan7445"
+ y="727.69958"
+ x="199.97188"
+ sodipodi:role="line">Otros/as usuarios/as pueden discutir y <tspan
+ id="tspan7443"
+ style="font-weight:bold;fill:#99bb00">comentar</tspan></tspan><tspan
+ y="742.69958"
+ x="199.97188"
sodipodi:role="line"
- id="tspan22193">nuevas <tspan
- id="tspan22195"
- style="font-weight:bold">listas</tspan> y </tspan><tspan
- style="font-size:12px;font-style:normal;font-weight:bold;fill:#aa4400"
- y="596.2572"
- x="154.17371"
- sodipodi:role="line"
- id="tspan22197"><tspan
- style="font-weight:normal"
- id="tspan22199"><tspan
- id="tspan22201"
- style="font-weight:bold">mensajes</tspan>...</tspan></tspan></text>
+ id="tspan7447">el mismo <tspan
+ style="font-style:italic"
+ id="tspan7525">post</tspan>, sin generar nuevos documentos</tspan></text>
</g>
<g
style="display:none"
@@ -653,13 +1244,13 @@
transform="scale(0.99912117,1.0008796)"
sodipodi:linespacing="125%"
id="text11705"
- y="166.0929"
+ y="183.8967"
x="207.26842"
style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
id="tspan11707"
style="font-size:32px;font-weight:bold;fill:#aa4400"
- y="166.0929"
+ y="183.8967"
x="207.26842"
sodipodi:role="line">lists</tspan></text>
<text
@@ -674,91 +1265,59 @@
sodipodi:role="line"
id="tspan11715"
x="149.85907"
- y="-168.92439">click to continue</tspan></text>
+ y="-168.92439">Mouse click to continue</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="134.0341"
- y="409.18921"
- id="text11717"
- sodipodi:linespacing="125%"><tspan
- sodipodi:role="line"
- x="134.0341"
- y="409.18921"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan11719">Sorry, we are</tspan><tspan
- id="tspan11791"
- sodipodi:role="line"
- x="134.0341"
- y="424.18921"
- style="font-size:12px;font-weight:normal;fill:#aa4400">still designing </tspan><tspan
- id="tspan11793"
- sodipodi:role="line"
- x="134.0341"
- y="439.18921"
- style="font-size:12px;font-weight:normal;fill:#aa4400">this tutorial.</tspan><tspan
- sodipodi:role="line"
- x="134.0341"
- y="454.18921"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan11725">Meanwhile...</tspan><tspan
- sodipodi:role="line"
- x="134.0341"
- y="469.18921"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan11727" /></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="181.83585"
- y="650.30011"
+ x="228.32114"
+ y="1387.8667"
id="text11729"
sodipodi:linespacing="125%"><tspan
id="tspan11731"
sodipodi:role="line"
- x="181.83585"
- y="650.30011"
+ x="228.32114"
+ y="1387.8667"
style="font-size:12px;font-weight:normal;fill:#aa4400" /><tspan
id="tspan11733"
sodipodi:role="line"
- x="181.83585"
- y="665.30011"
+ x="228.32114"
+ y="1402.8667"
style="font-size:12px;font-weight:normal;fill:#aa4400">...give us your <tspan
style="font-weight:bold"
id="tspan11735">feedback </tspan></tspan><tspan
sodipodi:role="line"
- x="181.83585"
- y="680.30011"
+ x="228.32114"
+ y="1417.8667"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
id="tspan11739">and participate</tspan><tspan
id="tspan11741"
sodipodi:role="line"
- x="181.83585"
- y="695.30011"
+ x="228.32114"
+ y="1432.8667"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">to improve this tool...</tspan></text>
<text
sodipodi:linespacing="125%"
id="text11743"
- y="566.2572"
- x="154.17371"
+ y="1303.8237"
+ x="200.659"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="566.2572"
- x="154.17371"
+ y="1303.8237"
+ x="200.659"
sodipodi:role="line"
id="tspan11745">...here you can create</tspan><tspan
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="581.2572"
- x="154.17371"
+ y="1318.8237"
+ x="200.659"
sodipodi:role="line"
id="tspan11751">your new <tspan
style="font-weight:bold"
id="tspan18192">lists</tspan> and</tspan><tspan
id="tspan11814"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="596.2572"
- x="154.17371"
+ y="1333.8237"
+ x="200.659"
sodipodi:role="line"><tspan
id="tspan11816"
style="font-weight:bold">posts</tspan>...</tspan></text>
@@ -766,18 +1325,268 @@
transform="scale(0.99912117,1.0008796)"
sodipodi:linespacing="125%"
id="text11787"
- y="184.92917"
+ y="152.74188"
x="207.5244"
style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
id="tspan11789"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="184.92917"
+ y="152.74188"
x="207.5244"
- sodipodi:role="line">explained</tspan></text>
+ sodipodi:role="line">explaining the</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3291-7"
+ y="364.18488"
+ x="664.62036"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan3288"
+ x="664.62036"
+ y="364.18488"><tspan
+ style="font-weight:bold"
+ id="tspan5445">Mailing lists</tspan> (or Google/Yahoo Groups) </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3290"
+ x="664.62036"
+ y="379.18488">are frequently used by groups for <tspan
+ style="font-weight:bold"
+ id="tspan5447">discussing </tspan></tspan><tspan
+ sodipodi:role="line"
+ id="tspan3292"
+ x="664.62036"
+ y="394.18488">multiple issues on a specific <tspan
+ style="font-weight:bold"
+ id="tspan5449">topic</tspan></tspan><tspan
+ sodipodi:role="line"
+ id="tspan3294"
+ x="664.62036"
+ y="409.18488" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="664.62036"
+ y="452.18488"
+ id="text3296"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3306"
+ x="664.62036"
+ y="452.18488">However, frequently they generate </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3308"
+ x="664.62036"
+ y="467.18488">an <tspan
+ style="font-weight:bold"
+ id="tspan5453">abundance of emails</tspan> very quickly. </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3316"
+ x="664.62036"
+ y="482.18488">>> Besides, each reply </tspan><tspan
+ sodipodi:role="line"
+ x="664.62036"
+ y="497.18488"
+ id="tspan7567">>> must quote what </tspan><tspan
+ sodipodi:role="line"
+ x="664.62036"
+ y="512.18488"
+ id="tspan7569">>> others said first</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3318"
+ y="566.67566"
+ x="659.97186"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan3332"
+ x="659.97186"
+ y="566.67566">The result is frequently a mess <tspan
+ style="font-weight:bold"
+ id="tspan14070">difficult to read</tspan> and</tspan><tspan
+ sodipodi:role="line"
+ id="tspan3334"
+ x="659.97186"
+ y="581.67566"><tspan
+ style="font-weight:bold"
+ id="tspan14072">organize</tspan> (with people writing in other colours, </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3336"
+ x="659.97186"
+ y="596.67566">replying to old emails, etc)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="659.97186"
+ y="660.2594"
+ id="text3345"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3353"
+ x="659.97186"
+ y="660.2594">Even worse: if the same issue <tspan
+ style="font-weight:bold"
+ id="tspan14074">comes back </tspan></tspan><tspan
+ sodipodi:role="line"
+ id="tspan3355"
+ x="659.97186"
+ y="675.2594">after some months, we need to repeat </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3357"
+ x="659.97186"
+ y="690.2594">what was said, searching for old emails or</tspan><tspan
+ sodipodi:role="line"
+ id="tspan3359"
+ style="font-weight:bold"
+ x="659.97186"
+ y="705.2594">repeating discussions</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3361"
+ y="517.69958"
+ x="199.97188"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan3371"
+ x="199.97188"
+ y="517.69958">Our lists <tspan
+ style="font-weight:bold"
+ id="tspan14076">don't use emails</tspan>, but the same</tspan><tspan
+ sodipodi:role="line"
+ id="tspan3373"
+ x="199.97188"
+ y="532.69958">advanced system you are using. </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3375"
+ x="199.97188"
+ y="547.69958">You can easily <tspan
+ style="font-weight:bold"
+ id="tspan14078">create</tspan> and <tspan
+ style="font-weight:bold"
+ id="tspan5291">subscribe </tspan></tspan><tspan
+ sodipodi:role="line"
+ id="tspan3377"
+ x="199.97188"
+ y="562.69958">to lists within your groups</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="199.97188"
+ y="627.69958"
+ id="text3379"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3419"
+ x="199.97188"
+ y="627.69958">However, each time a user <tspan
+ style="font-weight:bold"
+ id="tspan5295">opens</tspan> a discussion, </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3421"
+ x="199.97188"
+ y="642.69958">he/she <tspan
+ style="font-weight:bold;fill:#99bb00"
+ id="tspan5439">creates a post</tspan> with a title (like the email</tspan><tspan
+ sodipodi:role="line"
+ id="tspan3427"
+ x="199.97188"
+ y="657.69958">"subject")</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3389"
+ y="837.69958"
+ x="199.97188"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan3409"
+ x="199.97188"
+ y="837.69958">And after a few months, if the issue</tspan><tspan
+ sodipodi:role="line"
+ id="tspan3411"
+ x="199.97188"
+ y="852.69958">comes back, any user can come to the </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3413"
+ x="199.97188"
+ y="867.69958">same <tspan
+ style="font-weight:bold"
+ id="tspan5396">old post</tspan> and <tspan
+ style="font-weight:bold;fill:#99bb00"
+ id="tspan5402">update it</tspan>, without </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3415"
+ x="199.97188"
+ y="882.69958">generating more posts than needed... </tspan><tspan
+ sodipodi:role="line"
+ id="tspan3417"
+ x="199.97188"
+ y="897.69958">and keeping everything organized </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4321"
+ y="727.69958"
+ x="199.97188"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ id="tspan4329"
+ sodipodi:role="line"
+ x="199.97188"
+ y="727.69958">Other users can discuss and <tspan
+ style="font-weight:bold;fill:#99bb00"
+ id="tspan5404">comment</tspan> there,</tspan><tspan
+ sodipodi:role="line"
+ x="199.97188"
+ y="742.69958"
+ id="tspan4355">in the same post, without generating new </tspan><tspan
+ id="tspan4331"
+ sodipodi:role="line"
+ x="199.97188"
+ y="757.69958">documents</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="342.73892"
+ y="1046.1266"
+ id="text19963"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="342.73892"
+ y="1046.1266"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ id="tspan13749">Other benefits: this is a <tspan
+ style="font-weight:bold"
+ id="tspan13686">decentralized </tspan>system that protects </tspan><tspan
+ sodipodi:role="line"
+ x="342.73892"
+ y="1061.1266"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ id="tspan13751">your privacy. That is, while you use it and thus keep </tspan><tspan
+ sodipodi:role="line"
+ x="342.73892"
+ y="1076.1266"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ id="tspan13753">here your contact list, such info can be in a system </tspan><tspan
+ sodipodi:role="line"
+ x="342.73892"
+ y="1091.1266"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ id="tspan13755">you trust (as maybe this one), while you can still </tspan><tspan
+ sodipodi:role="line"
+ x="342.73892"
+ y="1106.1266"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ id="tspan6962">communicate with other users that chose other</tspan><tspan
+ sodipodi:role="line"
+ x="342.73892"
+ y="1121.1266"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ id="tspan13747">systems outside of this one.</tspan></text>
</g>
<g
- style="display:inline"
+ style="display:none"
inkscape:label="fr"
id="layer9"
inkscape:groupmode="layer" />
@@ -800,11 +1609,11 @@
ns1:refid="rect4591" />
<ns1:frame
ns1:refid="rect8725"
- ns1:sequence="2"
+ ns1:sequence="10"
ns1:transition-duration-ms="1000"
ns1:hide="true"
ns1:clip="true"
- ns1:title="under construction"
+ ns1:title="federated"
ns1:transition-zoom-percent="0"
ns1:timeout-ms="5000"
ns1:timeout-enable="false"
@@ -818,7 +1627,7 @@
ns1:clip="true"
ns1:hide="true"
ns1:transition-duration-ms="1000"
- ns1:sequence="3"
+ ns1:sequence="11"
ns1:refid="rect6444" />
<ns1:frame
ns1:transition-profile="linear"
@@ -829,6 +1638,94 @@
ns1:clip="true"
ns1:hide="true"
ns1:transition-duration-ms="1000"
+ ns1:sequence="12"
+ ns1:refid="rect14204" />
+ <ns1:frame
+ ns1:refid="rect7335"
+ ns1:sequence="6"
+ ns1:transition-duration-ms="1000"
+ ns1:hide="true"
+ ns1:clip="true"
+ ns1:title="create list"
+ ns1:transition-zoom-percent="0"
+ ns1:timeout-ms="5000"
+ ns1:timeout-enable="false"
+ ns1:transition-profile="linear" />
+ <ns1:frame
+ ns1:transition-profile="linear"
+ ns1:timeout-enable="false"
+ ns1:timeout-ms="5000"
+ ns1:transition-zoom-percent="0"
+ ns1:title="mailing list"
+ ns1:clip="true"
+ ns1:hide="true"
+ ns1:transition-duration-ms="1000"
+ ns1:sequence="2"
+ ns1:refid="rect7343" />
+ <ns1:frame
+ ns1:refid="rect7341"
+ ns1:sequence="3"
+ ns1:transition-duration-ms="1000"
+ ns1:hide="true"
+ ns1:clip="true"
+ ns1:title="lot of emails"
+ ns1:transition-zoom-percent="0"
+ ns1:timeout-ms="5000"
+ ns1:timeout-enable="false"
+ ns1:transition-profile="linear" />
+ <ns1:frame
+ ns1:transition-profile="linear"
+ ns1:timeout-enable="false"
+ ns1:timeout-ms="5000"
+ ns1:transition-zoom-percent="0"
+ ns1:title="post quotes"
+ ns1:clip="true"
+ ns1:hide="true"
+ ns1:transition-duration-ms="1000"
ns1:sequence="4"
- ns1:refid="rect14204" />
+ ns1:refid="rect7339" />
+ <ns1:frame
+ ns1:refid="rect7337"
+ ns1:sequence="5"
+ ns1:transition-duration-ms="1000"
+ ns1:hide="true"
+ ns1:clip="true"
+ ns1:title="old post come back"
+ ns1:transition-zoom-percent="0"
+ ns1:timeout-ms="5000"
+ ns1:timeout-enable="false"
+ ns1:transition-profile="linear" />
+ <ns1:frame
+ ns1:refid="rect7333"
+ ns1:sequence="7"
+ ns1:transition-duration-ms="1000"
+ ns1:hide="true"
+ ns1:clip="true"
+ ns1:title="new post"
+ ns1:transition-zoom-percent="0"
+ ns1:timeout-ms="5000"
+ ns1:timeout-enable="false"
+ ns1:transition-profile="linear" />
+ <ns1:frame
+ ns1:refid="rect7331"
+ ns1:sequence="8"
+ ns1:transition-duration-ms="1000"
+ ns1:hide="true"
+ ns1:clip="true"
+ ns1:title="comments"
+ ns1:transition-zoom-percent="0"
+ ns1:timeout-ms="5000"
+ ns1:timeout-enable="false"
+ ns1:transition-profile="linear" />
+ <ns1:frame
+ ns1:transition-profile="linear"
+ ns1:timeout-enable="false"
+ ns1:timeout-ms="5000"
+ ns1:transition-zoom-percent="0"
+ ns1:title="updates"
+ ns1:clip="true"
+ ns1:hide="true"
+ ns1:transition-duration-ms="1000"
+ ns1:sequence="9"
+ ns1:refid="rect7329" />
</svg>
Modified: trunk/src/main/webapp/tutorials/tasks.svg
===================================================================
--- trunk/src/main/webapp/tutorials/tasks.svg 2012-04-09 07:04:40 UTC (rev 1828)
+++ trunk/src/main/webapp/tutorials/tasks.svg 2012-04-09 16:09:32 UTC (rev 1829)
@@ -48,19 +48,19 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="1.5869046"
- inkscape:cx="243.10117"
- inkscape:cy="1308.5714"
+ inkscape:zoom="1.5871398"
+ inkscape:cx="59.39031"
+ inkscape:cy="1001.6173"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
showborder="true"
inkscape:showpageshadow="false"
- inkscape:window-width="1078"
- inkscape:window-height="1867"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
inkscape:window-x="0"
inkscape:window-y="24"
- inkscape:window-maximized="0" />
+ inkscape:window-maximized="1" />
<defs
id="defs4">
<marker
@@ -277,7 +277,7 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="layers"
- style="display:none">
+ style="display:inline">
<rect
y="-403.77679"
x="30.756149"
@@ -285,163 +285,14 @@
width="424.69003"
id="rect4591"
style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635472;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
- <rect
- style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.65257782;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
- id="rect4607"
- width="262.71176"
- height="148.65785"
- x="-950.12659"
- y="0.38178363" />
- <rect
- y="0.38868061"
- x="-1006.9199"
- height="217.02725"
- width="342.89246"
- id="rect4609"
- style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635478;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
- <g
- id="g3425"
- transform="translate(-1009.8665,-222.02045)"
- style="display:inline">
- <path
- sodipodi:nodetypes="ccccccccccccccccc"
- inkscape:connector-curvature="0"
- id="path3077-8-3"
- d="m 100.68086,315.8408 -22.015998,0 0,32.023 c 13,0 19,0 31.999998,0 l 0,-22.015 z m 5.984,28.023 c -10.907568,0 -10.783438,0 -23.999998,0 0,0 0.006,-21.441 0.006,-24.084 2.1,0 7.807,0 12.006,0 l 0,12.01 12.009998,0 c -10e-4,2.733 -0.022,12.074 -0.022,12.074 z m -7.983998,-16.078 c 0,-1.543 0,-5.918 0,-8.006 1.614998,1.619 6.401998,6.404 8.005998,8.006 -2.047,0 -6.454,0 -8.005998,0 z"
- style="fill:#231f20;display:inline" />
- <g
- id="g7067-2-7"
- transform="translate(-533.40886,132.49381)"
- inkscape:export-filename="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/icons/step1.png"
- inkscape:export-xdpi="89.910126"
- inkscape:export-ydpi="89.910126"
- style="display:inline">
- <path
- transform="translate(835.07499,-335.32678)"
- d="m -215,554.68896 a 11.5,11.5 0 1 1 -23,0 11.5,11.5 0 1 1 23,0 z"
- sodipodi:ry="11.5"
- sodipodi:rx="11.5"
- sodipodi:cy="554.68896"
- sodipodi:cx="-226.5"
- id="path3311-8-9"
- style="fill:#cc6633;fill-opacity:1;stroke:#cc6633;stroke-opacity:1"
- sodipodi:type="arc" />
- <text
- sodipodi:linespacing="100%"
- id="text3313-0-8"
- y="225.77936"
- x="608.74896"
- style="font-size:19.25621223px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:HoratioDMed"
- xml:space="preserve"><tspan
- style="font-size:19.25621223px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- y="225.77936"
- x="608.74896"
- sodipodi:role="line"
- id="tspan3315-3-1">1</tspan></text>
- </g>
- </g>
<path
- sodipodi:type="arc"
- style="color:#000000;fill:none;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6371"
- sodipodi:cx="272.5"
- sodipodi:cy="379.86218"
- sodipodi:rx="17.5"
- sodipodi:ry="12.5"
- d="m 290,379.86218 a 17.5,12.5 0 1 1 -35,0 17.5,12.5 0 1 1 35,0 z"
- transform="translate(-1008.4256,-287.55371)" />
+ style="fill:#231f20;display:inline"
+ d="m -114.76151,181.0661 -22.016,0 0,32.023 c 13,0 19,0 32,0 l 0,-22.015 z m 5.984,28.023 c -10.90757,0 -10.78344,0 -24,0 0,0 0.006,-21.441 0.006,-24.084 2.1,0 7.807,0 12.006,0 l 0,12.01 12.01,0 c -0.001,2.733 -0.022,12.074 -0.022,12.074 z m -7.984,-16.078 c 0,-1.543 0,-5.918 0,-8.006 1.615,1.619 6.402,6.404 8.006,8.006 -2.047,0 -6.454,0 -8.006,0 z"
+ id="path3077-8-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccccccccc" />
<g
- id="g3313"
- transform="translate(-992.70885,-208.53837)"
- style="display:inline">
- <path
- style="fill:#f9f9f9"
- d="m 272.7667,388.08329 c -2.54143,-2.54142 -2.92308,-3.66126 -2.92308,-8.57692 0,-4.95443 0.37281,-6.02666 3.01371,-8.66755 l 3.01371,-3.01371 10.5747,0.34063 c 10.15723,0.32718 10.66991,0.4514 12.98629,3.14639 1.9188,2.23243 2.41159,3.93397 2.41159,8.32693 0,4.769 -0.39822,5.91937 -2.92308,8.44423 -2.84693,2.84693 -3.18758,2.92308 -13.07692,2.92308 -9.88934,0 -10.22999,-0.0762 -13.07692,-2.92308 z m 13.31587,-16.07692 c 7.30092,0 9.85583,-0.30522 9.07671,-1.08434 -0.59639,-0.59639 -3.72389,-1.31079 -6.95,-1.58756 -7.13954,-0.61251 -13.05029,1.20488 -15.1945,4.6719 l -1.54615,2.5 2.22645,-2.25 c 2.01829,-2.03963 3.17647,-2.25 12.38749,-2.25 z"
- id="path3246"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#f6f6f6"
- d="m 274.61876,389.44757 c -3.65504,-1.98352 -4.77944,-4.37891 -4.7529,-10.12546 0.0235,-5.09011 1.74853,-8.19733 5.66202,-10.1987 2.90395,-1.48509 17.53345,-1.4306 20.84368,0.0777 3.39417,1.54648 5.47206,5.65566 5.47206,10.82139 0,8.42076 -3.82339,11.00359 -16.20034,10.94388 -5.3605,-0.0259 -9.26461,-0.5637 -11.02452,-1.51876 z m 12.90797,-12.6287 c -0.31922,-0.79773 -0.55618,-0.56078 -0.60416,0.60417 -0.0434,1.05416 0.19293,1.64479 0.52522,1.3125 0.33229,-0.33229 0.36782,-1.19479 0.0789,-1.91667 z m -1.63342,-2.8125 c 6.57267,0 11.95031,-0.34175 11.95031,-0.75945 0,-2.71445 -9.39855,-4.85775 -16.57952,-3.7809 -4.69383,0.70389 -9.45165,4.12143 -9.39007,6.7449 0.0183,0.78153 0.43477,0.60121 1.04969,-0.45455 0.88076,-1.51218 2.64331,-1.75 12.96959,-1.75 z"
- id="path3244"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#f1f1f1"
- d="m 274.61876,389.44757 c -3.65504,-1.98352 -4.77944,-4.37891 -4.7529,-10.12546 0.0235,-5.09011 1.74853,-8.19733 5.66202,-10.1987 2.90395,-1.48509 17.53345,-1.4306 20.84368,0.0777 3.39417,1.54648 5.47206,5.65566 5.47206,10.82139 0,8.42076 -3.82339,11.00359 -16.20034,10.94388 -5.3605,-0.0259 -9.26461,-0.5637 -11.02452,-1.51876 z m 13.22486,-5.4412 c 0,-1.33333 0.66667,-2 2,-2 1.1,0 2,-0.3876 2,-0.86133 0,-0.47373 -1.08096,-0.65469 -2.40213,-0.40213 -1.55439,0.29714 -2.56419,1.30694 -2.86133,2.86133 -0.25256,1.32117 -0.0716,2.40213 0.40213,2.40213 0.47373,0 0.86133,-0.9 0.86133,-2 z m -3.27083,-2.60417 c -0.33229,-0.33229 -1.1948,-0.36782 -1.91667,-0.079 -0.79773,0.31923 -0.56078,0.55619 0.60417,0.60417 1.05416,0.0434 1.64479,-0.19293 1.3125,-0.52522 z m -6.22762,-5.39583 c 2.93418,0 6.04668,-0.27314 6.91666,-0.60699 1.15193,-0.44204 1.61331,0.0335 1.69779,1.75 0.0834,1.69473 0.2445,1.86528 0.57333,0.60699 0.37104,-1.41984 1.5821,-1.75 6.41918,-1.75 5.73268,0 5.91897,-0.0801 4.84618,-2.08466 -2.44374,-4.56617 -14.30311,-6.46791 -21.5228,-3.45133 -3.34507,1.39766 -6.56324,6.33861 -6.35294,9.75387 0.0434,0.70517 0.53092,0.0446 1.08333,-1.46788 0.92434,-2.53084 1.42955,-2.75 6.33927,-2.75 z"
- id="path3242"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ededed"
- d="m 274.95369,389.61086 c -6.97427,-3.86554 -6.73822,-17.17474 0.36199,-20.4098 3.39236,-1.54567 17.66352,-1.54567 21.05588,0 7.25704,3.30652 7.25704,17.3041 0,20.61063 -3.55107,1.61797 -18.38735,1.47886 -21.41787,-0.20083 z m 12.88993,-5.60449 c 0,-1.33333 0.66667,-2 2,-2 1.1,0 2,-0.3876 2,-0.86133 0,-0.47373 -1.08096,-0.65469 -2.40213,-0.40213 -1.55439,0.29714 -2.56419,1.30694 -2.86133,2.86133 -0.25256,1.32117 -0.0716,2.40213 0.40213,2.40213 0.47373,0 0.86133,-0.9 0.86133,-2 z m -3.27083,-2.60417 c -0.33229,-0.33229 -1.1948,-0.36782 -1.91667,-0.079 -0.79773,0.31923 -0.56078,0.55619 0.60417,0.60417 1.05416,0.0434 1.64479,-0.19293 1.3125,-0.52522 z m -6.14584,-2.39583 c 5.75,0 6.41667,-0.20779 6.41667,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.79487 0.66667,2 6.5,2 6.94488,0 7.76089,-0.77549 5.41951,-5.1504 -2.41042,-4.50391 -14.32005,-6.38039 -21.48762,-3.38559 -3.34507,1.39766 -6.56324,6.33861 -6.35294,9.75387 0.0618,1.00373 0.18846,1.0107 0.58333,0.0321 0.32996,-0.81773 2.72339,-1.25 6.92105,-1.25 z"
- id="path3240"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#e9e9e9"
- d="m 274.95369,389.61086 c -3.33059,-1.846 -5.03308,-5.35338 -5.07463,-10.45449 -0.0296,-3.63828 0.52084,-4.90628 3.36456,-7.75 3.37391,-3.37391 3.47059,-3.4 12.6,-3.4 9.12941,0 9.22609,0.0261 12.6,3.4 2.90213,2.90213 3.4,4.08824 3.4,8.1 0,4.01177 -0.49787,5.19787 -3.4,8.1 -3.36179,3.36179 -3.49947,3.3996 -12.25,3.36457 -5.41249,-0.0217 -9.77829,-0.54995 -11.23993,-1.36008 z m 12.88993,-5.47949 c 0,-1.9604 3.40064,-3.125 9.125,-3.125 2.53731,0 2.875,-0.35771 2.875,-3.04545 0,-6.40647 -6.88048,-9.76274 -17.72043,-8.64395 -8.48291,0.87551 -12.48896,6.04429 -10.31422,13.30787 0.73509,2.45517 0.87546,2.54861 0.9487,0.63153 0.0743,-1.94401 0.62994,-2.25 4.08595,-2.25 2.2,0 4,-0.45 4,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.84754,1 -1.88342,1 -1.21488,0 -2.05307,0.88741 -2.36133,2.5 -0.26285,1.375 -0.0903,2.5 0.38342,2.5 0.47373,0 0.86133,-0.84375 0.86133,-1.875 z m -3.27083,-2.72917 c -0.33229,-0.33229 -1.1948,-0.36782 -1.91667,-0.079 -0.79773,0.31923 -0.56078,0.55619 0.60417,0.60417 1.05416,0.0434 1.64479,-0.19293 1.3125,-0.52522 z"
- id="path3238"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#e5e5e5"
- d="m 274.95369,389.61086 c -3.33059,-1.846 -5.03308,-5.35338 -5.07463,-10.45449 -0.0296,-3.63828 0.52084,-4.90628 3.36456,-7.75 3.37391,-3.37391 3.47059,-3.4 12.6,-3.4 9.12941,0 9.22609,0.0261 12.6,3.4 2.90213,2.90213 3.4,4.08824 3.4,8.1 0,4.01177 -0.49787,5.19787 -3.4,8.1 -3.36179,3.36179 -3.49947,3.3996 -12.25,3.36457 -5.41249,-0.0217 -9.77829,-0.54995 -11.23993,-1.36008 z m 12.88993,-5.10449 c 0,-1.16336 1.32037,-1.5 5.88337,-1.5 6.56443,0 7.43908,-0.966 5.95902,-6.58133 -1.49553,-5.67401 -3.99016,-6.91867 -13.86681,-6.91867 -7.93793,0 -9.06954,0.23965 -11.37971,2.40993 -2.98579,2.80501 -4.14498,7.52837 -2.72168,11.09007 0.54947,1.375 1.02756,1.9375 1.06242,1.25 0.0433,-0.85407 1.96386,-1.25 6.06339,-1.25 3.33333,0 6,-0.44444 6,-1 0,-0.55 -0.9,-1 -2,-1 -1.1,0 -2,-0.45 -2,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.84754,1 -1.88342,1 -1.21488,0 -2.05307,0.88741 -2.36133,2.5 -0.26285,1.375 -0.0903,2.5 0.38342,2.5 0.47373,0 0.86133,-0.675 0.86133,-1.5 z"
- id="path3236"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#e1e1e1"
- d="m 274.66961,389.29425 c -3.36162,-2.08548 -4.82599,-5.25179 -4.82599,-10.43493 0,-3.2759 0.65186,-4.70481 3.4,-7.45295 3.37391,-3.37391 3.47059,-3.4 12.6,-3.4 9.12941,0 9.22609,0.0261 12.6,3.4 2.90213,2.90213 3.4,4.08824 3.4,8.1 0,4.01177 -0.49787,5.19787 -3.4,8.1 -3.35996,3.35996 -3.50423,3.39969 -12.25,3.37339 -6.4656,-0.0194 -9.57044,-0.47356 -11.52401,-1.68551 z m 10.17401,-6.3767 c 0,-1.24451 -0.69765,-1.91118 -2,-1.91118 -1.1,0 -2,-0.45 -2,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.84754,1 -1.88342,1 -1.17145,0 -2.04971,0.86984 -2.32329,2.30103 -0.42654,2.23126 -0.25573,2.2886 5.63342,1.89125 3.34031,-0.22537 6.51529,-0.82534 7.05551,-1.33325 0.54023,-0.50791 0.93421,-2.75477 0.87552,-4.99301 -0.078,-2.97664 -0.8177,-4.78073 -2.75418,-6.71778 -2.4667,-2.46741 -3.25485,-2.64824 -11.54234,-2.64824 -8.02217,0 -9.14679,0.23644 -11.46273,2.40993 -2.96199,2.77982 -4.14919,7.5094 -2.78637,11.10048 0.88663,2.33632 1.32168,2.46873 7.06634,2.15077 5.24185,-0.29013 6.12154,-0.61347 6.12154,-2.25 z"
- id="path3234"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#dcdcdc"
- d="m 275.22656,389.42308 c -3.73042,-1.84034 -5.38294,-5.08333 -5.38294,-10.56376 0,-3.2759 0.65186,-4.70481 3.4,-7.45295 3.37391,-3.37391 3.47059,-3.4 12.6,-3.4 9.12941,0 9.22609,0.0261 12.6,3.4 4.89855,4.89856 4.89855,11.30144 0,16.2 -3.32886,3.32886 -3.57472,3.39952 -11.75,3.37723 -5.45404,-0.0149 -9.43106,-0.55609 -11.46706,-1.56052 z m 23.32253,-4.08996 c 2.62172,-4.00124 2.1238,-9.95203 -1.10268,-13.17851 -2.47,-2.47 -3.25094,-2.64824 -11.60279,-2.64824 -8.45306,0 -9.10983,0.15528 -11.72727,2.77273 -3.45619,3.45618 -3.89097,10.28165 -0.86774,13.62228 1.7131,1.89296 2.99506,2.10499 12.72694,2.10499 10.62697,0 10.85352,-0.0482 12.57354,-2.67325 z m -13.70547,-2.32675 c 0,-1.33333 -0.66667,-2 -2,-2 -1.1,0 -2,-0.45 -2,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.9,1 -2,1 -1.33333,0 -2,0.66667 -2,2 0,1.1 -0.45,2 -1,2 -0.55,0 -1,-0.9 -1,-2 z"
- id="path3232"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#d3d3d3"
- d="m 276.23174,390.07419 c -6.74233,-2.8771 -8.58217,-12.5807 -3.47015,-18.30204 l 2.91797,-3.26578 10.0593,0 c 9.55886,0 10.19169,0.13238 12.72027,2.66096 1.94599,1.946 2.78866,3.98996 3.13623,7.60719 0.42579,4.43128 0.15974,5.29945 -2.5555,8.33904 -2.97123,3.32615 -3.20433,3.39742 -11.86351,3.62732 -4.858,0.12897 -9.78308,-0.17103 -10.94461,-0.66669 z m 20.15627,-2.50495 c 5.16707,-3.38559 5.61236,-11.18808 0.8916,-15.623 -2.03934,-1.91587 -3.87117,-2.45559 -9.39338,-2.76762 -9.20388,-0.52007 -13.40194,0.95786 -15.5442,5.47234 -2.99873,6.31936 -0.45732,12.27035 6.14414,14.38717 4.21561,1.35177 14.93996,0.47181 17.90184,-1.46889 z m -11.54439,-4.56287 c 0,-1.33333 -0.66667,-2 -2,-2 -1.1,0 -2,-0.45 -2,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.9,1 -2,1 -1.33333,0 -2,0.66667 -2,2 0,1.1 -0.45,2 -1,2 -0.55,0 -1,-0.9 -1,-2 z"
- id="path3230"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#cacaca"
- d="m 276.34362,390.1089 c -3.32573,-1.44083 -5.6417,-4.7347 -6.16978,-8.77491 -1.17583,-8.99611 3.91096,-13.32014 15.66978,-13.32014 8.57989,0 13.32692,2.11841 15.10996,6.74298 1.59988,4.14952 0.43075,10.16322 -2.55692,13.15212 -2.35114,2.35211 -3.42069,2.61957 -11.3247,2.83193 -4.80059,0.12897 -9.62834,-0.15541 -10.72834,-0.63198 z m 20.97569,-3.0797 c 5.13629,-4.82528 3.99128,-14.09412 -2.05306,-16.6196 -4.01896,-1.67923 -13.87697,-1.83801 -18.30379,-0.29481 -5.17185,1.80291 -7.69655,9.01593 -4.97286,14.20732 2.29231,4.36916 6.20726,5.69454 15.63159,5.29197 5.93089,-0.25335 7.72547,-0.73167 9.69812,-2.58488 z m -12.47569,-4.02283 c 0,-1.33333 -0.66667,-2 -2,-2 -1.1,0 -2,-0.45 -2,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.9,1 -2,1 -1.33333,0 -2,0.66667 -2,2 0,1.1 -0.45,2 -1,2 -0.55,0 -1,-0.9 -1,-2 z"
- id="path3228"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#c3c3c3"
- d="m 275.85753,389.25482 c -5.73027,-2.87402 -7.6127,-9.25604 -4.50356,-15.26847 1.46973,-2.84213 5.16543,-5.63753 6.15066,-4.65231 0.26934,0.26935 -0.44914,0.7877 -1.59662,1.15189 -2.48243,0.7879 -5.06439,5.38675 -5.06439,9.02044 0,4.11705 2.64823,8.18172 6.11884,9.39158 4.5965,1.60235 14.54047,1.36392 18.34147,-0.43977 5.27305,-2.50222 7.02439,-8.68003 4.07668,-14.38029 -1.8882,-3.65136 -3.37909,-4.23097 -13.03699,-5.06828 l -8,-0.69358 6.78212,-0.15483 c 8.24791,-0.18829 13.03112,1.61644 15.15146,5.71673 3.0026,5.80639 1.51103,11.97229 -3.65865,15.12424 -4.33677,2.64413 -15.71672,2.78261 -20.76102,0.25265 z m 8.98609,-6.24845 c 0,-1.33333 -0.66667,-2 -2,-2 -1.1,0 -2,-0.45 -2,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.9,1 -2,1 -1.33333,0 -2,0.66667 -2,2 0,1.1 -0.45,2 -1,2 -0.55,0 -1,-0.9 -1,-2 z"
- id="path3226"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#b5b5b5"
- d="m 286.34362,390.05352 c 8.79911,-0.70744 12.02529,-1.97612 13.02358,-5.12145 0.36247,-1.14203 0.8794,-1.85605 1.14875,-1.58671 0.26934,0.26935 -0.033,1.46635 -0.6718,2.66002 -1.75159,3.27288 -7.06078,5.02098 -14.71841,4.84616 l -6.78212,-0.15483 8,-0.64319 z m -12.63922,-2.1065 -2.36078,-2.05935 3,1.75669 c 3.94843,2.31206 4.00717,2.36201 2.77745,2.36201 -0.58073,0 -2.11823,-0.92671 -3.41667,-2.05935 z m 11.13922,-4.94065 c 0,-1.33333 -0.66667,-2 -2,-2 -1.1,0 -2,-0.45 -2,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.9,1 -2,1 -1.33333,0 -2,0.66667 -2,2 0,1.1 -0.45,2 -1,2 -0.55,0 -1,-0.9 -1,-2 z m -14.80505,-3.5 c 0.0204,-1.65 0.2445,-2.20394 0.49804,-1.23097 0.25354,0.97297 0.23687,2.32297 -0.0371,3 -0.27393,0.67703 -0.48137,-0.11903 -0.46099,-1.76903 z m 31,0 c 0.0204,-1.65 0.2445,-2.20394 0.49804,-1.23097 0.25354,0.97297 0.23687,2.32297 -0.0371,3 -0.27393,0.67703 -0.48137,-0.11903 -0.46099,-1.76903 z m -1.69623,-5.50404 c -0.34984,-1.10223 -1.84266,-2.65921 -3.31739,-3.45997 -1.47473,-0.80075 -2.09838,-1.47393 -1.38588,-1.49595 1.53083,-0.0473 6.20455,4.40793 6.20455,5.91451 0,1.71269 -0.81953,1.18941 -1.50128,-0.95859 z m -27.49872,-1.37352 c 0,-0.20765 0.7875,-0.99515 1.75,-1.75 1.58606,-1.24387 1.62143,-1.2085 0.37756,0.37756 -1.30637,1.66575 -2.12756,2.19548 -2.12756,1.37244 z m 10.25,-4.35091 c 2.0625,-0.21574 5.4375,-0.21574 7.5,0 2.0625,0.21575 0.375,0.39226 -3.75,0.39226 -4.125,0 -5.8125,-0.17651 -3.75,-0.39226 z"
- id="path3224"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#aaaaaa"
- d="m 282.59362,390.28297 c 1.7875,-0.22182 4.7125,-0.22182 6.5,0 1.7875,0.22183 0.325,0.40333 -3.25,0.40333 -3.575,0 -5.0375,-0.1815 -3.25,-0.40333 z m 14.25,-1.65415 c 0,-0.20766 0.7875,-0.99516 1.75,-1.75 1.58606,-1.24388 1.62143,-1.20851 0.37756,0.37755 -1.30637,1.66575 -2.12756,2.19548 -2.12756,1.37245 z m -12,-5.62245 c 0,-1.33333 -0.66667,-2 -2,-2 -1.1,0 -2,-0.45 -2,-1 0,-0.55 0.9,-1 2,-1 1.33333,0 2,-0.66667 2,-2 0,-1.1 0.45,-2 1,-2 0.55,0 1,0.9 1,2 0,1.33333 0.66667,2 2,2 1.1,0 2,0.45 2,1 0,0.55 -0.9,1 -2,1 -1.33333,0 -2,0.66667 -2,2 0,1.1 -0.45,2 -1,2 -0.55,0 -1,-0.9 -1,-2 z m -14.92105,-3.58333 c 0.048,-1.16495 0.28494,-1.4019 0.60416,-0.60417 0.28887,0.72188 0.25335,1.58438 -0.0789,1.91667 -0.3323,0.33229 -0.56864,-0.25834 -0.52522,-1.3125 z m 31,0 c 0.048,-1.16495 0.28494,-1.4019 0.60416,-0.60417 0.28888,0.72188 0.25335,1.58438 -0.079,1.91667 -0.33229,0.33229 -0.56864,-0.25834 -0.52522,-1.3125 z m -18.32895,-11.14007 c 1.7875,-0.22182 4.7125,-0.22182 6.5,0 1.7875,0.22183 0.325,0.40333 -3.25,0.40333 -3.575,0 -5.0375,-0.1815 -3.25,-0.40333 z"
- id="path3222"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#f7f7f7;fill-opacity:1;stroke:#f7f7f7;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 291.91157,381.00816 -9.98127,0"
- id="path3271"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path3273"
- d="m 286.92093,376.01752 0,9.98127"
- style="fill:#f7f7f7;fill-opacity:1;stroke:#f7f7f7;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- style="fill:none;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 285.92094,375.01753 0,9.98127"
- id="path3267"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path3269"
- d="m 290.91157,380.00816 -9.98127,0"
- style="fill:none;stroke:#666666;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <g
- transform="translate(-1013.9918,-253.757)"
+ transform="translate(-191.29581,-345.40898)"
id="g3761"
style="display:inline">
<g
@@ -642,7 +493,7 @@
</g>
</g>
<g
- transform="translate(-1031.1443,-263.46575)"
+ transform="translate(-208.44831,-355.11773)"
id="g3742"
style="display:inline">
<g
@@ -735,7 +586,7 @@
</g>
</g>
<g
- transform="translate(-1050.9742,-245.6861)"
+ transform="translate(-228.27821,-337.33808)"
id="g3841"
style="display:inline">
<g
@@ -829,7 +680,7 @@
</g>
</g>
<g
- transform="translate(-1051.2436,-269.08037)"
+ transform="translate(-228.54761,-360.73235)"
id="g3801"
style="display:inline">
<g
@@ -1030,7 +881,7 @@
</g>
</g>
<g
- transform="translate(-1078.381,-239.13572)"
+ transform="translate(-255.68501,-330.7877)"
id="g3879"
style="display:inline">
<g
@@ -1231,7 +1082,7 @@
</g>
</g>
<g
- transform="translate(-1065.2093,-213.69216)"
+ transform="translate(-242.51331,-305.34414)"
id="g3860"
style="display:inline">
<g
@@ -1324,36 +1175,9 @@
sodipodi:role="line">ursula</tspan></text>
</g>
</g>
- <path
- style="fill:#231f20;display:inline"
- d="m -340.24786,55.781484 -22.016,0 0,32.023 c 13,0 19,0 32,0 l 0,-22.015 z m 5.984,28.023 c -10.90757,0 -10.78344,0 -24,0 0,0 0.006,-21.441 0.006,-24.084 2.1,0 7.807,0 12.006,0 l 0,12.01 12.01,0 c -0.001,2.733 -0.022,12.074 -0.022,12.074 z m -7.984,-16.078 c 0,-1.543 0,-5.918 0,-8.006 1.615,1.619 6.402,6.404 8.006,8.006 -2.047,0 -6.454,0 -8.006,0 z"
- id="path3077-8-3-9"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccc" />
- <path
- sodipodi:nodetypes="ccccccccccccccccc"
- inkscape:connector-curvature="0"
- id="path11222"
- d="m -340.24786,95.781484 -22.016,0 0,32.022996 c 13,0 19,0 32,0 l 0,-22.015 z m 5.984,28.022996 c -10.90757,0 -10.78344,0 -24,0 0,0 0.006,-21.441 0.006,-24.083996 2.1,0 7.807,0 12.006,0 l 0,12.009996 12.01,0 c -0.001,2.733 -0.022,12.074 -0.022,12.074 z m -7.984,-16.078 c 0,-1.543 0,-5.918 0,-8.005996 1.615,1.618996 6.402,6.403996 8.006,8.005996 -2.047,0 -6.454,0 -8.006,0 z"
- style="fill:#231f20;display:inline" />
- <path
- inkscape:connector-curvature="0"
- id="path11228"
- d="m -406.0761,77.334524 23.30768,0 0,-48.73424 14.83216,0"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
- <path
- inkscape:connector-curvature="0"
- id="path11230"
- d="m -385.89572,77.334524 17.51247,0"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
- <path
- inkscape:connector-curvature="0"
- id="path11232"
- d="m -382.77891,77.395104 0,26.592096 14.45711,0"
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
<g
id="g6400"
- transform="translate(-1107.878,-266.45295)"
+ transform="translate(-610.97304,-77.92981)"
style="display:inline">
<rect
y="285.06863"
@@ -1376,410 +1200,45 @@
d="m 745.98776,281.46637 c 0,10.69792 0,21.39583 0,32.09375 10.66667,0 21.33333,0 32,0 3.8e-4,-10.69792 8.2e-4,-21.39583 0,-32.09375 -10.66667,0 -21.33333,0 -32,0 z m 4,4 c 2.57307,0.0164 5.1453,0.11052 7.71875,0.0937 0.0104,2.65625 0.0208,5.3125 0.0312,7.96875 5.41667,-0.0208 10.83333,-0.0417 16.25,-0.0625 0,5.36458 0,10.72917 0,16.09375 -8.47194,-0.0641 -16.17572,0.01 -24,0 3e-5,-8.03119 -7e-5,-16.06271 5e-5,-24.0937 z m 11,0 c 4.33333,0 8.66667,0 13,0 0,1.33333 0,2.66667 0,4 -4.33333,0 -8.66667,0 -13,0 0,-1.33333 0,-2.66667 0,-4 z"
style="fill:#231f20;display:inline" />
</g>
- <g
- transform="translate(-1188.1346,-218.36969)"
- id="g6405"
- style="display:inline">
- <rect
- style="color:#000000;fill:#f3d347;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect6407"
- width="9.1984463"
- height="25.397747"
- x="749.5293"
- y="285.06863" />
- <rect
- style="color:#000000;fill:#f3d347;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00000119;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect6409"
- width="26.767767"
- height="18.093594"
- x="749.21997"
- y="292.81506" />
- <path
- style="fill:#231f20;display:inline"
- d="m 745.98776,281.46637 c 0,10.69792 0,21.39583 0,32.09375 10.66667,0 21.33333,0 32,0 3.8e-4,-10.69792 8.2e-4,-21.39583 0,-32.09375 -10.66667,0 -21.33333,0 -32,0 z m 4,4 c 2.57307,0.0164 5.1453,0.11052 7.71875,0.0937 0.0104,2.65625 0.0208,5.3125 0.0312,7.96875 5.41667,-0.0208 10.83333,-0.0417 16.25,-0.0625 0,5.36458 0,10.72917 0,16.09375 -8.47194,-0.0641 -16.17572,0.01 -24,0 3e-5,-8.03119 -7e-5,-16.06271 5e-5,-24.0937 z m 11,0 c 4.33333,0 8.66667,0 13,0 0,1.33333 0,2.66667 0,4 -4.33333,0 -8.66667,0 -13,0 0,-1.33333 0,-2.66667 0,-4 z"
- id="path6411"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccc" />
- </g>
<path
- style="fill:#231f20;display:inline"
- d="m -420.24786,22.781484 -22.016,0 0,32.023 c 13,0 19,0 32,0 l 0,-22.015 z m 5.984,28.023 c -10.90757,0 -10.78344,0 -24,0 0,0 0.006,-21.441 0.006,-24.084 2.1,0 7.807,0 12.006,0 l 0,12.01 12.01,0 c -0.001,2.733 -0.022,12.074 -0.022,12.074 z m -7.984,-16.078 c 0,-1.543 0,-5.918 0,-8.006 1.615,1.619 6.402,6.404 8.006,8.006 -2.047,0 -6.454,0 -8.006,0 z"
- id="path6442"
inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccc" />
- <g
- id="g14469"
- transform="translate(-1188.1346,-177.36969)"
- style="display:inline">
- <rect
- y="285.06863"
- x="749.5293"
- height="25.397747"
- width="9.1984463"
- id="rect14471"
- style="color:#000000;fill:#f3d347;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <rect
- y="292.81506"
- x="749.21997"
- height="18.093594"
- width="26.767767"
- id="rect14473"
- style="color:#000000;fill:#f3d347;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.00000119;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:nodetypes="ccccccccccccccccc"
- inkscape:connector-curvature="0"
- id="path14475"
- d="m 745.98776,281.46637 c 0,10.69792 0,21.39583 0,32.09375 10.66667,0 21.33333,0 32,0 3.8e-4,-10.69792 8.2e-4,-21.39583 0,-32.09375 -10.66667,0 -21.33333,0 -32,0 z m 4,4 c 2.57307,0.0164 5.1453,0.11052 7.71875,0.0937 0.0104,2.65625 0.0208,5.3125 0.0312,7.96875 5.41667,-0.0208 10.83333,-0.0417 16.25,-0.0625 0,5.36458 0,10.72917 0,16.09375 -8.47194,-0.0641 -16.17572,0.01 -24,0 3e-5,-8.03119 -7e-5,-16.06271 5e-5,-24.0937 z m 11,0 c 4.33333,0 8.66667,0 13,0 0,1.33333 0,2.66667 0,4 -4.33333,0 -8.66667,0 -13,0 0,-1.33333 0,-2.66667 0,-4 z"
- style="fill:#231f20;display:inline" />
- </g>
- <path
- inkscape:connector-curvature="0"
id="path5988"
- d="m -924.86091,63.859844 2.9776,21.67033"
+ d="m -102.16492,-27.792138 2.977598,21.67033"
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m -880.57616,78.271684 -14.73368,16.16751"
+ d="m -57.880169,-13.380298 -14.73368,16.16751"
id="path6999"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path7001"
- d="m -941.46332,152.74321 -14.04853,16.76629"
+ d="m -118.76733,61.091225 -14.04853,16.76629"
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m -954.32745,126.04894 -21.71261,2.65179"
+ d="m -131.63146,34.396955 -21.71261,2.65179"
id="path7003"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path7005"
- d="m -954.97098,92.860704 -19.77711,-9.34533"
+ d="m -132.27499,1.208722 -19.77711,-9.34533"
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m -908.90778,153.05708 6.86002,20.77041"
+ d="m -86.211789,61.405095 6.86002,20.77041"
id="path7007"
inkscape:connector-curvature="0" />
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/world-90.png"
- transform="matrix(0.55742735,0,0,0.55742735,-570.97575,136.86742)"
- id="g6729"
- style="display:inline">
- <path
- inkscape:connector-curvature="0"
- id="path4967-4"
- d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z"
- style="color:#000000;fill:#aaeeff;fill-opacity:1;fill-rule:nonzero;stroke:#b3b3b3;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- transform="matrix(1.9,0,0,3.8,180.92883,-5.4644227)" />
- <path
- sodipodi:nodetypes="cccccccc"
- inkscape:connector-curvature="0"
- id="path4969-0"
- d="m 343.41091,82.102257 c -4.61208,1.27568 -8.4152,4.3488 -12.51252,6.67072 -2.35308,1.74788 -5.12984,6.52288 -1.96136,8.60572 2.50816,0.42204 4.52272,-1.71204 6.9918,-1.86684 2.88372,-0.66468 5.82796,-1.19016 8.56184,-2.36416 4.67024,-1.47172 4.67024,-1.47172 5.1476,-3.19456 0.2268,-2.594 -1.61708,-4.99872 -3.35792,-6.7716 -0.7942,-0.65116 -1.8022,-1.26156 -2.86944,-1.07928 z"
- style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- sodipodi:nodetypes="cacccccccccc"
- inkscape:connector-curvature="0"
- id="path4983-6"
- d="m 379.92883,107.51186 c -6.54148,3.33576 -14.24416,6.695 -17.08312,13.33832 -0.87308,2.04304 0.36,4.4522 0.66656,6.63188 1.24588,2.32204 -1.79852,4.3692 -0.89984,6.6998 1.0754,2.41996 4.1484,2.05532 6.18628,1.27852 2.07688,-0.71376 -0.86608,-2.75712 0,0 0.94212,2.20364 8.67396,2.87608 11.00512,1.87524 2.24192,-0.82204 3.76764,-1.20964 4.83784,-3.08096 3.5092,-7.13912 5.23236,-15.22316 4.6808,-23.17324 -0.172,-2.14232 -0.83076,-4.21536 -1.6044,-6.19228 -0.8002,-2.60864 -3.50284,0.028 -4.56584,1.10028 -0.97392,0.68904 -2.05424,1.25484 -3.2234,1.52244 z"
- style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- sodipodi:nodetypes="cccccacccc"
- style="color:#000000;fill:#2ca05a;fill-opacity:1;fill-rule:nonzero;stroke:#2ca05a;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 328.42251,109.20506 c -3.85116,1.46336 -8.01156,2.4666 -11.52748,4.61236 -2.9146,2.45496 -2.5518,6.93884 -1.0408,10.06404 1.85428,4 3.32528,8.1856 5.54108,12.01032 2.14308,2.82516 -0.1448,1.59612 2.45892,3.98968 0.73584,0.87624 5.32,5.30628 8,4 1.33596,-0.65116 1.00188,-2.62 0.8862,-4.3696 0.84188,-3.62872 -1.33312,-7.09848 -1.15972,-10.75332 -0.0936,-4.58884 0.80728,-9.12276 1.354,-13.6626 0.312,-2.51708 -1.10816,-7.20092 -4.5122,-5.89088 z"
- id="path4985-4"
- inkscape:connector-curvature="0"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- inkscape:connector-curvature="0"
- id="path4987-7"
- d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z"
- style="color:#000000;fill:none;stroke:#002255;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- transform="matrix(1.9,0,0,3.8,180.92883,-5.4644227)" />
- </g>
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/webapp/others/defgroup.png"
- id="g3063"
- transform="matrix(0.36909856,0,0,0.36909856,-837.85498,41.587354)"
- style="display:inline">
- <g
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/grop-def-new.png"
- transform="matrix(0.9,0,0,0.9,246.64216,77.109544)"
- id="g3047">
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- sodipodi:type="star"
- style="color:#000000;fill:none;stroke:#28220b;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path3049"
- sodipodi:sides="5"
- sodipodi:cx="35"
- sodipodi:cy="12.362183"
- sodipodi:r1="5"
- sodipodi:r2="4.045085"
- sodipodi:arg1="1.5707963"
- sodipodi:arg2="2.1991149"
- inkscape:flatsided="true"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 35,17.362183 -4.755283,-3.454915 1.816357,-5.5901703 5.877852,-10e-8 1.816357,5.5901694 z"
- inkscape:transform-center-y="-0.21689042"
- transform="matrix(4.71003,1.6779794,-1.6779794,4.71003,-33.10757,48.018455)"
- inkscape:transform-center-x="2.1800737" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/java/cc/kune/wspace/client/resources/groupSpaceEnabled.png"
- transform="matrix(2.375,0,0,4.7499998,-102.75,10.817397)"
- d="m 110,32.362183 a 20,10 0 1 1 -40,0 20,10 0 1 1 40,0 z"
- sodipodi:ry="10"
- sodipodi:rx="20"
- sodipodi:cy="32.362183"
- sodipodi:cx="90"
- id="path3051"
- style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:1.48864591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- transform="matrix(9.4200602,3.355959,-3.355959,9.4200602,45.524372,-53.39817)"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="16.362183"
- sodipodi:cx="15"
- id="path3053"
- style="color:#000000;fill:#dd8a3d;fill-opacity:1;stroke:#dd8a3d;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- sodipodi:type="arc"
- style="color:#000000;fill:#69312f;fill-opacity:1;stroke:#69312f;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path3055"
- sodipodi:cx="15"
- sodipodi:cy="16.362183"
- sodipodi:rx="1"
- sodipodi:ry="1"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
- transform="matrix(9.4200602,3.355959,-3.355959,9.4200602,18.680548,-64.20388)" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- transform="matrix(9.4200602,3.355959,-3.355959,9.4200602,43.935022,-24.026857)"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="16.362183"
- sodipodi:cx="15"
- id="path3057"
- style="color:#000000;fill:#28220b;fill-opacity:1;stroke:#28220b;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- sodipodi:type="arc"
- style="color:#000000;fill:#cc6633;fill-opacity:1;stroke:#cc6633;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path3059"
- sodipodi:cx="15"
- sodipodi:cy="16.362183"
- sodipodi:rx="1"
- sodipodi:ry="1"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
- transform="matrix(9.4200602,3.355959,-3.355959,9.4200602,16.336633,-16.494463)" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
- transform="matrix(11.211448,3.9941526,-3.9941526,11.211448,-16.590722,-79.68006)"
- d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="16.362183"
- sodipodi:cx="15"
- id="path3061"
- style="color:#000000;fill:#ffdb6b;fill-opacity:1;stroke:#dd8a3d;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- </g>
- </g>
- <text
- sodipodi:linespacing="125%"
- id="text3071-9"
- y="69.533607"
- x="-830.94623"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- id="tspan3545"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="69.533607"
- x="-830.94623"
- sodipodi:role="line">Por el contrario aquí</tspan><tspan
- style="font-size:12px;font-weight:bold;fill:#aa4400"
- y="84.533607"
- x="-830.94623"
- sodipodi:role="line"
- id="tspan3932">un<tspan
- style="font-weight:normal"
- id="tspan3934"> mismo </tspan>documento</tspan><tspan
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="99.533607"
- x="-830.94623"
- sodipodi:role="line"
- id="tspan6262">puede ser editado por </tspan><tspan
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="114.53361"
- x="-830.94623"
- sodipodi:role="line"
- id="tspan6264">varias personas de</tspan><tspan
- id="tspan13782"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="129.5336"
- x="-830.94623"
- sodipodi:role="line">tu grupos</tspan></text>
- <text
- sodipodi:linespacing="125%"
- id="text3071-9-9"
- y="166.61867"
- x="-829.6145"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="166.61867"
- x="-829.6145"
- sodipodi:role="line"
- id="tspan6304">u otras a las que se </tspan><tspan
- style="font-size:12px;font-weight:bold;fill:#aa4400"
- y="181.61867"
- x="-829.6145"
- sodipodi:role="line"
- id="tspan3563"><tspan
- style="font-weight:normal"
- id="tspan3565">lo </tspan>compartes</tspan></text>
- <g
- transform="matrix(1.9571643,0,0,1.9571643,-1631.0648,-1042.5543)"
- id="text23658"
- style="font-size:2.80011916px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">
- <path
- inkscape:connector-curvature="0"
- id="path23733"
- style="font-weight:bold;marker:none"
- d="m 612.83876,554.92091 0.43681,0 0,1.94048 -0.43681,0 0,-1.94048" />
- <path
- inkscape:connector-curvature="0"
- id="path23735"
- style="font-weight:bold;marker:none"
- d="m 613.69673,555.43893 c 0.0709,-0.0205 0.16241,-0.0392 0.27441,-0.056 0.11201,-0.0187 0.22961,-0.028 0.35282,-0.028 0.12507,0 0.22867,0.0168 0.31081,0.0504 0.084,0.0317 0.15027,0.0775 0.19881,0.1372 0.0485,0.0597 0.0831,0.13068 0.1036,0.21281 0.0205,0.0821 0.0308,0.17361 0.0308,0.27441 l 0,0.83164 -0.41721,0 0,-0.78123 c -1e-5,-0.13441 -0.0177,-0.22961 -0.0532,-0.28562 -0.0355,-0.056 -0.10173,-0.084 -0.1988,-0.084 -0.0299,0 -0.0616,0.002 -0.0952,0.006 -0.0336,0.002 -0.0635,0.005 -0.0896,0.008 l 0,1.13685 -0.41722,0 0,-1.42246" />
- <path
- inkscape:connector-curvature="0"
- id="path23737"
- style="font-weight:bold;marker:none"
- d="m 615.76558,556.86139 -0.41722,0 0,-1.47286 0.41722,0 0,1.47286 m 0.0392,-1.89848 c 0,0.0765 -0.0252,0.13721 -0.0756,0.18201 -0.0485,0.0429 -0.10641,0.0644 -0.17361,0.0644 -0.0672,0 -0.126,-0.0215 -0.17641,-0.0644 -0.0485,-0.0448 -0.0728,-0.10547 -0.0728,-0.18201 0,-0.0765 0.0243,-0.13627 0.0728,-0.17921 0.0504,-0.0448 0.10921,-0.0672 0.17641,-0.0672 0.0672,0 0.12507,0.0224 0.17361,0.0672 0.0504,0.0429 0.0756,0.10267 0.0756,0.17921" />
- <path
- inkscape:connector-curvature="0"
- id="path23739"
- style="font-weight:bold;marker:none"
- d="m 616.08777,556.12496 c 0,-0.10641 0.0168,-0.20628 0.0504,-0.29961 0.0355,-0.0952 0.0859,-0.17734 0.15121,-0.24642 0.0653,-0.0709 0.14467,-0.12693 0.23801,-0.168 0.0933,-0.0411 0.19974,-0.0616 0.31921,-0.0616 0.0784,10e-6 0.15027,0.007 0.21561,0.0224 0.0653,0.0131 0.1288,0.0327 0.19041,0.0588 l -0.0868,0.33321 c -0.0392,-0.0149 -0.0821,-0.028 -0.1288,-0.0392 -0.0467,-0.0112 -0.0989,-0.0168 -0.15681,-0.0168 -0.1232,0 -0.21561,0.0383 -0.27721,0.1148 -0.0597,0.0765 -0.0896,0.17735 -0.0896,0.30242 0,0.13254 0.028,0.23521 0.084,0.30801 0.0579,0.0728 0.15774,0.10921 0.29961,0.10921 0.0504,0 0.10454,-0.005 0.16241,-0.014 0.0579,-0.009 0.11107,-0.0243 0.15961,-0.0448 l 0.0588,0.34162 c -0.0485,0.0205 -0.10921,0.0383 -0.18201,0.0532 -0.0728,0.0149 -0.15307,0.0224 -0.24081,0.0224 -0.13441,0 -0.25014,-0.0196 -0.34721,-0.0588 -0.0971,-0.0411 -0.17734,-0.0961 -0.24081,-0.16521 -0.0616,-0.0691 -0.10734,-0.15027 -0.13721,-0.24361 -0.028,-0.0952 -0.042,-0.19787 -0.042,-0.30801" />
- <path
- inkscape:connector-curvature="0"
- id="path23741"
- style="font-weight:bold;marker:none"
- d="m 618.86439,556.12216 c 0,0.11574 -0.0168,0.22214 -0.0504,0.31921 -0.0336,0.0952 -0.0821,0.17734 -0.14561,0.24641 -0.0635,0.0672 -0.14,0.11947 -0.2296,0.15681 -0.0877,0.0373 -0.18668,0.056 -0.29682,0.056 -0.10827,0 -0.20721,-0.0187 -0.29681,-0.056 -0.0877,-0.0373 -0.16334,-0.0896 -0.22681,-0.15681 -0.0635,-0.0691 -0.11294,-0.1512 -0.14841,-0.24641 -0.0355,-0.0971 -0.0532,-0.20347 -0.0532,-0.31921 0,-0.11574 0.0177,-0.22121 0.0532,-0.31642 0.0373,-0.0952 0.0877,-0.1764 0.15121,-0.24361 0.0653,-0.0672 0.14187,-0.11947 0.22961,-0.1568 0.0896,-0.0373 0.18667,-0.056 0.29121,-0.056 0.10641,10e-6 0.20348,0.0187 0.29121,0.056 0.0896,0.0373 0.16614,0.0896 0.22961,0.1568 0.0635,0.0672 0.11294,0.14841 0.14841,0.24361 0.0355,0.0952 0.0532,0.20068 0.0532,0.31642 m -0.42561,0 c -10e-6,-0.12881 -0.0261,-0.22961 -0.0784,-0.30242 -0.0504,-0.0747 -0.1232,-0.112 -0.21841,-0.112 -0.0952,0 -0.16894,0.0373 -0.22121,0.112 -0.0523,0.0728 -0.0784,0.17361 -0.0784,0.30242 0,0.1288 0.0261,0.23147 0.0784,0.30801 0.0523,0.0747 0.12601,0.11201 0.22121,0.11201 0.0952,0 0.16801,-0.0373 0.21841,-0.11201 0.0523,-0.0765 0.0784,-0.17921 0.0784,-0.30801" />
- </g>
- <g
- transform="matrix(1.9571643,0,0,1.9571643,-1685.6366,-960.80361)"
- id="text23670"
- style="font-size:2.80011916px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">
- <path
- inkscape:connector-curvature="0"
- id="path23709"
- style="font-weight:bold;marker:none"
- d="m 641.27886,556.96227 c -0.10641,0 -0.21281,-0.004 -0.31922,-0.0112 -0.10453,-0.006 -0.21374,-0.0205 -0.32761,-0.0448 l 0,-1.88168 c 0.0896,-0.0168 0.18761,-0.0289 0.29401,-0.0364 0.10641,-0.009 0.20534,-0.014 0.29681,-0.014 0.12321,0 0.23615,0.009 0.33882,0.028 0.10454,0.0168 0.19414,0.0467 0.26881,0.0896 0.0747,0.0429 0.13254,0.0999 0.17361,0.17081 0.0429,0.0691 0.0644,0.15494 0.0644,0.25761 0,0.15494 -0.0747,0.27722 -0.22401,0.36682 0.1232,0.0467 0.20721,0.11014 0.25201,0.19041 0.0448,0.0803 0.0672,0.1708 0.0672,0.27161 0,0.20347 -0.0747,0.35655 -0.224,0.45922 -0.14748,0.10267 -0.36775,0.154 -0.66083,0.154 m -0.22121,-0.87083 0,0.50122 c 0.0317,0.004 0.0663,0.007 0.1036,0.008 0.0373,0.002 0.0784,0.003 0.12321,0.003 0.13067,0 0.23614,-0.0187 0.31641,-0.056 0.0803,-0.0373 0.1204,-0.10641 0.12041,-0.20721 -10e-6,-0.0896 -0.0336,-0.15308 -0.10081,-0.19041 -0.0672,-0.0392 -0.16334,-0.0588 -0.28841,-0.0588 l -0.27441,0 m 0,-0.33322 0.21281,0 c 0.1344,0 0.23054,-0.0168 0.28841,-0.0504 0.0579,-0.0355 0.0868,-0.0915 0.0868,-0.16801 0,-0.0784 -0.0299,-0.13347 -0.0896,-0.1652 -0.0597,-0.0317 -0.14748,-0.0476 -0.26321,-0.0476 -0.0373,10e-6 -0.0775,9.4e-4 -0.12041,0.003 -0.0429,1e-5 -0.0812,0.002 -0.1148,0.006 l 0,0.42282" />
- <path
- inkscape:connector-curvature="0"
- id="path23711"
- style="font-weight:bold;marker:none"
- d="m 643.07338,556.96507 c -0.12134,-0.002 -0.22027,-0.0149 -0.29681,-0.0392 -0.0747,-0.0243 -0.13441,-0.0579 -0.17921,-0.1008 -0.0429,-0.0448 -0.0728,-0.098 -0.0896,-0.15961 -0.0149,-0.0635 -0.0224,-0.1344 -0.0224,-0.21281 l 0,-1.62127 0.41722,-0.0672 0,1.60447 c 0,0.0373 0.003,0.0709 0.008,0.1008 0.006,0.0299 0.0159,0.0551 0.0308,0.0756 0.0168,0.0205 0.0401,0.0373 0.07,0.0504 0.0299,0.0131 0.07,0.0215 0.12041,0.0252 l -0.0588,0.34441" />
- <path
- inkscape:connector-curvature="0"
- id="path23713"
- style="font-weight:bold;marker:none"
- d="m 644.74899,556.19784 c 0,0.11574 -0.0168,0.22214 -0.0504,0.31921 -0.0336,0.0952 -0.0821,0.17735 -0.14561,0.24642 -0.0635,0.0672 -0.14,0.11947 -0.22961,0.1568 -0.0877,0.0373 -0.18667,0.056 -0.29681,0.056 -0.10827,0 -0.20721,-0.0187 -0.29681,-0.056 -0.0877,-0.0373 -0.16334,-0.0896 -0.22681,-0.1568 -0.0635,-0.0691 -0.11294,-0.15121 -0.14841,-0.24642 -0.0355,-0.0971 -0.0532,-0.20347 -0.0532,-0.31921 0,-0.11574 0.0177,-0.22121 0.0532,-0.31641 0.0373,-0.0952 0.0877,-0.17641 0.15121,-0.24361 0.0653,-0.0672 0.14187,-0.11947 0.22961,-0.15681 0.0896,-0.0373 0.18667,-0.056 0.29121,-0.056 0.1064,0 0.20348,0.0187 0.29121,0.056 0.0896,0.0373 0.16614,0.0896 0.22961,0.15681 0.0635,0.0672 0.11294,0.1484 0.14841,0.24361 0.0355,0.0952 0.0532,0.20067 0.0532,0.31641 m -0.42562,0 c 0,-0.1288 -0.0261,-0.22961 -0.0784,-0.30241 -0.0504,-0.0747 -0.12321,-0.11201 -0.21841,-0.11201 -0.0952,0 -0.16894,0.0373 -0.22121,0.11201 -0.0523,0.0728 -0.0784,0.17361 -0.0784,0.30241 0,0.12881 0.0261,0.23148 0.0784,0.30801 0.0523,0.0747 0.12601,0.11201 0.22121,0.11201 0.0952,0 0.16801,-0.0373 0.21841,-0.11201 0.0523,-0.0765 0.0784,-0.1792 0.0784,-0.30801" />
- <path
- inkscape:connector-curvature="0"
- id="path23715"
- style="font-weight:bold;marker:none"
- d="m 645.4278,556.15304 c 0,0.23334 0.0943,0.35001 0.28281,0.35001 0.0429,0 0.0831,-0.006 0.12041,-0.0168 0.0373,-0.0112 0.0691,-0.0243 0.0952,-0.0392 l 0,-0.66643 c -0.0205,-0.004 -0.0448,-0.007 -0.0728,-0.008 -0.028,-0.004 -0.0607,-0.006 -0.098,-0.006 -0.11014,0 -0.19228,0.0364 -0.24641,0.10921 -0.0541,0.0728 -0.0812,0.16521 -0.0812,0.27721 m 0.91564,0.59922 c 0,0.24082 -0.0616,0.41909 -0.18481,0.53483 -0.12134,0.1176 -0.30988,0.1764 -0.56562,0.17641 -0.0896,-10e-6 -0.17921,-0.008 -0.26881,-0.0252 -0.0896,-0.0149 -0.17268,-0.0355 -0.24921,-0.0616 l 0.0728,-0.35001 c 0.0653,0.0261 0.13347,0.0467 0.20441,0.0616 0.0728,0.0149 0.15494,0.0224 0.24641,0.0224 0.11947,0 0.20347,-0.0261 0.25201,-0.0784 0.0504,-0.0523 0.0756,-0.11947 0.0756,-0.20161 l 0,-0.0532 c -0.0448,0.0205 -0.0915,0.0364 -0.14,0.0476 -0.0467,0.009 -0.098,0.014 -0.15401,0.014 -0.20347,0 -0.35935,-0.0597 -0.46762,-0.17921 -0.10827,-0.12134 -0.16241,-0.29028 -0.16241,-0.50682 0,-0.10827 0.0168,-0.20628 0.0504,-0.29401 0.0336,-0.0896 0.0821,-0.16614 0.1456,-0.22961 0.0653,-0.0635 0.14467,-0.11201 0.23801,-0.14561 0.0933,-0.0355 0.19881,-0.0532 0.31642,-0.0532 0.0504,0 0.10173,0.003 0.154,0.008 0.0541,0.004 0.10734,0.009 0.15961,0.0168 0.0523,0.007 0.10174,0.0168 0.14841,0.028 0.0485,0.009 0.0915,0.0196 0.1288,0.0308 l 0,1.23765" />
- </g>
- <g
- transform="matrix(1.9571643,0,0,1.9571643,-1654.8196,-1001.6789)"
- id="text23674"
- style="font-size:2.80011916px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">
- <path
- inkscape:connector-curvature="0"
- id="path23718"
- style="font-weight:bold;marker:none"
- d="m 624.13801,556.86139 c -0.0205,-0.0672 -0.0439,-0.13627 -0.07,-0.20721 -0.0243,-0.0709 -0.0485,-0.14187 -0.0728,-0.21281 l -0.75603,0 c -0.0243,0.0709 -0.0495,0.14187 -0.0756,0.21281 -0.0243,0.0709 -0.0467,0.14001 -0.0672,0.20721 l -0.45362,0 c 0.0728,-0.20908 0.14187,-0.40228 0.20721,-0.57963 0.0653,-0.17734 0.1288,-0.34441 0.1904,-0.50122 0.0635,-0.1568 0.12508,-0.30521 0.18481,-0.44522 0.0616,-0.14187 0.12507,-0.28001 0.19041,-0.41441 l 0.41722,0 c 0.0635,0.1344 0.126,0.27254 0.18761,0.41441 0.0616,0.14001 0.1232,0.28842 0.1848,0.44522 0.0635,0.15681 0.12787,0.32388 0.19321,0.50122 0.0653,0.17735 0.13441,0.37055 0.20721,0.57963 l -0.46762,0 m -0.52362,-1.50086 c -0.009,0.028 -0.0233,0.0663 -0.042,0.1148 -0.0187,0.0485 -0.0401,0.10454 -0.0644,0.16801 -0.0243,0.0635 -0.0513,0.13347 -0.0812,0.21001 -0.028,0.0765 -0.0569,0.1568 -0.0868,0.24081 l 0.55162,0 c -0.0299,-0.084 -0.0588,-0.16428 -0.0868,-0.24081 -0.028,-0.0765 -0.0551,-0.14654 -0.0812,-0.21001 -0.0243,-0.0635 -0.0457,-0.11947 -0.0644,-0.16801 -0.0187,-0.0485 -0.0336,-0.0868 -0.0448,-0.1148" />
- <path
- inkscape:connector-curvature="0"
- id="path23720"
- style="font-weight:bold;marker:none"
- d="m 625.71645,555.75814 c -0.0373,-0.009 -0.0812,-0.0187 -0.13161,-0.028 -0.0504,-0.0112 -0.10454,-0.0168 -0.16241,-0.0168 -0.0261,0 -0.0579,0.003 -0.0952,0.008 -0.0355,0.004 -0.0625,0.008 -0.0812,0.014 l 0,1.12565 -0.41722,0 0,-1.39446 c 0.0747,-0.0261 0.16241,-0.0504 0.26321,-0.0728 0.10267,-0.0243 0.21654,-0.0364 0.34161,-0.0364 0.0224,0 0.0495,0.002 0.0812,0.006 0.0317,0.002 0.0635,0.006 0.0952,0.0112 0.0317,0.004 0.0635,0.009 0.0952,0.0168 0.0317,0.006 0.0588,0.0131 0.0812,0.0224 l -0.07,0.34441" />
- <path
- inkscape:connector-curvature="0"
- id="path23722"
- style="font-weight:bold;marker:none"
- d="m 625.91276,556.12496 c 0,-0.10641 0.0168,-0.20628 0.0504,-0.29961 0.0355,-0.0952 0.0859,-0.17734 0.15121,-0.24642 0.0653,-0.0709 0.14467,-0.12693 0.23801,-0.168 0.0933,-0.0411 0.19974,-0.0616 0.31921,-0.0616 0.0784,10e-6 0.15028,0.007 0.21561,0.0224 0.0653,0.0131 0.12881,0.0327 0.19041,0.0588 l -0.0868,0.33321 c -0.0392,-0.0149 -0.0821,-0.028 -0.12881,-0.0392 -0.0467,-0.0112 -0.0989,-0.0168 -0.1568,-0.0168 -0.12321,0 -0.21561,0.0383 -0.27722,0.1148 -0.0597,0.0765 -0.0896,0.17735 -0.0896,0.30242 0,0.13254 0.028,0.23521 0.084,0.30801 0.0579,0.0728 0.15774,0.10921 0.29962,0.10921 0.0504,0 0.10453,-0.005 0.1624,-0.014 0.0579,-0.009 0.11107,-0.0243 0.15961,-0.0448 l 0.0588,0.34162 c -0.0485,0.0205 -0.1092,0.0383 -0.18201,0.0532 -0.0728,0.0149 -0.15307,0.0224 -0.24081,0.0224 -0.1344,0 -0.25014,-0.0196 -0.34721,-0.0588 -0.0971,-0.0411 -0.17734,-0.0961 -0.24081,-0.16521 -0.0616,-0.0691 -0.10734,-0.15027 -0.13721,-0.24361 -0.028,-0.0952 -0.042,-0.19787 -0.042,-0.30801" />
- <path
- inkscape:connector-curvature="0"
- id="path23724"
- style="font-weight:bold;marker:none"
- d="m 627.38282,556.86139 0,-2.10569 0.41722,-0.0672 0,0.70563 c 0.028,-0.009 0.0635,-0.0177 0.10641,-0.0252 0.0448,-0.009 0.0877,-0.014 0.1288,-0.014 0.11947,0 0.21841,0.0168 0.29681,0.0504 0.0803,0.0317 0.14374,0.0775 0.19041,0.1372 0.0485,0.0597 0.0821,0.13068 0.10081,0.21281 0.0205,0.0821 0.0308,0.17361 0.0308,0.27441 l 0,0.83164 -0.41722,0 0,-0.78123 c 0,-0.13441 -0.0177,-0.22961 -0.0532,-0.28562 -0.0336,-0.056 -0.0971,-0.084 -0.19041,-0.084 -0.0373,0 -0.0728,0.004 -0.1064,0.0112 -0.0317,0.006 -0.0607,0.0121 -0.0868,0.0196 l 0,1.12005 -0.41722,0" />
- <path
- inkscape:connector-curvature="0"
- id="path23726"
- style="font-weight:bold;marker:none"
- d="m 629.45167,556.86139 -0.41721,0 0,-1.47286 0.41721,0 0,1.47286 m 0.0392,-1.89848 c 0,0.0765 -0.0252,0.13721 -0.0756,0.18201 -0.0485,0.0429 -0.1064,0.0644 -0.1736,0.0644 -0.0672,0 -0.12601,-0.0215 -0.17641,-0.0644 -0.0485,-0.0448 -0.0728,-0.10547 -0.0728,-0.18201 -1e-5,-0.0765 0.0243,-0.13627 0.0728,-0.17921 0.0504,-0.0448 0.1092,-0.0672 0.17641,-0.0672 0.0672,0 0.12507,0.0224 0.1736,0.0672 0.0504,0.0429 0.0756,0.10267 0.0756,0.17921" />
- <path
- inkscape:connector-curvature="0"
- id="path23728"
- style="font-weight:bold;marker:none"
- d="m 630.20053,556.86139 c -0.0952,-0.18668 -0.19227,-0.40508 -0.29121,-0.65523 -0.0971,-0.25014 -0.18948,-0.52269 -0.27721,-0.81763 l 0.44242,0 c 0.0187,0.0728 0.0401,0.15214 0.0644,0.23801 0.0261,0.084 0.0523,0.16987 0.0784,0.25761 0.028,0.0859 0.0551,0.16987 0.0812,0.25201 0.028,0.0821 0.0551,0.15681 0.0812,0.22401 0.0243,-0.0672 0.0504,-0.14187 0.0784,-0.22401 0.028,-0.0821 0.0551,-0.16614 0.0812,-0.25201 0.028,-0.0877 0.0541,-0.17361 0.0784,-0.25761 0.0261,-0.0859 0.0485,-0.16521 0.0672,-0.23801 l 0.43122,0 c -0.0877,0.29494 -0.18108,0.56749 -0.28001,0.81763 -0.0971,0.25015 -0.19321,0.46855 -0.28841,0.65523 l -0.34722,0" />
- <path
- inkscape:connector-curvature="0"
- id="path23730"
- style="font-weight:bold;marker:none"
- d="m 632.68174,556.12216 c 0,0.11574 -0.0168,0.22214 -0.0504,0.31921 -0.0336,0.0952 -0.0821,0.17734 -0.14561,0.24641 -0.0635,0.0672 -0.14,0.11947 -0.22961,0.15681 -0.0877,0.0373 -0.18667,0.056 -0.29681,0.056 -0.10827,0 -0.20721,-0.0187 -0.29681,-0.056 -0.0877,-0.0373 -0.16334,-0.0896 -0.22681,-0.15681 -0.0635,-0.0691 -0.11294,-0.1512 -0.14841,-0.24641 -0.0355,-0.0971 -0.0532,-0.20347 -0.0532,-0.31921 0,-0.11574 0.0177,-0.22121 0.0532,-0.31642 0.0373,-0.0952 0.0877,-0.1764 0.15121,-0.24361 0.0653,-0.0672 0.14187,-0.11947 0.22961,-0.1568 0.0896,-0.0373 0.18667,-0.056 0.29121,-0.056 0.10641,10e-6 0.20348,0.0187 0.29121,0.056 0.0896,0.0373 0.16614,0.0896 0.22961,0.1568 0.0635,0.0672 0.11294,0.14841 0.14841,0.24361 0.0355,0.0952 0.0532,0.20068 0.0532,0.31642 m -0.42562,0 c 0,-0.12881 -0.0261,-0.22961 -0.0784,-0.30242 -0.0504,-0.0747 -0.1232,-0.112 -0.21841,-0.112 -0.0952,0 -0.16894,0.0373 -0.22121,0.112 -0.0523,0.0728 -0.0784,0.17361 -0.0784,0.30242 0,0.1288 0.0261,0.23147 0.0784,0.30801 0.0523,0.0747 0.12601,0.11201 0.22121,0.11201 0.0952,0 0.16801,-0.0373 0.21841,-0.11201 0.0523,-0.0765 0.0784,-0.17921 0.0784,-0.30801" />
- </g>
<rect
style="opacity:0.5;fill:none;stroke:#ff5555;stroke-width:0.66635472;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="rect8725"
width="249.10905"
height="164.02649"
x="30.756149"
- y="-87.776787" />
+ y="582.22321" />
<rect
- y="197.10745"
+ y="867.10742"
x="112.92581"
height="100.40426"
width="220.28499"
@@ -1791,7 +1250,57 @@
width="212.24748"
height="91.091072"
x="84.837708"
- y="96.393478" />
+ y="766.39349" />
+ <g
+ style="display:inline"
+ id="g20363"
+ transform="translate(-167.36832,-173.99499)">
+ <g
+ id="g20352">
+ <text
+ sodipodi:linespacing="125%"
+ id="text11717-5"
+ y="204.56917"
+ x="88.778992"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ id="tspan11719-7"
+ style="font-size:12px;font-weight:normal;fill:#aa4400"
+ y="204.56917"
+ x="88.778992"
+ sodipodi:role="line">Sorry, we are</tspan><tspan
+ style="font-size:12px;font-weight:normal;fill:#aa4400"
+ y="219.56917"
+ x="88.778992"
+ sodipodi:role="line"
+ id="tspan11791-7">still designing </tspan><tspan
+ id="tspan11725-4"
+ style="font-size:12px;font-weight:normal;fill:#aa4400"
+ y="234.56917"
+ x="88.778992"
+ sodipodi:role="line">this tutorial.</tspan><tspan
+ id="tspan11727-0"
+ style="font-size:12px;font-weight:normal;fill:#aa4400"
+ y="249.56917"
+ x="88.778992"
+ sodipodi:role="line" /></text>
+ <g
+ id="g16880"
+ transform="matrix(0.75024247,0,0,0.75024247,57.124219,194.2229)"
+ style="display:inline">
+ <g
+ id="Layer_1-8" />
+ <g
+ id="cog_x5F_alt_x5F_32x32">
+ <path
+ id="path16872"
+ d="m 32,17.969 v -4 L 27.219,11.977 C 27.086,11.602 26.946,11.24 26.774,10.883 L 28.704,6.078 25.875,3.25 21.112,5.211 C 20.75,5.036 20.378,4.888 19.995,4.75 L 17.969,0 h -4 L 11.992,4.734 C 11.594,4.875 11.211,5.023 10.831,5.203 L 6.078,3.294 3.25,6.122 5.188,10.833 C 5,11.219 4.847,11.614 4.703,12.021 L 0,14.031 v 4 l 4.706,1.961 c 0.146,0.406 0.302,0.802 0.489,1.188 l -1.903,4.742 2.828,2.828 4.724,-1.945 c 0.378,0.18 0.766,0.325 1.164,0.461 L 14.031,32 h 4 l 1.979,-4.758 c 0.38,-0.141 0.755,-0.289 1.114,-0.461 l 4.797,1.922 2.828,-2.828 -1.969,-4.773 c 0.167,-0.359 0.305,-0.722 0.438,-1.094 L 32,17.969 z M 15.969,22 c -3.312,0 -6,-2.688 -6,-6 0,-3.312 2.688,-6 6,-6 3.312,0 6,2.688 6,6 0,3.312 -2.688,6 -6,6 z"
+ inkscape:connector-curvature="0"
+ style="fill:#231f20" />
+ </g>
+ </g>
+ </g>
+ </g>
</g>
<g
style="display:inline"
@@ -1808,14 +1317,177 @@
</g>
<path
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m 174.035,690.39519 c -36.78501,6.53254 -42.5348,26.83565 -42.5348,26.83565 l -2.47152,7.12811"
+ d="m 174.035,1360.3952 c -36.78501,6.5325 -42.5348,26.8356 -42.5348,26.8356 l -2.47152,7.1281"
id="path14206"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5858-1"
- d="m 145.09495,570.24435 c -36.78501,-6.53253 -42.5348,-26.83565 -42.5348,-26.83565 l -2.47152,-7.1281"
+ d="m 145.09495,1240.2444 c -36.78501,-6.5326 -42.5348,-26.8357 -42.5348,-26.8357 l -2.47152,-7.1281"
style="color:#000000;fill:none;stroke:#000000;stroke-width:0.92025012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-end:url(#Arrow1Mend);visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <g
+ style="display:inline"
+ id="g3-7"
+ transform="matrix(1.5625,0,0,1.5625,131.41774,773.36417)">
+ <polygon
+ style="fill:#231f20"
+ points="11.941,14.363 26.305,0 32,5.695 11.941,25.754 11.941,25.754 0,13.812 5.695,8.117 "
+ id="polygon5-7" />
+ </g>
+ <g
+ transform="matrix(0.64370032,0,0,0.64370032,138.74742,650.73376)"
+ id="g26502"
+ style="display:inline">
+ <polygon
+ id="polygon26504"
+ points="11.941,14.363 26.305,0 32,5.695 11.941,25.754 11.941,25.754 0,13.812 5.695,8.117 "
+ style="fill:#231f20" />
+ </g>
+ <g
+ id="g27667"
+ transform="translate(-4,0)">
+ <g
+ transform="translate(-355.68168,-37.102317)"
+ id="g14010">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14008"
+ width="27.9799"
+ height="19.296482"
+ x="497.84924"
+ y="468.85229" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20;display:inline"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14006" />
+ </g>
+ <g
+ transform="translate(-331.68168,-27.102317)"
+ id="g14020">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect14022"
+ width="27.9799"
+ height="19.296482"
+ x="497.84924"
+ y="468.85229" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20;display:inline"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path14024" />
+ </g>
+ <g
+ id="g14014"
+ transform="translate(-345.68168,-19.102317)">
+ <rect
+ y="468.85229"
+ x="497.84924"
+ height="19.296482"
+ width="27.9799"
+ id="rect14016"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path14018"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ style="fill:#231f20;display:inline"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g27650"
+ transform="translate(-9,-11)">
+ <g
+ id="g27596"
+ transform="translate(-355.68168,32.897683)">
+ <rect
+ y="468.85229"
+ x="497.84924"
+ height="19.296482"
+ width="27.9799"
+ id="rect27598"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path27600"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ style="fill:#231f20;display:inline"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g27602"
+ transform="translate(-331.68168,42.897683)">
+ <rect
+ y="468.85229"
+ x="497.84924"
+ height="19.296482"
+ width="27.9799"
+ id="rect27604"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path27606"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ style="fill:#231f20;display:inline"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g27608"
+ transform="translate(-363.68168,63.897683)">
+ <rect
+ y="468.85229"
+ x="497.84924"
+ height="19.296482"
+ width="27.9799"
+ id="rect27610"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path27612"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ style="fill:#231f20;display:inline"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="translate(-333.68168,68.897683)"
+ id="g27644">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect27646"
+ width="27.9799"
+ height="19.296482"
+ x="497.84924"
+ y="468.85229" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20;display:inline"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path27648" />
+ </g>
+ <g
+ transform="translate(-345.68168,50.897683)"
+ id="g27614">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect27616"
+ width="27.9799"
+ height="19.296482"
+ x="497.84924"
+ y="468.85229" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#231f20;display:inline"
+ d="m 495.87338,467.03226 v 24 h 32 v -24 h -32 z m 24.859,4 -7.445,7.445 c -0.781,0.781 -2.047,0.781 -2.828,0 l -7.445,-7.445 h 17.718 z m -20.859,16 v -13.484 l 7.758,7.758 c 1.172,1.172 2.703,1.758 4.242,1.758 1.539,0 3.07,-0.586 4.242,-1.758 l 7.758,-7.758 v 13.484 h -24 z"
+ id="path27618" />
+ </g>
+ </g>
+ <g
+ transform="matrix(0.64370032,0,0,0.64370032,-115.51993,439.66401)"
+ id="g26502-0"
+ style="display:inline">
+ <polygon
+ id="polygon26504-5"
+ points="26.305,0 32,5.695 11.941,25.754 11.941,25.754 0,13.812 5.695,8.117 11.941,14.363 "
+ style="fill:#231f20" />
+ </g>
</g>
<g
style="display:none"
@@ -1868,38 +1540,6 @@
style="font-style:italic">pulsa con tu ratón para continuar</tspan></text>
<text
sodipodi:linespacing="125%"
- id="text3071-9-1"
- y="406.39865"
- x="135.67761"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- id="tspan13782-8"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="406.39865"
- x="135.67761"
- sodipodi:role="line">Lo siento, estamos</tspan><tspan
- id="tspan8780"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="421.39865"
- x="135.67761"
- sodipodi:role="line">diseñando este</tspan><tspan
- id="tspan8782"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="436.39865"
- x="135.67761"
- sodipodi:role="line">tutorial.</tspan><tspan
- id="tspan8870"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="451.39865"
- x="135.67761"
- sodipodi:role="line">Mientras tanto...</tspan><tspan
- id="tspan8784"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="466.39865"
- x="135.67761"
- sodipodi:role="line" /></text>
- <text
- sodipodi:linespacing="125%"
id="text14208"
y="650.30011"
x="181.83585"
@@ -1955,270 +1595,269 @@
style="font-weight:normal">...</tspan></tspan></text>
</g>
<g
- inkscape:groupmode="layer"
- id="g26610"
- inkscape:label="en-working"
- style="display:none">
+ style="display:inline"
+ inkscape:label="en"
+ id="layer8"
+ inkscape:groupmode="layer">
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="181.83585"
+ y="1320.3"
+ id="text11729"
+ sodipodi:linespacing="125%"><tspan
+ id="tspan11731"
+ sodipodi:role="line"
+ x="181.83585"
+ y="1320.3"
+ style="font-size:12px;font-weight:normal;fill:#aa4400" /><tspan
+ id="tspan11733"
+ sodipodi:role="line"
+ x="181.83585"
+ y="1335.3"
+ style="font-size:12px;font-weight:normal;fill:#aa4400">...give us your <tspan
+ style="font-weight:bold"
+ id="tspan11735">feedback </tspan></tspan><tspan
+ sodipodi:role="line"
+ x="181.83585"
+ y="1350.3"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ id="tspan11739">and participate</tspan><tspan
+ id="tspan11741"
+ sodipodi:role="line"
+ x="181.83585"
+ y="1365.3"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">to improve this tool...</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text11743"
+ y="1236.2572"
+ x="154.17371"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ y="1236.2572"
+ x="154.17371"
+ sodipodi:role="line"
+ id="tspan11745">...here you can create</tspan><tspan
+ id="tspan11814"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
+ y="1251.2572"
+ x="154.17371"
+ sodipodi:role="line">your new <tspan
+ style="font-weight:bold"
+ id="tspan17071">tasks</tspan>...</tspan></text>
<g
style="display:inline"
- id="g26612"
+ id="g18984"
transform="translate(106.00677,59.44173)">
<text
xml:space="preserve"
style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
x="101.1684"
y="122.68937"
- id="text26614"
+ id="text18986"
sodipodi:linespacing="125%"
transform="scale(0.99912117,1.0008796)"><tspan
sodipodi:role="line"
x="101.1684"
y="122.68937"
style="font-size:32px;font-weight:bold;fill:#aa4400"
- id="tspan26616">tareas</tspan></text>
+ id="tspan18988">tasks</tspan></text>
<text
transform="scale(0.99912117,1.0008796)"
sodipodi:linespacing="125%"
- id="text26618"
+ id="text18990"
y="95.114334"
x="101.42439"
style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- id="tspan26620"
+ id="tspan18992"
style="font-size:16px;font-style:normal;font-weight:normal;fill:#aa4400"
y="95.114334"
x="101.42439"
- sodipodi:role="line">explicando las</tspan></text>
+ sodipodi:role="line">explaining the</tspan></text>
</g>
<text
transform="translate(0,435.82679)"
sodipodi:linespacing="125%"
- id="text26622"
+ id="text18999"
y="-168.92439"
x="149.85907"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
style="font-style:italic"
sodipodi:role="line"
- id="tspan26624"
x="149.85907"
- y="-168.92439">pulsa con tu ratón para continuar</tspan></text>
+ y="-168.92439"
+ id="tspan19005">Mouse click to continue</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="135.67761"
- y="406.39865"
- id="text26626"
+ x="202.44556"
+ y="373.65405"
+ id="text19009"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
- x="135.67761"
- y="406.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan26628">Lo siento, estamos</tspan><tspan
+ id="tspan19017"
+ x="202.44556"
+ y="373.65405">Usually a group needs to </tspan><tspan
sodipodi:role="line"
- x="135.67761"
- y="421.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan26630">diseñando este</tspan><tspan
+ id="tspan19019"
+ x="202.44556"
+ y="388.65405"><tspan
+ style="font-weight:bold"
+ id="tspan21047">distribute the tasks</tspan> to do </tspan><tspan
sodipodi:role="line"
- x="135.67761"
- y="436.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan26632">tutorial.</tspan><tspan
- sodipodi:role="line"
- x="135.67761"
- y="451.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan26634">Mientras tanto...</tspan><tspan
- sodipodi:role="line"
- x="135.67761"
- y="466.39865"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- id="tspan26636" /></text>
+ id="tspan19071"
+ x="202.44556"
+ y="403.65405">among the group members</tspan></text>
<text
+ sodipodi:linespacing="125%"
+ id="text19073"
+ y="449.42584"
+ x="202.76956"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="449.42584"
+ x="202.76956"
+ id="tspan19083"
+ sodipodi:role="line">This is usually done in meetings...</tspan><tspan
+ y="464.42584"
+ x="202.76956"
+ id="tspan19129"
+ sodipodi:role="line">or with <tspan
+ style="font-weight:bold"
+ id="tspan21049">many emails</tspan></tspan></text>
+ <text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="181.83585"
- y="650.30011"
- id="text26638"
+ x="202.44556"
+ y="510.16165"
+ id="text19131"
sodipodi:linespacing="125%"><tspan
- id="tspan26640"
sodipodi:role="line"
- x="181.83585"
- y="650.30011"
- style="font-size:12px;font-weight:normal;fill:#aa4400" /><tspan
- id="tspan26642"
+ id="tspan19147"
+ x="202.44556"
+ y="510.16165">Comments, doubts, follow-ups, </tspan><tspan
sodipodi:role="line"
- x="181.83585"
- y="665.30011"
- style="font-size:12px;font-weight:normal;fill:#aa4400">...darnos tu <tspan
- style="font-weight:bold"
- id="tspan26644">feedback </tspan></tspan><tspan
- id="tspan26646"
+ id="tspan19149"
+ x="202.44556"
+ y="525.16162">assignment of people to tasks... </tspan><tspan
sodipodi:role="line"
- x="181.83585"
- y="680.30011"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">y participar para </tspan><tspan
- sodipodi:role="line"
- x="181.83585"
- y="695.30011"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- id="tspan26648">mejorar esta </tspan><tspan
- id="tspan26650"
- sodipodi:role="line"
- x="181.83585"
- y="710.30011"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">herramienta...</tspan></text>
+ id="tspan19187"
+ x="202.44556"
+ y="540.16162">generate <tspan
+ style="font-weight:bold"
+ id="tspan21051">more & more emails</tspan></tspan></text>
<text
sodipodi:linespacing="125%"
- id="text26652"
- y="566.2572"
- x="154.17371"
+ id="text19247"
+ y="585.91547"
+ x="202.16956"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="566.2572"
- x="154.17371"
+ y="585.91547"
+ x="202.16956"
+ id="tspan19271"
+ sodipodi:role="line">In our <tspan
+ style="font-weight:bold"
+ id="tspan21053">Tasks</tspan> each group has all </tspan><tspan
+ y="600.91547"
+ x="202.16956"
+ id="tspan19303"
+ sodipodi:role="line">their tasks in one place</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="202.86555"
+ y="723.47296"
+ id="text19305"
+ sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
- id="tspan26654">...aquí puedes crear </tspan><tspan
- style="font-size:12px;font-style:normal;font-weight:bold;fill:#aa4400"
- y="581.2572"
- x="154.17371"
+ id="tspan19335"
+ x="202.86555"
+ y="723.47296">All group members can see </tspan><tspan
sodipodi:role="line"
- id="tspan26656"><tspan
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- id="tspan26658">nuevas </tspan>tareas<tspan
- style="font-weight:normal"
- id="tspan26660">...</tspan></tspan></text>
- </g>
- <g
- style="display:none"
- inkscape:label="en"
- id="layer8"
- inkscape:groupmode="layer">
+ id="tspan19361"
+ x="202.86555"
+ y="738.47296">the list of tasks to do next</tspan></text>
<text
- transform="scale(0.99912117,1.0008796)"
sodipodi:linespacing="125%"
- id="text11705"
- y="166.0929"
- x="207.26842"
- style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- id="tspan11707"
- style="font-size:32px;font-weight:bold;fill:#aa4400"
- y="166.0929"
- x="207.26842"
- sodipodi:role="line">tasks</tspan></text>
- <text
- xml:space="preserve"
+ id="text20687"
+ y="776.72675"
+ x="202.76956"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="181.83585"
- y="650.30011"
- id="text11729"
- sodipodi:linespacing="125%"><tspan
- id="tspan11731"
+ xml:space="preserve"><tspan
sodipodi:role="line"
- x="181.83585"
- y="650.30011"
- style="font-size:12px;font-weight:normal;fill:#aa4400" /><tspan
- id="tspan11733"
+ id="tspan21071"
+ x="202.76956"
+ y="776.72675">Each task is like a document </tspan><tspan
sodipodi:role="line"
- x="181.83585"
- y="665.30011"
- style="font-size:12px;font-weight:normal;fill:#aa4400">...give us your <tspan
- style="font-weight:bold"
- id="tspan11735">feedback </tspan></tspan><tspan
+ id="tspan21073"
+ x="202.76956"
+ y="791.72675">with the responsibles of the task.</tspan><tspan
sodipodi:role="line"
- x="181.83585"
- y="680.30011"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- id="tspan11739">and participate</tspan><tspan
- id="tspan11741"
+ id="tspan21075"
+ x="202.76956"
+ y="806.72675">They can comment or discuss about it </tspan><tspan
sodipodi:role="line"
- x="181.83585"
- y="695.30011"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400">to improve this tool...</tspan></text>
+ id="tspan21077"
+ x="202.76956"
+ y="821.72675">until the task is finished and crossed </tspan></text>
<text
sodipodi:linespacing="125%"
- id="text11743"
- y="566.2572"
- x="154.17371"
+ id="text20924"
+ y="871.44855"
+ x="202.00156"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="566.2572"
- x="154.17371"
- sodipodi:role="line"
- id="tspan11745">...here you can create</tspan><tspan
- id="tspan11814"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="581.2572"
- x="154.17371"
- sodipodi:role="line">your new <tspan
+ y="871.44855"
+ x="202.00156"
+ id="tspan20948"
+ sodipodi:role="line">If you want to assign a group </tspan><tspan
+ y="886.44855"
+ x="202.00156"
+ id="tspan20950"
+ sodipodi:role="line">member to a task, just<tspan
style="font-weight:bold"
- id="tspan17071">tasks</tspan>...</tspan></text>
+ id="tspan21069"> drag & drop </tspan></tspan><tspan
+ y="901.44855"
+ x="202.00156"
+ id="tspan20952"
+ sodipodi:role="line">his/her avatar over the task</tspan></text>
<text
- transform="scale(0.99912117,1.0008796)"
sodipodi:linespacing="125%"
- id="text11787"
- y="184.92917"
- x="207.5244"
- style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ id="text21055"
+ y="654.16925"
+ x="202.86555"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- id="tspan11789"
- style="font-size:16px;font-style:normal;font-weight:normal;fill:#aa4400"
- y="184.92917"
- x="207.5244"
- sodipodi:role="line">explained</tspan></text>
+ sodipodi:role="line"
+ id="tspan21063"
+ x="202.86555"
+ y="654.16925">As with documents, you can </tspan><tspan
+ sodipodi:role="line"
+ id="tspan21065"
+ x="202.86555"
+ y="669.16925">create <tspan
+ style="font-weight:bold"
+ id="tspan21067">folders</tspan> to organize tasks</tspan></text>
<g
- id="g20363"
- transform="translate(119,14)">
- <g
- id="g20352">
- <text
- sodipodi:linespacing="125%"
- id="text11717-5"
- y="204.56917"
- x="88.778992"
- style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:24;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- xml:space="preserve"><tspan
- id="tspan11719-7"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="204.56917"
- x="88.778992"
- sodipodi:role="line">Sorry, we are</tspan><tspan
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="219.56917"
- x="88.778992"
- sodipodi:role="line"
- id="tspan11791-7">still designing </tspan><tspan
- id="tspan11725-4"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="234.56917"
- x="88.778992"
- sodipodi:role="line">this tutorial.</tspan><tspan
- id="tspan11727-0"
- style="font-size:12px;font-weight:normal;fill:#aa4400"
- y="249.56917"
- x="88.778992"
- sodipodi:role="line" /></text>
- <g
- id="g16880"
- transform="matrix(0.75024247,0,0,0.75024247,57.124219,194.2229)"
- style="display:inline">
- <g
- id="Layer_1-8" />
- <g
- id="cog_x5F_alt_x5F_32x32">
- <path
- id="path16872"
- d="m 32,17.969 v -4 L 27.219,11.977 C 27.086,11.602 26.946,11.24 26.774,10.883 L 28.704,6.078 25.875,3.25 21.112,5.211 C 20.75,5.036 20.378,4.888 19.995,4.75 L 17.969,0 h -4 L 11.992,4.734 C 11.594,4.875 11.211,5.023 10.831,5.203 L 6.078,3.294 3.25,6.122 5.188,10.833 C 5,11.219 4.847,11.614 4.703,12.021 L 0,14.031 v 4 l 4.706,1.961 c 0.146,0.406 0.302,0.802 0.489,1.188 l -1.903,4.742 2.828,2.828 4.724,-1.945 c 0.378,0.18 0.766,0.325 1.164,0.461 L 14.031,32 h 4 l 1.979,-4.758 c 0.38,-0.141 0.755,-0.289 1.114,-0.461 l 4.797,1.922 2.828,-2.828 -1.969,-4.773 c 0.167,-0.359 0.305,-0.722 0.438,-1.094 L 32,17.969 z M 15.969,22 c -3.312,0 -6,-2.688 -6,-6 0,-3.312 2.688,-6 6,-6 3.312,0 6,2.688 6,6 0,3.312 -2.688,6 -6,6 z"
- inkscape:connector-curvature="0"
- style="fill:#231f20" />
- </g>
- </g>
- </g>
+ transform="matrix(6.0669763,0,0,1,-557.31157,-8.4812429)"
+ id="g7744"
+ style="font-size:14.02383423000000029px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa4400;fill-opacity:0.96078432;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu">
+ <path
+ inkscape:connector-curvature="0"
+ id="path7746"
+ style="fill:#aa4400;marker:none;fill-opacity:0.96078432"
+ d="m 150.73951,826.59859 7.01192,0 0,1.10788 -7.01192,0 0,-1.10788" />
</g>
+ <path
+ d="m 131.27166,791.57086 49.83018,0 0,9.8463 -49.83018,0 0,-9.8463"
+ style="font-size:14.02383423px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;marker:none;visibility:visible;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ id="path7754"
+ inkscape:connector-curvature="0" />
</g>
<g
style="display:none"
1
0
r1828 - in trunk: . debian src/main/java/cc/kune/core/client/actions src/main/java/cc/kune/core/server src/main/java/cc/kune/core/server/auth src/main/java/cc/kune/core/server/manager/impl src/main/java/cc/kune/core/server/state src/main/java/cc/kune/wave/client
by Vicente J. Ruiz Jurado 09 Apr '12
by Vicente J. Ruiz Jurado 09 Apr '12
09 Apr '12
Author: vjrj_
Date: 2012-04-09 09:04:40 +0200 (Mon, 09 Apr 2012)
New Revision: 1828
Added:
trunk/src/main/java/cc/kune/core/server/UserSessionMonitor.java
Modified:
trunk/TODO
trunk/debian/changelog
trunk/debian/files
trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java
trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java
trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
trunk/src/main/java/cc/kune/core/server/UserSession.java
trunk/src/main/java/cc/kune/core/server/UserSessionManager.java
trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java
trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java
Log:
Works about session expiration
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/TODO 2012-04-09 07:04:40 UTC (rev 1828)
@@ -12,6 +12,22 @@
nick == assigned to
* SHORT-TERM (URGENT)
+** Session expired
+12-04-09 00:14:29 GWTServiceFilter [INFO] --------------------------------------------------------------------------------
+2012-04-09 00:14:29 GWTServiceFilter [DEBUG] SERVICE: /ws/UserService - UserService
+2012-04-09 00:14:29 AuthenticatedMethodInterceptor [INFO] Method: onlyCheckSession
+2012-04-09 00:14:29 AuthenticatedMethodInterceptor [INFO] Userhash received: null
+--------------------------------
+2012-04-09 00:14:24 AuthenticatedMethodInterceptor [INFO] Session expired (not logged in server)
+2012-04-09 00:14:25 RackServletFilter [DEBUG] REQUEST: /ws/ContentService
+2012-04-09 00:14:25 LogFilter [DEBUG] REQUEST: /ws/ContentService
+2012-04-09 00:14:25 GWTServiceFilter [INFO] --------------------------------------------------------------------------------
+------------------
+2012-04-09 00:14:34 GWTServiceFilter [DEBUG] SERVICE: /ws/UserService - UserService
+2012-04-09 00:14:34 AuthenticatedMethodInterceptor [INFO] Method: onlyCheckSession
+2012-04-09 00:14:34 AuthenticatedMethodInterceptor [INFO] Userhash received: null
+2012-04-09 00:14:34 AuthenticatedMethodInterceptor [INFO] --------------------------------------------------------------------------------
+
** Permission tables
|---------------------------+-------------+--------------|
@@ -62,7 +78,6 @@
| New folder | | | | |
|------------+--------+---------+---------+-----------|
-
** setui/root/port 80
[ ] http://wiki.eclipse.org/Jetty/Howto/Port80#Configuring_Jetty.27s_SetUID_Fea…
[ ] https://github.com/disconnect/apache-websocket
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/debian/changelog 2012-04-09 07:04:40 UTC (rev 1828)
@@ -1,3 +1,9 @@
+kune (0.1.0+b8) oneiric; urgency=low
+
+ * Perms in Events fixed. Wave updated. Lists deletion by admin.
+
+ -- Vicente J. Ruiz Jurado <vjrj(a)ourproject.org> Sun, 08 Apr 2012 21:31:33 +0200
+
kune (0.1.0+b7) oneiric; urgency=low
* Improved openfire connection, debian init and wave offline render and cache.
Modified: trunk/debian/files
===================================================================
--- trunk/debian/files 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/debian/files 2012-04-09 07:04:40 UTC (rev 1828)
@@ -1 +1 @@
-kune_0.1.0+b7_all.deb java optional
+kune_0.1.0+b8_all.deb java optional
Modified: trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -29,6 +29,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescProviderCollection;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+import cc.kune.common.client.log.Log;
import cc.kune.core.client.registry.IdGenerator;
import cc.kune.core.shared.domain.ContentStatus;
import cc.kune.core.shared.domain.utils.AccessRights;
@@ -122,8 +123,7 @@
final GuiActionDescrip descrip = descripProv.get();
final AbstractAction action = descrip.getAction();
if (action instanceof RolAction) {
- // Log.debug("Must add action?: " + action + ", isLogged: " + isLogged +
- // ", r: " + rights);
+ Log.debug("Must add action?: " + action + ", isLogged: " + isLogged + ", r: " + rights);
if (mustAdd((RolAction) action, isLogged, rights)) {
add(collection, descrip, targetItem);
}
Modified: trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -43,29 +43,12 @@
this.logger = logger;
}
- //
- // private void configureLog4j() {
- // try {
- // final Properties properties = new Properties();
- // // FIXME this should be optional
- // final InputStream input =
- // Thread.currentThread().getContextClassLoader().getResourceAsStream(
- // "log4j.properties");
- // // "log4j.dev.properties");
- // properties.load(input);
- // PropertyConfigurator.configure(properties);
- // } catch (final IOException e) {
- // e.printStackTrace();
- // }
- // }
-
public Logger getLogger() {
return logger;
}
@Override
public void start() {
- // configureLog4j();
logger.log(Level.INFO, "Kune persistence starting");
persistenceService.start();
logger.log(Level.INFO, "Kune persistence started");
Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -188,7 +188,7 @@
bind(EntityLogoUploadManager.class).in(Singleton.class);
bind(EntityLogoDownloadManager.class).in(Singleton.class);
bind(ParticipantUtils.class).in(Singleton.class);
- bind(UsersOnline.class).to(UserSessionManager.class).in(Singleton.class);
+ bind(UsersOnline.class).to(UserSessionManager.class).asEagerSingleton();
requestStaticInjection(AccessRightsUtils.class);
bind(WaveEmailNotifier.class).in(Singleton.class);
bind(PendingNotificationSender.class).in(Singleton.class);
Modified: trunk/src/main/java/cc/kune/core/server/UserSession.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/UserSession.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/core/server/UserSession.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -30,6 +30,7 @@
private String userHash;
private Long userId;
+ @Deprecated
private String userName;
public UserSession() {
@@ -43,6 +44,7 @@
return userId;
}
+ @Deprecated
public String getUserName() {
return userName;
}
@@ -55,6 +57,7 @@
this.userId = userId;
}
+ @Deprecated
public void setUserName(final String userName) {
this.userName = userName;
}
Modified: trunk/src/main/java/cc/kune/core/server/UserSessionManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/UserSessionManager.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/core/server/UserSessionManager.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -22,6 +22,9 @@
import java.util.HashSet;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.eclipse.jetty.server.SessionManager;
import org.eclipse.jetty.server.session.HashSessionManager;
import cc.kune.core.server.manager.UserManager;
@@ -32,23 +35,29 @@
import com.google.inject.Provider;
import com.google.inject.Singleton;
+@LogThis
@Singleton
public class UserSessionManager implements UsersOnline {
+ public static final Log LOG = LogFactory.getLog(UserSessionManager.class);
+
private final Set<String> logins;
private final UserManager manager;
private final Provider<UserSession> userSessionProv;
@Inject
public UserSessionManager(final UserManager manager, final Provider<UserSession> userSessionProv,
- final org.eclipse.jetty.server.SessionManager jettySessionManager) {
+ final SessionManager jettySessionManager, final UserSessionMonitor userSessionMonitor) {
this.manager = manager;
this.userSessionProv = userSessionProv;
final HashSessionManager hSessionManager = (HashSessionManager) jettySessionManager;
- // hSessionManager.setMaxInactiveInterval(-1);
+ hSessionManager.setMaxInactiveInterval(-1);
+ hSessionManager.setSavePeriod(5);
+ hSessionManager.addEventListener(userSessionMonitor);
+ LOG.debug(String.format("User sessions: %d", hSessionManager.getSessions()));
+ LOG.debug(String.format("User sessions total: %d", hSessionManager.getSessionsTotal()));
// this prevent saving the session??
// hSessionManager.setUsingCookies(true);
- hSessionManager.setSavePeriod(5);
// For now the implementation of this can be very inaccurate (if we
// login/logout several times with different clients) and not scalable
// (stored in a MAP). Possible fix, to use jabber status
@@ -100,7 +109,6 @@
logins.remove(getUserLoggedShortName());
}
getUserSession().setUserId(null);
- getUserSession().setUserName(null);
getUserSession().setHash(null);
}
Added: trunk/src/main/java/cc/kune/core/server/UserSessionMonitor.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/UserSessionMonitor.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/UserSessionMonitor.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -0,0 +1,49 @@
+/*
+ *
+ * Copyright (C) 2007-2012 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package cc.kune.core.server;
+
+import javax.servlet.http.HttpSessionEvent;
+import javax.servlet.http.HttpSessionListener;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import com.google.inject.Singleton;
+
+@Singleton
+public class UserSessionMonitor implements HttpSessionListener {
+ public static final Log LOG = LogFactory.getLog(UserSessionMonitor.class);
+
+ @Override
+ public void sessionCreated(final HttpSessionEvent event) {
+ LOG.debug(String.format("Session created (with max inactive: %d)",
+ event.getSession().getMaxInactiveInterval()), new Throwable());
+ // event.getSession().getServletContext().getContextPath(),
+ }
+
+ @Override
+ public void sessionDestroyed(final HttpSessionEvent event) {
+ LOG.debug(String.format("Session destroyed (with max inactive: %d)",
+ event.getSession().getMaxInactiveInterval()), new Throwable());
+ // event.getSession().getServletContext().getContextPath(),
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -51,34 +51,46 @@
final String userHash = arguments[0] == null || arguments[0].equals("null") ? null
: (String) arguments[0];
- LOG.info("Method: " + invocation.getMethod().getName());
+ final String method = invocation.getMethod().getName();
+ logLine(method, userHash, true);
+ LOG.info("Method: " + method);
LOG.info("Userhash received: " + userHash);
- LOG.info("--------------------------------------------------------------------------------");
final Authenticated authAnnotation = invocation.getStaticPart().getAnnotation(Authenticated.class);
final boolean mandatory = authAnnotation.mandatory();
if (userHash == null && mandatory) {
+ LOG.info("Not logged in server and mandatory");
+ logLine(method, userHash, false);
throw new UserMustBeLoggedException();
} else if (userSessionManager.isUserNotLoggedIn() && mandatory) {
LOG.info("Session expired (not logged in server and mandatory)");
+ logLine(method, userHash, false);
throw new SessionExpiredException();
} else if (userSessionManager.isUserNotLoggedIn() && userHash == null) {
// Ok, do nothing
} else if (userSessionManager.isUserNotLoggedIn() && userHash != null) {
LOG.info("Session expired (not logged in server)");
+ logLine(method, userHash, false);
throw new SessionExpiredException();
} else if (!userSessionManager.getHash().equals(userHash)) {
final String serverHash = userSessionManager.getHash();
userSessionManager.logout();
LOG.info("Session expired (userHash: " + userHash + " different from server hash: " + serverHash
+ ")");
+ logLine(method, userHash, false);
throw new SessionExpiredException();
}
final Object result = invocation.proceed();
+ logLine(method, userHash, false);
return result;
} finally {
}
}
+ private void logLine(final String method, final String userHash, final boolean start) {
+ LOG.info(new StringBuffer().append("----- ").append(start ? "Starting" : "Ending").append(
+ " method: ").append(method).append("- userhash: ").append(userHash).append(" -----"));
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -284,6 +284,7 @@
final SocialNetwork network = setSocialNetwork(group, publicVisibility, snVisibility);
if (!group.getGroupType().equals(GroupType.ORPHANED_PROJECT)) {
network.addAdmin(userGroup);
+ network.getAccessLists().getEditors().setMode(GroupListMode.NOBODY);
}
}
@@ -346,7 +347,6 @@
final SocialNetworkVisibility snVisibility) {
final SocialNetwork network = group.getSocialNetwork();
final AccessLists lists = network.getAccessLists();
- lists.getEditors().setMode(GroupListMode.NOBODY);
lists.getViewers().setMode(publicVisibility);
network.setVisibility(snVisibility);
return network;
Modified: trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -133,7 +133,8 @@
String waveUrl = null;
try {
waveUrl = TextUtils.generateHtmlLink(
- JavaWaverefEncoder.encodeToUriPathSegment(JavaWaverefEncoder.decodeWaveRefFromPath(waveRef)),
+ "#"
+ + JavaWaverefEncoder.encodeToUriPathSegment(JavaWaverefEncoder.decodeWaveRefFromPath(waveRef)),
waveRef, false);
} catch (final InvalidWaveRefException invalidEx) {
}
Modified: trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-04-08 19:05:06 UTC (rev 1827)
+++ trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-04-09 07:04:40 UTC (rev 1828)
@@ -56,13 +56,14 @@
public void onNetworkStatus(final NetworkStatusEvent event) {
switch (event.getStatus()) {
case CONNECTED:
+ break;
+ case RECONNECTED:
session.check(new AsyncCallbackSimple<Void>() {
@Override
public void onSuccess(final Void result) {
goOnline();
}
});
- case RECONNECTED:
break;
case DISCONNECTED:
NotifyUser.showProgress(i18n.t("Connecting"));
1
0
Author: vjrj_
Date: 2012-04-08 21:05:06 +0200 (Sun, 08 Apr 2012)
New Revision: 1827
Added:
trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerForAdminsMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerForEditorsMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/actions/DelContentForAdminsMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/actions/DelContentForEditorsMenuItem.java
trunk/src/main/java/cc/kune/wave/server/CustomGadgetProviderServlet.java
trunk/src/main/webapp/others/jsongadgets.json
trunk/src/test/java/cc/kune/common/shared/
trunk/src/test/java/cc/kune/common/shared/utils/
trunk/src/test/java/cc/kune/common/shared/utils/TextUtilsTest.java
Removed:
trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java
trunk/src/main/java/cc/kune/wave/server/kspecific/pendnotif/
trunk/src/main/java/org/waveprotocol/box/server/frontend/
Modified:
trunk/.classpath
trunk/.project
trunk/DEV-GUIDE
trunk/core/
trunk/core/kune-cli/
trunk/debian/changelog
trunk/dev-utils/wave.patch
trunk/pom.xml
trunk/src/main/java/cc/kune/KuneDev.gwt.xml
trunk/src/main/java/cc/kune/KuneProd.gwt.xml
trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java
trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java
trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java
trunk/src/main/java/cc/kune/blogs/client/actions/DelBlogMenuItem.java
trunk/src/main/java/cc/kune/blogs/client/actions/DelPostMenuItem.java
trunk/src/main/java/cc/kune/common/KuneCommon.gwt.xml
trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/server/UserSessionManager.java
trunk/src/main/java/cc/kune/core/server/content/XMLActionReader.java
trunk/src/main/java/cc/kune/core/server/manager/file/FileDownloadManagerUtils.java
trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
trunk/src/main/java/cc/kune/docs/client/actions/DelDocMenuItem.java
trunk/src/main/java/cc/kune/docs/client/actions/DelFolderMenuItem.java
trunk/src/main/java/cc/kune/events/client/actions/DelMeetingMenuItem.java
trunk/src/main/java/cc/kune/events/server/EventsServerTool.java
trunk/src/main/java/cc/kune/events/server/EventsServlet.java
trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java
trunk/src/main/java/cc/kune/lists/client/actions/DelListMenuItem.java
trunk/src/main/java/cc/kune/lists/client/actions/DelPostMenuItem.java
trunk/src/main/java/cc/kune/lists/client/actions/ListsClientActions.java
trunk/src/main/java/cc/kune/lists/server/rpc/ListsRPC.java
trunk/src/main/java/cc/kune/tasks/client/actions/DelFolderMenuItem.java
trunk/src/main/java/cc/kune/tasks/client/actions/DelTaskMenuItem.java
trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java
trunk/src/main/java/cc/kune/wave/server/WaveMain.java
trunk/src/main/java/cc/kune/wiki/client/actions/DelFolderMenuItem.java
trunk/src/main/java/cc/kune/wiki/client/actions/DelWikiMenuItem.java
trunk/src/test/java/cc/kune/core/server/integration/IntegrationTest.java
trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java
Log:
Perms in Events fixed.
Lists and post deletion.
Wave updated.
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/.classpath 2012-04-08 19:05:06 UTC (rev 1827)
@@ -1,10 +1,173 @@
-<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" output="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/java"/>
- <classpathentry kind="src" output="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
- <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
- <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
- <classpathentry kind="output" path="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes"/>
-</classpath>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
+ <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/inject/javax.inject/1/javax.inject-1.jar" sourcepath="M2_REPO/javax/inject/javax.inject/1/javax.inject-1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar" sourcepath="M2_REPO/javax/transaction/jta/1.1/jta-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4.4/mail-1.4.4.jar" sourcepath="M2_REPO/javax/mail/mail/1.4.4/mail-1.4.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar" sourcepath="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/api/0.3.15/api-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/api-src/0.3.15/api-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar" sourcepath="M2_REPO/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.15/box-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.15/box-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.15/client-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.15/client-common-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.15/client-common-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler/0.3.15/client-scheduler-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.15/client-scheduler-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.15/client-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.15/common-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar" sourcepath="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar" sourcepath="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.15/communication-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.15/concurrencycontrol-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/crypto/0.3.15/crypto-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/crypto-src/0.3.15/crypto-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5.jar" sourcepath="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite/r1694/emite-r1694.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite-proxy/0.1/emite-proxy-0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gxp/google-gxp/0.2.4-beta/google-gxp-0.2.4-beta.jar" sourcepath="M2_REPO/com/google/gxp/google-gxp/0.2.4-beta/google-gxp-0.2.4-beta-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/guava/guava/10.0.1/guava-10.0.1.jar" sourcepath="M2_REPO/com/google/guava/guava/10.0.1/guava-10.0.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r09/guava-gwt-r09.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/guice/3.0/guice-3.0.jar" sourcepath="M2_REPO/com/google/inject/guice/3.0/guice-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-assisted-inject/2.0/guice-assisted-inject-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-assistedinject/3.0/guice-assistedinject-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-assistedinject/3.0/guice-assistedinject-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-grapher/3.0/guice-grapher-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-grapher/3.0/guice-grapher-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-multibindings/3.0/guice-multibindings-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-multibindings/3.0/guice-multibindings-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/bradrydzewski/gwt-cal/0.9.3-dndCreation/gwt-cal-0.9.3-dndCreation.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/dnd/gwt-dnd/gwt-dnd/3.0.1/gwt-dnd-3.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-gin/1.0-r137/gwt-gin-1.0-r137.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.15/gwt-util-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtquery/gwtquery/1.1.0/gwtquery-1.1.0-2.1.0.jar" sourcepath="M2_REPO/com/googlecode/gwtquery/gwtquery/1.1.0/gwtquery-1.1.0-2.1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtrpccommlayer/0.0.1-SNAPSHOT/gwtrpccommlayer-0.0.1-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat.jar" sourcepath="M2_REPO/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/hablar/r1697/hablar-r1697.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.9/htmlunit-2.9.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.9/htmlunit-2.9-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.9/htmlunit-core-js-2.9.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.9/htmlunit-core-js-2.9-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpclient/4.1.2/httpclient-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpclient/4.1.2/httpclient-4.1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpcore/4.1.2/httpcore-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpcore/4.1.2/httpcore-4.1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpmime/4.1.2/httpmime-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpmime/4.1.2/httpmime-4.1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mnode/ical4j/ical4j/1.0.2/ical4j-1.0.2.jar" sourcepath="M2_REPO/org/mnode/ical4j/ical4j/1.0.2/ical4j-1.0.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12.jar" sourcepath="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/java/dev/jna/jna/3.3.0/jna-3.3.0.jar" sourcepath="M2_REPO/net/java/dev/jna/jna/3.3.0/jna-3.3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.2.0/jruby-complete-1.2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/0.9.4/jruby-rack-0.9.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/json/json/20080701/json-20080701.jar" sourcepath="M2_REPO/org/json/json/20080701/json-20080701-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jsoup/jsoup/1.2.2/jsoup-1.2.2.jar" sourcepath="M2_REPO/org/jsoup/jsoup/1.2.2/jsoup-1.2.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jukito/jukito/1.0/jukito-1.0.jar" sourcepath="M2_REPO/org/jukito/jukito/1.0/jukito-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.10/junit-4.10.jar" sourcepath="M2_REPO/junit/junit/4.10/junit-4.10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.8.1/liquibase-core-1.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.8.1.0/liquibase-plugin-1.8.1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar" sourcepath="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar" sourcepath="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.15/media-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model/0.3.15/model-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.15/model-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar" sourcepath="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.15/proto-msg-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/quartz-scheduler/quartz/2.1.0/quartz-2.1.0.jar" sourcepath="M2_REPO/org/quartz-scheduler/quartz/2.1.0/quartz-2.1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/w3c/css/sac/1.3/sac-1.3.jar" sourcepath="M2_REPO/org/w3c/css/sac/1.3/sac-1.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-api/2.12.0/selenium-api-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-api/2.12.0/selenium-api-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.12.0/selenium-chrome-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.12.0/selenium-chrome-driver-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.12.0/selenium-firefox-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.12.0/selenium-firefox-driver-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.12.0/selenium-htmlunit-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.12.0/selenium-htmlunit-driver-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.12.0/selenium-ie-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.12.0/selenium-ie-driver-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-iphone-driver/2.12.0/selenium-iphone-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-iphone-driver/2.12.0/selenium-iphone-driver-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-java/2.12.0/selenium-java-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-java/2.12.0/selenium-java-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-driver/2.12.0/selenium-remote-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-driver/2.12.0/selenium-remote-driver-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-support/2.12.0/selenium-support-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-support/2.12.0/selenium-support-2.12.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xalan/serializer/2.7.1/serializer-2.7.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jivesoftware/smack/3.1.0/smack-3.1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jivesoftware/smackx/3.1.0/smackx-3.1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6.jar" sourcepath="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/glines/socketio/java/socketio-gwt/23-10-2011/socketio-gwt-23-10-2011.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/glines/socketio/java/socketio-gwt-sources/23-10-2011/socketio-gwt-sources-23-10-2011.jar"/>
+ <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1.jar" sourcepath="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar" sourcepath="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util/0.3.15/util-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.15/util-src-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.15/waveinabox-server-0.3-0.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1.jar" sourcepath="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path=".apt_generated" including="**/*.java"/> <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
+</classpath>
\ No newline at end of file
Modified: trunk/.project
===================================================================
--- trunk/.project 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/.project 2012-04-08 19:05:06 UTC (rev 1827)
@@ -1,66 +1,46 @@
-<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>kune</name>
- <comment>kune free/open/libre collaboration platform. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.common.project.facet.core.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.validation.validationbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>com.instantiations.assist.eclipse.coverage.instrumentationBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.recommenders.rcp.analysis.RecommendersBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.m2e.core.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.m2e.core.maven2Nature</nature>
- <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
- <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
- <nature>org.eclipse.ajdt.ui.ajnature</nature>
- <nature>com.google.gwt.eclipse.core.gwtNature</nature>
- <nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
- <nature>com.instantiations.assist.eclipse.coverage.codeCoverageNature</nature>
- <nature>org.eclipse.recommenders.rcp.analysis.RecommendersNature</nature>
- </natures>
-</projectDescription>
+ <name>kune</name>
+ <comment>kune free/open/libre collaboration platform. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
+ <projects/>
+ <buildSpec>
+ <buildCommand>
+ <name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
+ </buildCommand>
+ <buildCommand>
+ <name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>com.instantiations.assist.eclipse.coverage.instrumentationBuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.recommenders.rcp.analysis.RecommendersBuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>org.eclipse.ajdt.ui.ajnature</nature>
+ <nature>com.google.gwt.eclipse.core.gwtNature</nature>
+ <nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
+ <nature>com.instantiations.assist.eclipse.coverage.codeCoverageNature</nature>
+ <nature>org.eclipse.recommenders.rcp.analysis.RecommendersNature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Modified: trunk/DEV-GUIDE
===================================================================
--- trunk/DEV-GUIDE 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/DEV-GUIDE 2012-04-08 19:05:06 UTC (rev 1827)
@@ -335,6 +335,9 @@
== Google Wave ==
+Wave Client Development Environment Set Up (if you want to work only in the Apache Wave part):
+http://www.waveprotocol.org/code/client-development-environment-set-up
+
David Hearnden recommendations of Wave code development (read in an informal Wave conversation):
"Being written in Java, we strongly recommend following the principles outlined in Effective Java. On top of that, patterns that aid testability (dependency injection, etc) are quite important. But beyond that, I don't know if there are any other patterns or practices that would be universal across the whole thing. The web client and the server run in very different environments, so the appropriate patterns change (e.g., the client-only code doesn't have to worry about thread safety, but should worry about excessive short-lived object creation)."
Property changes on: trunk/core
___________________________________________________________________
Name: svn:ignore
+ target
Property changes on: trunk/core/kune-cli
___________________________________________________________________
Name: svn:ignore
+ target
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/debian/changelog 2012-04-08 19:05:06 UTC (rev 1827)
@@ -1,6 +1,6 @@
kune (0.1.0+b7) oneiric; urgency=low
- * Improved openfire connection, debian init andº wave offline render and cache.
+ * Improved openfire connection, debian init and wave offline render and cache.
-- Vicente J. Ruiz Jurado <vjrj(a)ourproject.org> Mon, 02 Apr 2012 22:51:59 +0200
Modified: trunk/dev-utils/wave.patch
===================================================================
--- trunk/dev-utils/wave.patch 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/dev-utils/wave.patch 2012-04-08 19:05:06 UTC (rev 1827)
@@ -1,25 +1,28 @@
diff --git a/.classpath b/.classpath
-index dbfd956..1ab7f02 100644
+index d8def03..d80d62a 100644
--- a/.classpath
+++ b/.classpath
-@@ -37,7 +37,7 @@
- <classpathentry kind="lib" path="third_party/runtime/jetty/jetty-io-8.0.1.v20110908.jar"/>
- <classpathentry kind="lib" path="third_party/runtime/jetty/jetty-security-8.0.1.v20110908.jar"/>
- <classpathentry kind="lib" path="third_party/runtime/jetty/jetty-server-8.0.1.v20110908.jar"/>
-- <classpathentry kind="lib" path="third_party/runtime/jetty/jetty-servlet-8.0.1.v20110908.jar"/>
-+ <classpathentry kind="lib" path="third_party/runtime/jetty/jetty-servlet-8.0.1.v20110908.jar" sourcepath="/home/vjrj/.m2/repository/org/eclipse/jetty/jetty-servlet/8.0.1.v20110908/jetty-servlet-8.0.1.v20110908-sources.jar"/>
- <classpathentry kind="lib" path="third_party/runtime/jetty/jetty-servlets-8.0.1.v20110908.jar"/>
- <classpathentry kind="lib" path="third_party/runtime/jetty/jetty-util-8.0.1.v20110908.jar"/>
- <classpathentry kind="lib" path="third_party/runtime/jetty/jetty-webapp-8.0.1.v20110908.jar"/>
-@@ -67,7 +67,7 @@
- <classpathentry kind="lib" path="third_party/test/hamcrest/hamcrest-all-1.2.jar"/>
- <classpathentry kind="lib" path="third_party/test/jmock/jmock-2.5.1.jar"/>
- <classpathentry kind="lib" path="third_party/test/jmock/jmock-junit3-2.5.1.jar"/>
-- <classpathentry kind="lib" path="third_party/test/junit/junit.jar"/>
-+ <classpathentry kind="lib" path="third_party/test/junit/junit.jar" sourcepath="/home/vjrj/.m2/repository/junit/junit/3.8.2/junit-3.8.2-sources.jar"/>
- <classpathentry kind="lib" path="third_party/test/junit/src.jar"/>
- <classpathentry kind="lib" path="third_party/test/mockito/mockito-all-1.8.2.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+@@ -5,7 +5,7 @@
+ <classpathentry kind="src" path="proto_src"/>
+ <classpathentry kind="src" path="gen/messages"/>
+ <classpathentry kind="src" path="gen/gxp"/>
+- <classpathentry kind="lib" path="third_party/runtime/jetty/servlet-api-3.0.jar"/>
++ <classpathentry kind="lib" path="third_party/runtime/jetty/servlet-api-3.0.jar" sourcepath="/home/vjrj/.m2/repository/org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016-sources.jar"/>
+ <classpathentry kind="lib" path="third_party/runtime/guava/guava-r09.jar"/>
+ <classpathentry kind="lib" path="third_party/codegen/antlr/antlr-3.2.jar"/>
+ <classpathentry kind="lib" path="third_party/codegen/gwt/gwt-dev.jar"/>
+@@ -75,8 +75,8 @@
+ <classpathentry kind="lib" path="third_party/codegen/socketio/socketio-gwt-0.1-SNAPSHOT.jar" sourcepath="third_party/codegen/socketio/socketio-gwt-0.1-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="lib" path="third_party/runtime/socketio/socketio-jetty-0.1-SNAPSHOT.jar" sourcepath="third_party/runtime/socketio/socketio-jetty-0.1-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="lib" path="third_party/runtime/commons-fileupload/commons-fileupload.jar" sourcepath="third_party/runtime/commons-fileupload/commons-fileupload-src.zip"/>
+- <classpathentry kind="lib" path="third_party/runtime/google-api-client/google-api-client-1.5.0-beta.jar"/>
+- <classpathentry kind="lib" path="third_party/runtime/google-api-client/google-http-client-1.5.0-beta.jar"/>
+- <classpathentry kind="lib" path="third_party/runtime/google-api-client/google-oauth-client-1.5.0-beta.jar"/>
++ <classpathentry kind="lib" path="third_party/runtime/google-api-client/google-api-client-1.5.0-beta.jar"/>
++ <classpathentry kind="lib" path="third_party/runtime/google-api-client/google-http-client-1.5.0-beta.jar"/>
++ <classpathentry kind="lib" path="third_party/runtime/google-api-client/google-oauth-client-1.5.0-beta.jar"/>
+ <classpathentry kind="output" path="bin"/>
+ </classpath>
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
index d34cf38..02223a6 100644
--- a/.settings/org.eclipse.jdt.ui.prefs
@@ -88,10 +91,10 @@
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/src/org/waveprotocol/box/server/ServerMain.java b/src/org/waveprotocol/box/server/ServerMain.java
-index 7ce78fb..abc5a4e 100644
+index 13a2d55..3d375fc 100644
--- a/src/org/waveprotocol/box/server/ServerMain.java
+++ b/src/org/waveprotocol/box/server/ServerMain.java
-@@ -211,23 +211,23 @@ public class ServerMain {
+@@ -212,28 +212,28 @@ public class ServerMain {
}
private static void initializeServlets(Injector injector, ServerRpcProvider server) {
@@ -127,9 +130,15 @@
+ server.addServlet("/profile/*", injector.getInstance(FetchProfilesServlet.class));
+ server.addServlet("/waveref/*", injector.getInstance(WaveRefServlet.class));
+ boolean enableImport = injector
+ .getInstance(Key.get(Boolean.class, Names.named(CoreSettings.ENABLE_IMPORT)));
+ if (enableImport)
+- server.addServlet("/import", ImportServlet.class);
++ server.addServlet("/import", injector.getInstance(ImportServlet.class));
+
String gadgetHostName =
injector
-@@ -236,9 +236,9 @@ public class ServerMain {
+@@ -242,9 +242,9 @@ public class ServerMain {
injector.getInstance(Key.get(Integer.class, Names.named(CoreSettings.GADGET_SERVER_PORT)));
Map<String, String> initParams =
Collections.singletonMap("HostHeader", gadgetHostName + ":" + port);
@@ -141,7 +150,7 @@
}
private static void initializeRobots(Injector injector, WaveBus waveBus) {
-@@ -247,10 +247,10 @@ public class ServerMain {
+@@ -253,10 +253,10 @@ public class ServerMain {
}
private static void initializeRobotAgents(Injector injector, ServerRpcProvider server) {
@@ -512,6 +521,19 @@
group.addClickButton(), new ToolbarClickButton.Listener() {
@Override
public void onClicked() {
+diff --git a/src/org/waveprotocol/wave/client/StageThree.java b/src/org/waveprotocol/wave/client/StageThree.java
+index 5a8de4d..b748193 100644
+--- a/src/org/waveprotocol/wave/client/StageThree.java
++++ b/src/org/waveprotocol/wave/client/StageThree.java
+@@ -155,7 +155,7 @@ public interface StageThree {
+ String sessionId = stageTwo.getSessionId();
+
+ SelectionExtractor selectionExtractor = new SelectionExtractor(clock, address, sessionId);
+- return EditSession.install(views, documents, selectionExtractor, focus, panel);
++ return EditSession.install(views, documents, selectionExtractor, focus, panel, getLocalDomain());
+ }
+
+ protected EditToolbar createEditToolbar() {
diff --git a/src/org/waveprotocol/wave/client/doodad/link/Link.java b/src/org/waveprotocol/wave/client/doodad/link/Link.java
index f5fb0e4..6b7899c 100644
--- a/src/org/waveprotocol/wave/client/doodad/link/Link.java
@@ -549,81 +571,196 @@
return rawLinkValue;
}
+diff --git a/src/org/waveprotocol/wave/client/editor/Editors.java b/src/org/waveprotocol/wave/client/editor/Editors.java
+index fa306d1..2c75370 100644
+--- a/src/org/waveprotocol/wave/client/editor/Editors.java
++++ b/src/org/waveprotocol/wave/client/editor/Editors.java
+@@ -45,15 +45,19 @@ import org.waveprotocol.wave.model.util.CollectionUtils;
+ */
+ public final class Editors {
+
++ private static String localDomain;
++
+ private Editors() {
+ }
+
+ /**
+ * Creates an editor.
++ * @param localDomain
+ *
+ * @return New Editor instance
+ */
+ public static Editor create() {
++ Editors.localDomain = "kk";
+ Element e = Document.get().createDivElement();
+ e.setClassName("editor");
+ return UserAgent.isMobileWebkit() ? // \u2620
+@@ -105,7 +109,7 @@ public final class Editors {
+ LineRendering.registerLines(ROOT_HANDLER_REGISTRY);
+
+ Caption.register(ROOT_HANDLER_REGISTRY);
+- ChunkyElementHandler.register("br", ROOT_HANDLER_REGISTRY);
++ ChunkyElementHandler.register("br", ROOT_HANDLER_REGISTRY);
+ AnnotationPaint.register(ROOT_HANDLER_REGISTRY);
+ ImgDoodad.register(ROOT_HANDLER_REGISTRY);
+
+diff --git a/src/org/waveprotocol/wave/client/editor/content/misc/AnnotationPaint.java b/src/org/waveprotocol/wave/client/editor/content/misc/AnnotationPaint.java
+index bb62b1a..6ad01a4 100644
+--- a/src/org/waveprotocol/wave/client/editor/content/misc/AnnotationPaint.java
++++ b/src/org/waveprotocol/wave/client/editor/content/misc/AnnotationPaint.java
+@@ -82,11 +82,21 @@ public class AnnotationPaint {
+ /** Full tag name including namespace for boundary nodes */
+ public static final String BOUNDARY_FULL_TAGNAME = "l:b";
+
++ private static AnnotationSpreadRenderer paintRenderer;
++
++ /**
++ * Init the localDomain (used to render local links properly)
++ * @param localDomain
++ */
++ public static void init(String localDomain) {
++ paintRenderer.setLocalDomain(localDomain);
++ }
++
+ /**
+- * Registers subclass with ContentElement
++ * Registers subclass with ContentElement
+ */
+ public static void register(ElementHandlerRegistry registry) {
+- AnnotationSpreadRenderer paintRenderer = new AnnotationSpreadRenderer();
++ paintRenderer = new AnnotationSpreadRenderer();
+ registry.registerRenderingMutationHandler(SPREAD_FULL_TAGNAME, paintRenderer);
+ registry.registerNiceHtmlRenderer(SPREAD_FULL_TAGNAME, PasteFormatRenderers.SHALLOW_CLONE_RENDERER);
+
+diff --git a/src/org/waveprotocol/wave/client/editor/content/misc/AnnotationSpreadRenderer.java b/src/org/waveprotocol/wave/client/editor/content/misc/AnnotationSpreadRenderer.java
+index 5a88f48..f69de0d 100644
+--- a/src/org/waveprotocol/wave/client/editor/content/misc/AnnotationSpreadRenderer.java
++++ b/src/org/waveprotocol/wave/client/editor/content/misc/AnnotationSpreadRenderer.java
+@@ -22,6 +22,7 @@ import com.google.gwt.dom.client.Element;
+ import com.google.gwt.user.client.DOM;
+ import com.google.gwt.user.client.Event;
+ import com.google.gwt.user.client.EventListener;
++import com.google.gwt.user.client.Window;
+
+ import org.waveprotocol.wave.client.common.scrub.Scrub;
+ import org.waveprotocol.wave.client.common.util.DomHelper;
+@@ -33,9 +34,9 @@ import org.waveprotocol.wave.client.editor.content.ContentElement;
+ import org.waveprotocol.wave.client.editor.content.misc.AnnotationPaint.EventHandler;
+ import org.waveprotocol.wave.client.editor.content.misc.AnnotationPaint.MutationHandler;
+ import org.waveprotocol.wave.client.scheduler.Scheduler;
+-import org.waveprotocol.wave.client.scheduler.SchedulerInstance;
+ import org.waveprotocol.wave.client.scheduler.Scheduler.Priority;
+ import org.waveprotocol.wave.client.scheduler.Scheduler.Task;
++import org.waveprotocol.wave.client.scheduler.SchedulerInstance;
+ import org.waveprotocol.wave.model.util.ReadableStringMap.ProcV;
+
+ import java.util.HashSet;
+@@ -72,11 +73,13 @@ class AnnotationSpreadRenderer extends RenderingMutationHandler {
+ }
+ };
+
++ private String domain;
++
+ private static MutationHandler getMutationHandler(ContentElement element) {
+ String handlerId = element.getAttribute(AnnotationPaint.MUTATION_LISTENER_ATTR);
+ return handlerId == null ? null : AnnotationPaint.mutationHandlerRegistry.get(handlerId);
+ }
+-
++
+ @Override
+ public void onActivationStart(ContentElement element) {
+ fanoutAttrs(element);
+@@ -108,9 +111,9 @@ class AnnotationSpreadRenderer extends RenderingMutationHandler {
+ if (newValue != null) {
+ String scrubbedValue = Scrub.scrub(newValue);
+ implNodelet.setAttribute("href", scrubbedValue);
+- if (scrubbedValue.startsWith("#")) {
++ if (scrubbedValue.startsWith("#") || (domain != null && scrubbedValue.matches("^http([s]|)://" + domain + "/.*"))) {
+ implNodelet.removeAttribute("target");
+- } else {
++ } else {
+ implNodelet.setAttribute("target", "_blank");
+ }
+ } else {
+@@ -217,4 +220,13 @@ class AnnotationSpreadRenderer extends RenderingMutationHandler {
+ public void onDescendantsMutated(ContentElement element) {
+ scheduleMutationNotification(element);
+ }
++
++ /**
++ * Sets the local domain (used to render local links properly)
++ *
++ * @param localDomain the new local domain
++ */
++ public void setLocalDomain(String localDomain) {
++ domain = localDomain;
++ }
+ }
diff --git a/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java b/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java
-index 7088f80..1e38273 100644
+index 1e38273..7088f80 100644
--- a/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java
+++ b/src/org/waveprotocol/wave/client/gadget/renderer/GadgetWidget.java
-@@ -906,6 +906,7 @@ public class GadgetWidget extends ObservableSupplementedWave.ListenerImpl
+@@ -906,7 +906,6 @@ public class GadgetWidget extends ObservableSupplementedWave.ListenerImpl
String url = cleanUrl(metadata.getIframeUrl(view));
if (url.equals(iframeUrl) && ((token == null) || token.isEmpty())) {
log("Received metadata matches the cached information.");
-+ constructGadgetSizeFromMetadata(metadata, view, url);
+- constructGadgetSizeFromMetadata(metadata, view, url);
return;
}
// NOTE(user): Technically we should not save iframe URLs for gadgets with security tokens,
-@@ -921,6 +922,10 @@ public class GadgetWidget extends ObservableSupplementedWave.ListenerImpl
+@@ -922,10 +921,6 @@ public class GadgetWidget extends ObservableSupplementedWave.ListenerImpl
if ("".equals(ui.getTitleLabelText()) && metadata.hasTitle()) {
ui.setTitleLabelText(metadata.getTitle());
}
-+ constructGadgetSizeFromMetadata(metadata, view, url);
-+ }
-+
-+ private void constructGadgetSizeFromMetadata(GadgetMetadata metadata, String view, String url) {
+- constructGadgetSizeFromMetadata(metadata, view, url);
+- }
+-
+- private void constructGadgetSizeFromMetadata(GadgetMetadata metadata, String view, String url) {
int height =
(int) (metadata.hasHeight() ? metadata.getHeight() : metadata.getPreferredHeight(view));
int width =
+diff --git a/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java b/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java
+index b4f141b..a8a5b90 100644
+--- a/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java
++++ b/src/org/waveprotocol/wave/client/wavepanel/impl/edit/EditSession.java
+@@ -30,6 +30,7 @@ import org.waveprotocol.wave.client.editor.Editor;
+ import org.waveprotocol.wave.client.editor.EditorSettings;
+ import org.waveprotocol.wave.client.editor.Editors;
+ import org.waveprotocol.wave.client.editor.content.ContentDocument;
++import org.waveprotocol.wave.client.editor.content.misc.AnnotationPaint;
+ import org.waveprotocol.wave.client.editor.keys.KeyBindingRegistry;
+ import org.waveprotocol.wave.client.util.ClientFlags;
+ import org.waveprotocol.wave.client.wave.DocumentRegistry;
+@@ -92,7 +93,7 @@ public final class EditSession
+
+ public static EditSession install(ModelAsViewProvider views,
+ DocumentRegistry<? extends InteractiveDocument> documents,
+- SelectionExtractor selectionExtractor, FocusFramePresenter focus, WavePanelImpl panel) {
++ SelectionExtractor selectionExtractor, FocusFramePresenter focus, WavePanelImpl panel, String localDomain) {
+ EditSession edit = new EditSession(views, documents, panel.getGwtPanel(), selectionExtractor);
+ focus.addListener(edit);
+ if (panel.hasContents()) {
+@@ -103,6 +104,7 @@ public final class EditSession
+ // Warms up the editor code (e.g., internal statics) by creating and throwing
+ // away an editor, in order to reduce the latency of starting the first edit
+ // session.
++ AnnotationPaint.init(localDomain);
+ Editors.create();
+
+ return edit;
diff --git a/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java b/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java
-index 73a6cfc..b8d4428 100644
+index 3a470e0..b8d4428 100644
--- a/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java
+++ b/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/EditToolbar.java
-@@ -56,9 +56,11 @@ import org.waveprotocol.wave.client.widget.toolbar.buttons.ToolbarClickButton;
- import org.waveprotocol.wave.client.widget.toolbar.buttons.ToolbarToggleButton;
- import org.waveprotocol.wave.media.model.AttachmentIdGenerator;
- import org.waveprotocol.wave.media.model.AttachmentIdGeneratorImpl;
-+import org.waveprotocol.wave.model.document.util.DocHelper;
- import org.waveprotocol.wave.model.document.util.FocusedRange;
- import org.waveprotocol.wave.model.document.util.LineContainers;
- import org.waveprotocol.wave.model.document.util.Point;
-+import org.waveprotocol.wave.model.document.util.Range;
- import org.waveprotocol.wave.model.document.util.XmlStringBuilder;
- import org.waveprotocol.wave.model.id.IdGenerator;
- import org.waveprotocol.wave.model.id.WaveId;
-@@ -425,18 +427,27 @@ public class EditToolbar {
- Window.alert("Select some text to create a link.");
- return;
- }
-- String rawLinkValue =
-- Window.prompt("Enter link: URL or Wave ID.", WaveRefConstants.WAVE_URI_PREFIX);
-- // user hit "ESC" or "cancel"
-- if (rawLinkValue == null) {
-- return;
-- }
- try {
-- String linkAnnotationValue = Link.normalizeLink(rawLinkValue);
-+ // We try to create a link with the current selection, if fails, we ask for a link
-+ Range rg = range.asRange();
-+ String text = DocHelper.getText(editor.getDocument(), rg.getStart(), rg.getEnd());
-+ String linkAnnotationValue = Link.normalizeLink(text);
- EditorAnnotationUtil.setAnnotationOverSelection(editor, Link.KEY,
+@@ -436,7 +436,7 @@ public class EditToolbar {
linkAnnotationValue);
} catch (InvalidLinkException e) {
-- Window.alert(e.getLocalizedMessage());
-+ String rawLinkValue =
+ String rawLinkValue =
+- Window.prompt("Enter link: URL or Wave ID.", WaveRefConstants.WAVE_URI_PREFIX);
+ Window.prompt("Enter link: URL or Wave ID.", "http://");
-+ // user hit "ESC" or "cancel"
-+ if (rawLinkValue == null) {
-+ return;
-+ }
-+ try {
-+ String linkAnnotationValue = Link.normalizeLink(rawLinkValue);
-+ EditorAnnotationUtil.setAnnotationOverSelection(editor, Link.KEY,
-+ linkAnnotationValue);
-+ } catch (InvalidLinkException e2) {
-+ Window.alert(e2.getLocalizedMessage());
-+ }
- }
- }
- });
+ // user hit "ESC" or "cancel"
+ if (rawLinkValue == null) {
+ return;
diff --git a/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/gadget/GadgetInfoWidget.ui.xml b/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/gadget/GadgetInfoWidget.ui.xml
index c8b7a81..5f41486 100644
--- a/src/org/waveprotocol/wave/client/wavepanel/impl/toolbar/gadget/GadgetInfoWidget.ui.xml
@@ -679,6 +816,35 @@
<w:ImplPanel ui:field="self" styleName="{style.self}">
<div class="{style.img}">
<img ui:field="image"/>
+diff --git a/src/org/waveprotocol/wave/client/wavepanel/render/FullDomRenderer.java b/src/org/waveprotocol/wave/client/wavepanel/render/FullDomRenderer.java
+index 7bf5d6e..4b5aa25 100644
+--- a/src/org/waveprotocol/wave/client/wavepanel/render/FullDomRenderer.java
++++ b/src/org/waveprotocol/wave/client/wavepanel/render/FullDomRenderer.java
+@@ -24,6 +24,7 @@ import org.waveprotocol.wave.client.state.ThreadReadStateMonitor;
+ import org.waveprotocol.wave.client.uibuilder.HtmlClosure;
+ import org.waveprotocol.wave.client.uibuilder.HtmlClosureCollection;
+ import org.waveprotocol.wave.client.uibuilder.UiBuilder;
++import org.waveprotocol.wave.client.wavepanel.view.IntrinsicBlipMetaView;
+ import org.waveprotocol.wave.client.wavepanel.view.ViewIdMapper;
+ import org.waveprotocol.wave.client.wavepanel.view.dom.full.AnchorViewBuilder;
+ import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipMetaViewBuilder;
+@@ -48,6 +49,7 @@ import org.waveprotocol.wave.model.wave.ParticipantId;
+
+ import java.util.Collections;
+ import java.util.Comparator;
++import java.util.EnumSet;
+ import java.util.List;
+
+ /**
+@@ -220,6 +222,8 @@ public final class FullDomRenderer implements RenderingRules<UiBuilder> {
+ };
+
+ BlipMetaViewBuilder metaUi = BlipMetaViewBuilder.create(viewIdMapper.metaOf(blip), document);
++ if (blip.isRoot())
++ metaUi.disable(BlipMetaViewBuilder.DELETE_MENU_OPTIONS_SET);
+ blipPopulator.render(blip, metaUi);
+
+ return BlipViewBuilder.create(viewIdMapper.blipOf(blip), metaUi, threadsUi, convsUi);
diff --git a/src/org/waveprotocol/wave/client/wavepanel/view/dom/BlipMenuItemDomImpl.java b/src/org/waveprotocol/wave/client/wavepanel/view/dom/BlipMenuItemDomImpl.java
index 4b97489..1507f83 100644
--- a/src/org/waveprotocol/wave/client/wavepanel/view/dom/BlipMenuItemDomImpl.java
@@ -760,21 +926,24 @@
.contentContainer, .replies, .privateReplies{word-wrap: break-word;}
diff --git a/src/org/waveprotocol/wave/client/wavepanel/view/dom/full/BlipMetaViewBuilder.java b/src/org/waveprotocol/wave/client/wavepanel/view/dom/full/BlipMetaViewBuilder.java
-index 9ec4aaf..6ccc1d1 100644
+index 9ec4aaf..aaac5be 100644
--- a/src/org/waveprotocol/wave/client/wavepanel/view/dom/full/BlipMetaViewBuilder.java
+++ b/src/org/waveprotocol/wave/client/wavepanel/view/dom/full/BlipMetaViewBuilder.java
-@@ -81,16 +81,26 @@ public final class BlipMetaViewBuilder implements UiBuilder, IntrinsicBlipMetaVi
+@@ -81,16 +81,27 @@ public final class BlipMetaViewBuilder implements UiBuilder, IntrinsicBlipMetaVi
private final static Map<MenuOption, SafeHtml> MENU_LABELS =
new EnumMap<MenuOption, SafeHtml>(MenuOption.class);
+- private final static StringMap<MenuOption> MENU_OPTIONS = CollectionUtils.createStringMap();
+ private final static Map<MenuOption, SafeHtml> MENU_ICONS =
+ new EnumMap<MenuOption, SafeHtml>(MenuOption.class);
-+
- private final static StringMap<MenuOption> MENU_OPTIONS = CollectionUtils.createStringMap();
++ private final static StringMap<MenuOption> MENU_OPTIONS = CollectionUtils.createStringMap();
++ public final static Set<MenuOption> DELETE_MENU_OPTIONS_SET = EnumSet.of(IntrinsicBlipMetaView.MenuOption.DELETE);
++
public static final String OPTION_ID_ATTRIBUTE = "o";
public static final String OPTION_SELECTED_ATTRIBUTE = "s";
-
+-
++
static {
+ BlipIconResources.Css css = BlipIconResources.Loader.res.css();
+ MENU_ICONS.put(MenuOption.EDIT, EscapeUtils.fromSafeConstant(css.edit()));
@@ -790,7 +959,7 @@
MENU_LABELS.put(MenuOption.EDIT, EscapeUtils.fromSafeConstant("Edit"));
MENU_LABELS.put(MenuOption.REPLY, EscapeUtils.fromSafeConstant("Reply"));
MENU_LABELS.put(MenuOption.DELETE, EscapeUtils.fromSafeConstant("Delete"));
-@@ -245,6 +255,7 @@ public final class BlipMetaViewBuilder implements UiBuilder, IntrinsicBlipMetaVi
+@@ -245,6 +256,7 @@ public final class BlipMetaViewBuilder implements UiBuilder, IntrinsicBlipMetaVi
out.append(EscapeUtils.fromSafeConstant("|"));
String style = selected.contains(option) //
? css.menuOption() + css.menuOptionSelected() : css.menuOption();
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/pom.xml 2012-04-08 19:05:06 UTC (rev 1827)
@@ -22,8 +22,8 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<slf4j.version>1.6.1</slf4j.version>
<openjpa.version>2.0.1</openjpa.version>
- <wiab.version>0.3.14</wiab.version>
- <jetty.version>8.0.1.v20110908</jetty.version>
+ <wiab.version>0.3.15</wiab.version>
+ <jetty.version>8.1.1.v20120215</jetty.version>
<skipTests>true</skipTests>
</properties>
<repositories>
@@ -429,6 +429,12 @@
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>servlet-api</artifactId>
+ <groupId>javax.servlet</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
@@ -446,14 +452,13 @@
<artifactId>liquibase-plugin</artifactId>
<version>1.8.1.0</version>
</dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <!-- http://stackoverflow.com/questions/1370414/how-to-add-the-servlet-api-to-my… -->
- <version>2.5</version>
- <!-- <version>3.0-${wiab.version}</version> -->
- <scope>provided</scope>
- </dependency>
+<!-- <dependency> -->
+<!-- <groupId>javax.servlet</groupId> -->
+<!-- <artifactId>servlet-api</artifactId> -->
+<!-- http://stackoverflow.com/questions/1370414/how-to-add-the-servlet-api-to-my… -->
+<!-- <version>3.0-${wiab.version}</version> -->
+<!-- <scope>provided</scope> -->
+<!-- </dependency> -->
<!-- testing dependencies -->
<dependency>
<groupId>org.jukito</groupId>
@@ -713,6 +718,12 @@
<artifactId>gwtrpccommlayer</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
+ <!-- jetty -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.eclipse.jetty</groupId> -->
+ <!-- <artifactId>jetty-continuation</artifactId> -->
+ <!-- <version>${jetty.version}</version> -->
+ <!-- </dependency> -->
</dependencies>
<distributionManagement>
<repository>
Modified: trunk/src/main/java/cc/kune/KuneDev.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/KuneDev.gwt.xml 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/KuneDev.gwt.xml 2012-04-08 19:05:06 UTC (rev 1827)
@@ -20,10 +20,10 @@
<set-property-fallback name="locale" value="en"/>
<set-property name="locale" value="en"/>
- <!-- Hardcoded log level ====================================== -->
+ <!-- Webclient log level ====================================== -->
<!-- Turn off logging in wave -->
- <!-- <set-property name="loglevel" value="none"/> -->
- <set-property name="loglevel" value="debug"/>
+ <set-property name="loglevel" value="none"/>
+ <!-- <set-property name="loglevel" value="debug"/> -->
<!-- Debugging ================================================ -->
<!-- for add ensureDebugIds (debugId in UIBinder), remove/comment in production
Modified: trunk/src/main/java/cc/kune/KuneProd.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/KuneProd.gwt.xml 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/KuneProd.gwt.xml 2012-04-08 19:05:06 UTC (rev 1827)
@@ -20,8 +20,8 @@
<set-property-fallback name="locale" value="en"/>
<set-property name="locale" value="en,es,fr,ca,it"/>
- <!-- Hardcoded log level ====================================== -->
- <!-- Turn off logging in wave -->
+ <!-- Webclient log level ====================================== -->
+ <!-- Turn off logging in wave, because it's really slow. -->
<!-- <set-property name="loglevel" value="debug" /> -->
<set-property name="loglevel" value="none"/>
Modified: trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/barters/client/actions/DelBartersMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContentMenuItem;
+import cc.kune.gspace.client.actions.DelContentForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelBartersMenuItem extends DelContentMenuItem {
+public class DelBartersMenuItem extends DelContentForEditorsMenuItem {
@Inject
- public DelBartersMenuItem(final I18nTranslationService i18n, final DelContentAction action, final CoreResources res) {
+ public DelBartersMenuItem(final I18nTranslationService i18n, final DelContentForEditorsAction action, final CoreResources res) {
super(i18n, action, res);
}
}
Modified: trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/barters/client/actions/DelFolderMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContainerMenuItem;
+import cc.kune.gspace.client.actions.DelContainerForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelFolderMenuItem extends DelContainerMenuItem {
+public class DelFolderMenuItem extends DelContainerForEditorsMenuItem {
@Inject
- public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerAction action, final CoreResources res) {
+ public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerForEditorAction action, final CoreResources res) {
super(i18n, action, res);
}
Modified: trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/barters/server/BarterServerTool.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -19,8 +19,8 @@
*/
package cc.kune.barters.server;
+import static cc.kune.barters.shared.BartersToolConstants.ROOT_NAME;
import static cc.kune.barters.shared.BartersToolConstants.TOOL_NAME;
-import static cc.kune.barters.shared.BartersToolConstants.ROOT_NAME;
import static cc.kune.barters.shared.BartersToolConstants.TYPE_BARTER;
import static cc.kune.barters.shared.BartersToolConstants.TYPE_FOLDER;
import static cc.kune.barters.shared.BartersToolConstants.TYPE_ROOT;
@@ -57,8 +57,8 @@
public BarterServerTool(final ContentManager contentManager, final ContainerManager containerManager,
final ToolConfigurationManager configurationManager, final I18nTranslationService i18n,
final CreationService creationService) {
- super(TOOL_NAME, ROOT_NAME, TYPE_ROOT, Arrays.asList(TYPE_BARTER), Arrays.asList(TYPE_ROOT, TYPE_FOLDER),
- Arrays.asList(TYPE_FOLDER), Arrays.asList(TYPE_ROOT, TYPE_FOLDER), contentManager,
+ super(TOOL_NAME, ROOT_NAME, TYPE_ROOT, Arrays.asList(TYPE_BARTER), Arrays.asList(TYPE_ROOT,
+ TYPE_FOLDER), Arrays.asList(TYPE_FOLDER), Arrays.asList(TYPE_ROOT, TYPE_FOLDER), contentManager,
containerManager, creationService, configurationManager, i18n, ServerToolTarget.forUsers);
gadgetUrl = UrlUtils.of(BARTER_GADGET);
}
@@ -92,6 +92,7 @@
bartersAcl.getAdmins().setMode(GroupListMode.NORMAL);
bartersAcl.getAdmins().add(container.getOwner());
bartersAcl.getEditors().setMode(GroupListMode.NORMAL);
+ bartersAcl.getEditors().add(container.getOwner());
bartersAcl.getViewers().setMode(GroupListMode.EVERYONE);
setAccessList(container, bartersAcl);
}
Modified: trunk/src/main/java/cc/kune/blogs/client/actions/DelBlogMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/actions/DelBlogMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/blogs/client/actions/DelBlogMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContainerMenuItem;
+import cc.kune.gspace.client.actions.DelContainerForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelBlogMenuItem extends DelContainerMenuItem {
+public class DelBlogMenuItem extends DelContainerForEditorsMenuItem {
@Inject
- public DelBlogMenuItem(final I18nTranslationService i18n, final DelContainerAction action, final CoreResources res) {
+ public DelBlogMenuItem(final I18nTranslationService i18n, final DelContainerForEditorAction action, final CoreResources res) {
super(i18n, action, res);
}
Modified: trunk/src/main/java/cc/kune/blogs/client/actions/DelPostMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/actions/DelPostMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/blogs/client/actions/DelPostMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContentMenuItem;
+import cc.kune.gspace.client.actions.DelContentForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelPostMenuItem extends DelContentMenuItem {
+public class DelPostMenuItem extends DelContentForEditorsMenuItem {
@Inject
- public DelPostMenuItem(final I18nTranslationService i18n, final DelContentAction action, final CoreResources res) {
+ public DelPostMenuItem(final I18nTranslationService i18n, final DelContentForEditorsAction action, final CoreResources res) {
super(i18n, action, res);
}
}
Modified: trunk/src/main/java/cc/kune/common/KuneCommon.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/common/KuneCommon.gwt.xml 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/common/KuneCommon.gwt.xml 2012-04-08 19:05:06 UTC (rev 1827)
@@ -7,7 +7,8 @@
<!-- <entry-point class='cc.kune.msgs.client.KuneMessagesSampleEntryPoint'
/> -->
<!-- Specify the paths for translatable code -->
- <source path="shared"/>
+ <source path="shared"
+ excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java"/>
<source path='client'
excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java"/>
<public path="public"/>
Modified: trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -41,7 +41,6 @@
*
*/
public class ActionRegistryByType {
- private static final String GENERIC_GROUP_ACTION = "kgengroup";
private static final String GENERIC_TYPE_ID = "kgentype";
private static final String KEY_SEPARATOR = "-";
@@ -57,10 +56,6 @@
collection.add(descrip);
}
- // public void addAction(final Provider<? extends GuiActionDescrip> action) {
- // addAction(GENERIC_GROUP_ACTION, action, GENERIC_TYPE_ID);
- // }
-
public void addAction(@Nonnull final String tool, final String actionsGroupId,
final GuiActionDescrip descrip, final String typeId) {
addAction(tool, actionsGroupId, new Provider<GuiActionDescrip>() {
@@ -127,6 +122,8 @@
final GuiActionDescrip descrip = descripProv.get();
final AbstractAction action = descrip.getAction();
if (action instanceof RolAction) {
+ // Log.debug("Must add action?: " + action + ", isLogged: " + isLogged +
+ // ", r: " + rights);
if (mustAdd((RolAction) action, isLogged, rights)) {
add(collection, descrip, targetItem);
}
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -154,6 +154,7 @@
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.info, i18n.t(TextUtils.IN_DEVELOPMENT)));
} else {
logException(caught, true);
+ // FIXME: Remore "with our servers"
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error,
i18n.t("Oops! Something has gone wrong with our servers. Retry later, please.")));
final String error = "Other kind of exception received in ErrorHandler (" + caught.getMessage()
Modified: trunk/src/main/java/cc/kune/core/server/UserSessionManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/UserSessionManager.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/core/server/UserSessionManager.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -45,9 +45,9 @@
this.manager = manager;
this.userSessionProv = userSessionProv;
final HashSessionManager hSessionManager = (HashSessionManager) jettySessionManager;
- hSessionManager.setMaxInactiveInterval(-1);
+ // hSessionManager.setMaxInactiveInterval(-1);
// this prevent saving the session??
- hSessionManager.setUsingCookies(true);
+ // hSessionManager.setUsingCookies(true);
hSessionManager.setSavePeriod(5);
// For now the implementation of this can be very inaccurate (if we
// login/logout several times with different clients) and not scalable
Modified: trunk/src/main/java/cc/kune/core/server/content/XMLActionReader.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/XMLActionReader.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/core/server/content/XMLActionReader.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,10 +21,8 @@
import java.io.IOException;
import java.io.InputStream;
-import java.io.StringWriter;
import java.util.List;
-import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.waveprotocol.box.server.CoreSettings;
@@ -48,9 +46,7 @@
try {
final InputStream iStream = FileDownloadManagerUtils.getInputStreamInResourceBases(resourceBases,
XMLActionsConstants.ACTIONS_XML_LOCATION_PATH_ABS);
- final StringWriter writer = new StringWriter();
- IOUtils.copy(iStream, writer, "UTF-8");
- final String xml = writer.toString();
+ final String xml = FileDownloadManagerUtils.getInpuStreamAsString(iStream);
actions = new XMLKuneClientActions(new ServicesTester(), xml);
} catch (final IOException e) {
LOG.error("Error reading extension actions", e);
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/FileDownloadManagerUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/FileDownloadManagerUtils.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/FileDownloadManagerUtils.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -26,10 +26,12 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.StringWriter;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -37,6 +39,12 @@
public static final Log LOG = LogFactory.getLog(FileDownloadManagerUtils.class);
+ public static String getInpuStreamAsString(final InputStream iStream) throws IOException {
+ final StringWriter writer = new StringWriter();
+ IOUtils.copy(iStream, writer, "UTF-8");
+ return writer.toString();
+ }
+
public static InputStream getInputStreamInResourceBases(final List<String> resourceBases,
final String filename) {
InputStream in = null;
Modified: trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,9 +21,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.waveprotocol.wave.model.waveref.InvalidWaveRefException;
import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder;
import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.common.shared.utils.TextUtils;
import cc.kune.core.server.access.AccessRightsService;
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.SocialNetworkManager;
@@ -107,12 +109,13 @@
final char[] text = revision.getBody();
final String textBody = text == null ? null : new String(text);
if (content.isWave()) {
- final String waveId = content.getWaveId();
- state.setWaveRef(waveId);
+ final String waveRef = content.getWaveId();
+ state.setWaveRef(waveRef);
try {
// FIXME if we remove the authors this fails...
final Wavelet wavelet = kuneWaveService.fetchWave(
- JavaWaverefEncoder.decodeWaveRefFromPath(waveId), content.getAuthors().get(0).getShortName());
+ JavaWaverefEncoder.decodeWaveRefFromPath(waveRef),
+ content.getAuthors().get(0).getShortName());
// final String currentContent = wavelet.getRootBlip().getContent();
state.setContent(renderedWaves.getOrRender(wavelet));
@@ -126,12 +129,18 @@
state.setIsParticipant(userLogged != User.UNKNOWN_USER ? kuneWaveService.isParticipant(wavelet,
userLogged.getShortName()) : false);
} catch (final Exception e) {
- LOG.error("Error accessing wave " + waveId, e);
+ LOG.error("Error accessing wave " + waveRef, e);
+ String waveUrl = null;
+ try {
+ waveUrl = TextUtils.generateHtmlLink(
+ JavaWaverefEncoder.encodeToUriPathSegment(JavaWaverefEncoder.decodeWaveRefFromPath(waveRef)),
+ waveRef, false);
+ } catch (final InvalidWaveRefException invalidEx) {
+ }
state.setContent(i18n.t("Error accessing this document. "
+ "Please contact the administrators providing this reference ([%s]) "
- + "and any other relevant info.", waveId));
+ + "and any other relevant info.", (waveUrl == null ? waveRef : waveUrl)));
state.setTitle(revision.getTitle());
- // throw new DefaultException("Error retriving Wave");
}
} else {
state.setContent(textBody);
Modified: trunk/src/main/java/cc/kune/docs/client/actions/DelDocMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/DelDocMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/docs/client/actions/DelDocMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContentMenuItem;
+import cc.kune.gspace.client.actions.DelContentForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelDocMenuItem extends DelContentMenuItem {
+public class DelDocMenuItem extends DelContentForEditorsMenuItem {
@Inject
- public DelDocMenuItem(final I18nTranslationService i18n, final DelContentAction action, final CoreResources res) {
+ public DelDocMenuItem(final I18nTranslationService i18n, final DelContentForEditorsAction action, final CoreResources res) {
super(i18n, action, res);
}
}
Modified: trunk/src/main/java/cc/kune/docs/client/actions/DelFolderMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/DelFolderMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/docs/client/actions/DelFolderMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContainerMenuItem;
+import cc.kune.gspace.client.actions.DelContainerForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelFolderMenuItem extends DelContainerMenuItem {
+public class DelFolderMenuItem extends DelContainerForEditorsMenuItem {
@Inject
- public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerAction action, final CoreResources res) {
+ public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerForEditorAction action, final CoreResources res) {
super(i18n, action, res);
}
Modified: trunk/src/main/java/cc/kune/events/client/actions/DelMeetingMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/actions/DelMeetingMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/events/client/actions/DelMeetingMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContentMenuItem;
+import cc.kune.gspace.client.actions.DelContentForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelMeetingMenuItem extends DelContentMenuItem {
+public class DelMeetingMenuItem extends DelContentForEditorsMenuItem {
@Inject
- public DelMeetingMenuItem(final I18nTranslationService i18n, final DelContentAction action, final CoreResources res) {
+ public DelMeetingMenuItem(final I18nTranslationService i18n, final DelContentForEditorsAction action, final CoreResources res) {
super(i18n, action, res);
}
}
Modified: trunk/src/main/java/cc/kune/events/server/EventsServerTool.java
===================================================================
--- trunk/src/main/java/cc/kune/events/server/EventsServerTool.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/events/server/EventsServerTool.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -19,8 +19,8 @@
*/
package cc.kune.events.server;
+import static cc.kune.events.shared.EventsToolConstants.ROOT_NAME;
import static cc.kune.events.shared.EventsToolConstants.TOOL_NAME;
-import static cc.kune.events.shared.EventsToolConstants.ROOT_NAME;
import static cc.kune.events.shared.EventsToolConstants.TYPE_MEETING;
import static cc.kune.events.shared.EventsToolConstants.TYPE_ROOT;
@@ -95,6 +95,7 @@
meetsAcl.getAdmins().setMode(GroupListMode.NORMAL);
meetsAcl.getAdmins().add(container.getOwner());
meetsAcl.getEditors().setMode(GroupListMode.NORMAL);
+ meetsAcl.getEditors().add(container.getOwner());
meetsAcl.getViewers().setMode(GroupListMode.EVERYONE);
setAccessList(container, meetsAcl);
}
Modified: trunk/src/main/java/cc/kune/events/server/EventsServlet.java
===================================================================
--- trunk/src/main/java/cc/kune/events/server/EventsServlet.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/events/server/EventsServlet.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -109,7 +109,6 @@
final OutputStream out = resp.getOutputStream();
final CalendarOutputter outputter = new CalendarOutputter();
outputter.output(calendar, out);
-
} catch (final ContentNotFoundException e) {
return404(resp);
return;
Added: trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerForAdminsMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerForAdminsMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerForAdminsMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -0,0 +1,60 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.rpcservices.ContentServiceHelper;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.AbstractContentSimpleDTO;
+import cc.kune.core.shared.dto.AccessRolDTO;
+
+import com.google.inject.Inject;
+
+public class DelContainerForAdminsMenuItem extends MenuItemDescriptor {
+
+ public static class DelContainerForAdminsAction extends RolAction {
+
+ private final ContentServiceHelper contentService;
+
+ @Inject
+ public DelContainerForAdminsAction(final ContentServiceHelper contentService) {
+ super(AccessRolDTO.Administrator, true);
+ this.contentService = contentService;
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ final StateToken token = ((AbstractContentSimpleDTO) event.getTarget()).getStateToken();
+ contentService.delContent(token);
+ }
+
+ }
+
+ public DelContainerForAdminsMenuItem(final I18nTranslationService i18n,
+ final DelContainerForAdminsAction action, final CoreResources res) {
+ super(action);
+ this.withText(i18n.t("Delete")).withIcon(res.cancel());
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerForEditorsMenuItem.java (from rev 1809, trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerMenuItem.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerForEditorsMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerForEditorsMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -0,0 +1,60 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.rpcservices.ContentServiceHelper;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.AbstractContentSimpleDTO;
+import cc.kune.core.shared.dto.AccessRolDTO;
+
+import com.google.inject.Inject;
+
+public class DelContainerForEditorsMenuItem extends MenuItemDescriptor {
+
+ public static class DelContainerForEditorAction extends RolAction {
+
+ private final ContentServiceHelper contentService;
+
+ @Inject
+ public DelContainerForEditorAction(final ContentServiceHelper contentService) {
+ super(AccessRolDTO.Editor, true);
+ this.contentService = contentService;
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ final StateToken token = ((AbstractContentSimpleDTO) event.getTarget()).getStateToken();
+ contentService.delContent(token);
+ }
+
+ }
+
+ public DelContainerForEditorsMenuItem(final I18nTranslationService i18n, final DelContainerForEditorAction action,
+ final CoreResources res) {
+ super(action);
+ this.withText(i18n.t("Delete")).withIcon(res.cancel());
+ }
+
+}
Deleted: trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContainerMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -1,60 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package cc.kune.gspace.client.actions;
-
-import cc.kune.common.client.actions.ActionEvent;
-import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
-import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.actions.RolAction;
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.rpcservices.ContentServiceHelper;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.AbstractContentSimpleDTO;
-import cc.kune.core.shared.dto.AccessRolDTO;
-
-import com.google.inject.Inject;
-
-public class DelContainerMenuItem extends MenuItemDescriptor {
-
- public static class DelContainerAction extends RolAction {
-
- private final ContentServiceHelper contentService;
-
- @Inject
- public DelContainerAction(final ContentServiceHelper contentService) {
- super(AccessRolDTO.Editor, true);
- this.contentService = contentService;
- }
-
- @Override
- public void actionPerformed(final ActionEvent event) {
- final StateToken token = ((AbstractContentSimpleDTO) event.getTarget()).getStateToken();
- contentService.delContent(token);
- }
-
- }
-
- public DelContainerMenuItem(final I18nTranslationService i18n, final DelContainerAction action,
- final CoreResources res) {
- super(action);
- this.withText(i18n.t("Delete")).withIcon(res.cancel());
- }
-
-}
Added: trunk/src/main/java/cc/kune/gspace/client/actions/DelContentForAdminsMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/DelContentForAdminsMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContentForAdminsMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.rpcservices.ContentServiceHelper;
+import cc.kune.core.shared.dto.AbstractContentSimpleDTO;
+import cc.kune.core.shared.dto.AccessRolDTO;
+
+import com.google.inject.Inject;
+
+public class DelContentForAdminsMenuItem extends MenuItemDescriptor {
+
+ public static class DelContentForAdminsAction extends RolAction {
+
+ private final ContentServiceHelper contentService;
+
+ @Inject
+ public DelContentForAdminsAction(final ContentServiceHelper contentService) {
+ super(AccessRolDTO.Administrator, true);
+ this.contentService = contentService;
+
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ contentService.delContent(((AbstractContentSimpleDTO) event.getTarget()).getStateToken());
+ }
+
+ }
+
+ public DelContentForAdminsMenuItem(final I18nTranslationService i18n,
+ final DelContentForAdminsAction action, final CoreResources res) {
+ super(action);
+ this.withText(i18n.t("Delete")).withIcon(res.cancel());
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/actions/DelContentForEditorsMenuItem.java (from rev 1809, trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/DelContentForEditorsMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContentForEditorsMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.rpcservices.ContentServiceHelper;
+import cc.kune.core.shared.dto.AbstractContentSimpleDTO;
+import cc.kune.core.shared.dto.AccessRolDTO;
+
+import com.google.inject.Inject;
+
+public class DelContentForEditorsMenuItem extends MenuItemDescriptor {
+
+ public static class DelContentForEditorsAction extends RolAction {
+
+ private final ContentServiceHelper contentService;
+
+ @Inject
+ public DelContentForEditorsAction(final ContentServiceHelper contentService) {
+ super(AccessRolDTO.Editor, true);
+ this.contentService = contentService;
+
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ contentService.delContent(((AbstractContentSimpleDTO) event.getTarget()).getStateToken());
+ }
+
+ }
+
+ public DelContentForEditorsMenuItem(final I18nTranslationService i18n, final DelContentForEditorsAction action,
+ final CoreResources res) {
+ super(action);
+ this.withText(i18n.t("Delete")).withIcon(res.cancel());
+ }
+
+}
Deleted: trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program 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 Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package cc.kune.gspace.client.actions;
-
-import cc.kune.common.client.actions.ActionEvent;
-import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
-import cc.kune.common.shared.i18n.I18nTranslationService;
-import cc.kune.core.client.actions.RolAction;
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.rpcservices.ContentServiceHelper;
-import cc.kune.core.shared.dto.AbstractContentSimpleDTO;
-import cc.kune.core.shared.dto.AccessRolDTO;
-
-import com.google.inject.Inject;
-
-public class DelContentMenuItem extends MenuItemDescriptor {
-
- public static class DelContentAction extends RolAction {
-
- private final ContentServiceHelper contentService;
-
- @Inject
- public DelContentAction(final ContentServiceHelper contentService) {
- super(AccessRolDTO.Editor, true);
- this.contentService = contentService;
-
- }
-
- @Override
- public void actionPerformed(final ActionEvent event) {
- contentService.delContent(((AbstractContentSimpleDTO) event.getTarget()).getStateToken());
- }
-
- }
-
- public DelContentMenuItem(final I18nTranslationService i18n, final DelContentAction action,
- final CoreResources res) {
- super(action);
- this.withText(i18n.t("Delete")).withIcon(res.cancel());
- }
-
-}
Modified: trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -19,8 +19,8 @@
*/
package cc.kune.lists.client;
+import static cc.kune.lists.shared.ListsToolConstants.ROOT_NAME;
import static cc.kune.lists.shared.ListsToolConstants.TOOL_NAME;
-import static cc.kune.lists.shared.ListsToolConstants.ROOT_NAME;
import static cc.kune.lists.shared.ListsToolConstants.TYPE_LIST;
import static cc.kune.lists.shared.ListsToolConstants.TYPE_POST;
import static cc.kune.lists.shared.ListsToolConstants.TYPE_ROOT;
Modified: trunk/src/main/java/cc/kune/lists/client/actions/DelListMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/client/actions/DelListMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/lists/client/actions/DelListMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,15 +21,16 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContainerMenuItem;
+import cc.kune.gspace.client.actions.DelContainerForAdminsMenuItem;
import com.google.inject.Inject;
-public class DelListMenuItem extends DelContainerMenuItem {
+public class DelListMenuItem extends DelContainerForAdminsMenuItem {
- @Inject
- public DelListMenuItem(final I18nTranslationService i18n, final DelContainerAction action, final CoreResources res) {
- super(i18n, action, res);
- }
+ @Inject
+ public DelListMenuItem(final I18nTranslationService i18n, final DelContainerForAdminsAction action,
+ final CoreResources res) {
+ super(i18n, action, res);
+ }
}
Modified: trunk/src/main/java/cc/kune/lists/client/actions/DelPostMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/client/actions/DelPostMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/lists/client/actions/DelPostMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,15 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContentMenuItem;
+import cc.kune.gspace.client.actions.DelContentForAdminsMenuItem;
import com.google.inject.Inject;
-public class DelPostMenuItem extends DelContentMenuItem {
+public class DelPostMenuItem extends DelContentForAdminsMenuItem {
- @Inject
- public DelPostMenuItem(final I18nTranslationService i18n, final DelContentAction action, final CoreResources res) {
- super(i18n, action, res);
- }
+ @Inject
+ public DelPostMenuItem(final I18nTranslationService i18n, final DelContentForAdminsAction action,
+ final CoreResources res) {
+ super(i18n, action, res);
+ }
}
Modified: trunk/src/main/java/cc/kune/lists/client/actions/ListsClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/client/actions/ListsClientActions.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/lists/client/actions/ListsClientActions.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -89,6 +89,7 @@
final Provider<WriteToParticipantsMenuItem> writeToParticipants, final ListsNewMenu listNewMenu,
final PostNewMenu postNewMenu, final NewMenusForTypeIdsRegistry newMenusRegistry,
final Provider<ChatAboutContentBtn> chatAbout, final Provider<DelListMenuItem> delFolderMenuItem,
+ final Provider<DelPostMenuItem> delPostMenuItem,
final Provider<SetAsHomePageMenuItem> setAsHomePage) {
super(session, stateManager, i18n, registry);
actionsRegistry.addAction(TOOL_NAME, ActionGroups.TOPBAR, optionsMenuContainer, containers);
@@ -120,6 +121,7 @@
actionsRegistry.addAction(TOOL_NAME, ActionGroups.ITEM_MENU, openContentMenuItem, contents);
actionsRegistry.addAction(TOOL_NAME, ActionGroups.ITEM_MENU, openContentMenuItem, containersNoRoot);
actionsRegistry.addAction(TOOL_NAME, ActionGroups.ITEM_MENU, delFolderMenuItem, containersNoRoot);
+ actionsRegistry.addAction(TOOL_NAME, ActionGroups.ITEM_MENU, delPostMenuItem, contents);
actionsRegistry.addAction(TOOL_NAME, ActionGroups.ITEM_MENU, addAllMenuItem, contents);
actionsRegistry.addAction(TOOL_NAME, ActionGroups.ITEM_MENU, addAdminMembersMenuItem, contents);
actionsRegistry.addAction(TOOL_NAME, ActionGroups.ITEM_MENU, addCollabMembersMenuItem, contents);
Modified: trunk/src/main/java/cc/kune/lists/server/rpc/ListsRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/server/rpc/ListsRPC.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/lists/server/rpc/ListsRPC.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -56,7 +56,7 @@
}
private String composeListName(final StateToken parentToken, final String listname) {
- // FIXME In the future use tabs here
+ // FIXME In the future use tags here
return parentToken.getGroup() + "-" + listname;
}
@@ -65,9 +65,9 @@
@Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.container)
@KuneTransactional
public StateContainerDTO createList(final String userHash, final StateToken parentToken,
- final String listaName, final String description, final boolean isPublic) {
+ final String listName, final String description, final boolean isPublic) {
final StateContainerDTO result = contentRPC.addFolder(userHash, parentToken,
- composeListName(parentToken, listaName), ListsToolConstants.TYPE_LIST);
+ composeListName(parentToken, listName), ListsToolConstants.TYPE_LIST);
// Not public list, don't permit subscriptions neither view posts
return contentRPC.getState(setContainerAcl(result.getStateToken(), isPublic));
}
Modified: trunk/src/main/java/cc/kune/tasks/client/actions/DelFolderMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/tasks/client/actions/DelFolderMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/tasks/client/actions/DelFolderMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContainerMenuItem;
+import cc.kune.gspace.client.actions.DelContainerForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelFolderMenuItem extends DelContainerMenuItem {
+public class DelFolderMenuItem extends DelContainerForEditorsMenuItem {
@Inject
- public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerAction action, final CoreResources res) {
+ public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerForEditorAction action, final CoreResources res) {
super(i18n, action, res);
}
Modified: trunk/src/main/java/cc/kune/tasks/client/actions/DelTaskMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/tasks/client/actions/DelTaskMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/tasks/client/actions/DelTaskMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContentMenuItem;
+import cc.kune.gspace.client.actions.DelContentForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelTaskMenuItem extends DelContentMenuItem {
+public class DelTaskMenuItem extends DelContentForEditorsMenuItem {
@Inject
- public DelTaskMenuItem(final I18nTranslationService i18n, final DelContentAction action, final CoreResources res) {
+ public DelTaskMenuItem(final I18nTranslationService i18n, final DelContentForEditorsAction action, final CoreResources res) {
super(i18n, action, res);
}
}
Modified: trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -233,6 +233,8 @@
};
BlipMetaViewBuilder metaUi = BlipMetaViewBuilder.create(viewIdMapper.metaOf(blip), document);
+ if (blip.isRoot())
+ metaUi.disable(BlipMetaViewBuilder.DELETE_MENU_OPTIONS_SET);
blipPopulator.render(blip, metaUi);
return BlipViewBuilder.create(viewIdMapper.blipOf(blip), metaUi, threadsUi, convsUi);
Added: trunk/src/main/java/cc/kune/wave/server/CustomGadgetProviderServlet.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/CustomGadgetProviderServlet.java (rev 0)
+++ trunk/src/main/java/cc/kune/wave/server/CustomGadgetProviderServlet.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -0,0 +1,83 @@
+/**
+ * Copyright 2012 Apache Wave
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cc.kune.wave.server;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.inject.Singleton;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.waveprotocol.box.server.CoreSettings;
+import org.waveprotocol.box.server.persistence.file.FileAccountStore;
+
+import cc.kune.core.server.manager.file.FileDownloadManagerUtils;
+
+import com.google.common.base.Function;
+import com.google.common.collect.MapMaker;
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+
+/**
+ * The servlet for fetching available gadgets from a json file on the server.
+ */
+@SuppressWarnings("serial")
+@Singleton
+public class CustomGadgetProviderServlet extends HttpServlet {
+
+ private static final Logger LOG = Logger.getLogger(FileAccountStore.class.getName());
+ private final ConcurrentMap<String, String> jsonCache;
+
+ @Inject
+ public CustomGadgetProviderServlet((a)Named(CoreSettings.RESOURCE_BASES) final List<String> resourceBases) {
+ jsonCache = new MapMaker().expireAfterWrite(5, TimeUnit.MINUTES).makeComputingMap(
+ new Function<String, String>() {
+ @Override
+ public String apply(final String key) {
+ String jsonString = "";
+ try {
+ jsonString = FileDownloadManagerUtils.getInpuStreamAsString(FileDownloadManagerUtils.getInputStreamInResourceBases(
+ resourceBases, "/others/jsongadgets.json"));
+ } catch (final IOException e) {
+ LOG.log(Level.WARNING, "Error while loading gadgets json", e);
+ }
+ return jsonString;
+ }
+ });
+ }
+
+ @Override
+ protected void doGet(final HttpServletRequest request, final HttpServletResponse response)
+ throws IOException {
+ final String jsonString = jsonCache.get("");
+ if (jsonString.equals("")) {
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
+ "Error loading json data from file");
+ } else {
+ final PrintWriter out = response.getWriter();
+ out.print(jsonCache.get(""));
+ out.flush();
+ }
+ }
+}
Modified: trunk/src/main/java/cc/kune/wave/server/WaveMain.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/WaveMain.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/wave/server/WaveMain.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -159,8 +159,8 @@
PersistenceModule persistenceModule = settingsInjector.getInstance(PersistenceModule.class);
Injector injector =
settingsInjector.createChildInjector(new ServerModule(enableFederation, listenerCount,
- waveletLoadCount, deltaPersistCount),
- new RobotApiModule(), federationModule, persistenceModule);
+ waveletLoadCount, deltaPersistCount), new RobotApiModule(), federationModule,
+ persistenceModule);
ServerRpcProvider server = injector.getInstance(ServerRpcProvider.class);
WaveBus waveBus = injector.getInstance(WaveBus.class);
@@ -211,6 +211,7 @@
}
private static void initializeServlets(Injector injector, ServerRpcProvider server) {
+ server.addServlet("/gadget/gadgetlist", injector.getInstance(CustomGadgetProviderServlet.class));
server.addServlet("/attachment/*", injector.getInstance(AttachmentServlet.class));
server.addServlet(SessionManager.SIGN_IN_URL, injector.getInstance(AuthenticationServlet.class));
Modified: trunk/src/main/java/cc/kune/wiki/client/actions/DelFolderMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/actions/DelFolderMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/wiki/client/actions/DelFolderMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContainerMenuItem;
+import cc.kune.gspace.client.actions.DelContainerForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelFolderMenuItem extends DelContainerMenuItem {
+public class DelFolderMenuItem extends DelContainerForEditorsMenuItem {
@Inject
- public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerAction action, final CoreResources res) {
+ public DelFolderMenuItem(final I18nTranslationService i18n, final DelContainerForEditorAction action, final CoreResources res) {
super(i18n, action, res);
}
Modified: trunk/src/main/java/cc/kune/wiki/client/actions/DelWikiMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/actions/DelWikiMenuItem.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/main/java/cc/kune/wiki/client/actions/DelWikiMenuItem.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -21,14 +21,14 @@
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.gspace.client.actions.DelContentMenuItem;
+import cc.kune.gspace.client.actions.DelContentForEditorsMenuItem;
import com.google.inject.Inject;
-public class DelWikiMenuItem extends DelContentMenuItem {
+public class DelWikiMenuItem extends DelContentForEditorsMenuItem {
@Inject
- public DelWikiMenuItem(final I18nTranslationService i18n, final DelContentAction action, final CoreResources res) {
+ public DelWikiMenuItem(final I18nTranslationService i18n, final DelContentForEditorsAction action, final CoreResources res) {
super(i18n, action, res);
}
}
Added: trunk/src/main/webapp/others/jsongadgets.json
===================================================================
--- trunk/src/main/webapp/others/jsongadgets.json (rev 0)
+++ trunk/src/main/webapp/others/jsongadgets.json 2012-04-08 19:05:06 UTC (rev 1827)
@@ -0,0 +1,550 @@
+[
+{"name":"MindMap ConceptDraw",
+"desc":"ConceptDraw MINDMAP offers a variety of presentation, input, and output solutions that make creating and sharing map content simple and effective.",
+"primaryCategory":"PRODUCTIVITY",
+"secondaryCategory":"TEAM",
+"gadgetUrl":"http://goo.gl/m7HXR",
+"author":"ConceptDraw",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Map",
+"desc":"Collaborate on a map of placemarks, paths, and shapes with other participants. Great for planning events and trips.",
+"primaryCategory":"MAP",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/0YlHY",
+"author":"Google",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Map Cluster",
+"desc":"Add your location to the map, and see where everyone else is from, using a cluster visualization.",
+"primaryCategory":"MAP",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/TE5LJ",
+"author":"Google",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Yes/No/Mini",
+"desc":"A miniature version of the Yes/No/Maybe gadget.",
+"primaryCategory":"VOTING",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/WnAkm",
+"author":"Zachary 'Gamer_Z.' Yaro",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Yes/No/Maybe/+",
+"desc":"Same as Google's Yes/No/Maybe, only you can edit the titles and add new ones.",
+"primaryCategory":"VOTING",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/fydAe",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Yes/No/Maybe",
+"desc":"Use this to ask friends if they want to join you for a party, to get their opinion on a topic, or even to petition their support for a movement.",
+"primaryCategory":"VOTING",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/24YOf",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Code Snippet",
+"desc":"Paste and edit snippets of code within your waves, including syntax highlighting for over 20 languages. Uses SyntaxHighlighter by Alex Gorbatchev.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/0cQcc",
+"author":" Harry Denholm, Ishani.org",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Image",
+"desc":"Lets you insert, resize and annotate any image from the web.",
+"primaryCategory":"IMAGE",
+"secondaryCategory":"UTILITY",
+"gadgetUrl":"http://goo.gl/wCw4o",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"WaveTube",
+"desc":"A collaborative YouTube player for Wave.",
+"primaryCategory":"VIDEO",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/4k9f3",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Napkin",
+"desc":"The Napkin Gadget is a blank canvas for collaborative doodling.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/FMBPf",
+"author":"Marcin Szczepanski",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"HTML",
+"desc":"Insert HTML code directly in to a wave.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/bN5AD",
+"author":"MBTE Sweden AB",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"iFrame",
+"desc":"Insert IFRAME directly in to a wave.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/jvA7z",
+"author":"MBTE Sweden AB",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"iFrame - no borders",
+"desc":"Insert iFrame DISCRETLY into a wave.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/z46Sg",
+"author":"Pooja Srinivas",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"No Edit",
+"desc":"Kindly readers to not edit your blip.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/0gEjd",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"No Edit - with no text",
+"desc":"DISCRETLY prevent the edition of your blip.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/cNgLA",
+"author":"Pooja Srinivas",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Word Cloud",
+"desc":"Add words and ideas into a collaborative word cloud.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/juj3U",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Views tracker",
+"desc":"A small gadget that when added to a wave tracks wave views. You can display the number of views with Views Display gadget.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/wIQKU",
+"author":"Yuri Zelikov <yuri(a)waveinabox.net>",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Views display",
+"desc":"A display for the views tracker gadget. When added to a wave with the tracker gadget - displays how many times the wave was viewed.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/hPDJD",
+"author":"Yuri <yuri(a)waveinabox.net>",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Like Button",
+"desc":"A like button similar to those in Google Reader, Google Buzz, and other Google products.",
+"primaryCategory":"VOTING",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/7wkly",
+"author":"Zachary 'Gamer_Z.' Yaro",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Pinwand",
+"desc":"Collaborate on a virtual pinwand. Add text, images, video, comments and many more.",
+"primaryCategory":"OTHER",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/0PmBc",
+"author":"Michael Hielscher",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"I Like It!",
+"desc":"Adds a favorites button to your wave, so that you and everyone else in the wave can indicate that they like the wave - with a cute smiley face!",
+"primaryCategory":"VOTING",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/aXybB",
+"author":"Jaken",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Diagram Editor",
+"desc":"Create cool diagrams (UML, BPMN, EPC, FMC, etc.) together with your friends in Google Wave!",
+"primaryCategory":"PRODUCTIVITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/HvuA4",
+"author":"processWave.org",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Word Network",
+"desc":"Collaborate on a linking words together and organizing concepts. Double Click on any word to link it to another or double click on the background to c...",
+"primaryCategory":"PRODUCTIVITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/6vwxY",
+"author":"antimatter15",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Google Fight!",
+"desc":"Google Fights - the title should explain it all. Another gadget by www.processWave.org.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/Mg26y",
+"author":"Michael Goderbauer",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Poll",
+"desc":"Poll participants for their opinion. Supports both single and multiple selection polls, and optionally allows votes to be changed after they're cast.",
+"primaryCategory":"VOTING",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/0G7qU",
+"author":"Eric Williams",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Chart",
+"desc":"Lets you insert various charts into wave.",
+"primaryCategory":"PRODUCTIVITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/Tb7Q3",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Retro Chat",
+"desc":"Chat room gadget for old-fashioned IMing in Wave.",
+"primaryCategory":"PRODUCTIVITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/AW0Vm",
+"author":"Charles Lehner",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Picasa",
+"desc":"Add a Picasa photo album to a wave.",
+"primaryCategory":"IMAGE",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/NUYIs",
+"author":"Genliang Guan, University of Sydney",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Goo.gl URL Shortener",
+"desc":"Shorten url with goo.gl, the new Google url shortener.(http://goo.gl/)",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/oRonD",
+"author":"haru1ban",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"PacMan",
+"desc":"Play Pacman inside a Wave.",
+"primaryCategory":"GAME",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/RFzqt",
+"author":"www.schulz.dk",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Sudoku",
+"desc":"A cool game to share with your friends. Solve challenging Sudoku boards together and see who is the best Sudoku player!",
+"primaryCategory":"GAME",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/FxORa",
+"author":"LabPixies",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"AccuWeather",
+"desc":"The AccuWeather Wave Gadget is the perfect companion for trip planning. Select a location and date, and the gadget will return a forecast.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/iODX9",
+"author":"AccuWeather.com",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Decing",
+"desc":"Need to make a decision? Arrange a secret vote inside of a wave. Participants' votes are not shared to others.",
+"primaryCategory":"VOTING",
+"secondaryCategory":"TEAM",
+"gadgetUrl":"http://goo.gl/MghBe",
+"author":"Decing.com",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Grocery List",
+"desc":"Use this for your grocery list needs - share with your family, sort the list automatically, print and take it to the store, and more!",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/kna0V",
+"author":"Quaker",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Likey",
+"desc":"A simple like/dislike Wave gadget that can be added to a blip for intuitive user rating.",
+"primaryCategory":"VOTING",
+"secondaryCategory":"PRODUCTIVITY",
+"gadgetUrl":"http://goo.gl/KrlJE",
+"author":"Ben Griffiths",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Paginator",
+"desc":"The Paginator is a compact reading aid Gadget for Google Wave which paginates large amounts of text and bookmarks the wave viewer's current location",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"PRODUCTIVITY",
+"gadgetUrl":"http://goo.gl/Ol9GW",
+"author":"Dan Smith",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Piano",
+"desc":"A real-time piano gadget.",
+"primaryCategory":"MUSIC",
+"secondaryCategory":"GAME",
+"gadgetUrl":"http://goo.gl/x9vHX",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Team ",
+"desc":"Lets you create a list of wave participants in a particular order.",
+"primaryCategory":"TEAM",
+"secondaryCategory":"PRODUCTIVITY",
+"gadgetUrl":"http://goo.gl/VJnId",
+"author":"everybodywave",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Vector Editor",
+"desc":"This gadget is useful for creating graphics. Shapes can be added, resized, moved, and rotated. The application supports Lines, Freeform, Polygons, Rec...",
+"primaryCategory":"PRODUCTIVITY",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/VSkn5",
+"author":"antimatter15",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Ratings",
+"desc":"Add your vote from 1-5 stars, and see the total votes from others.",
+"primaryCategory":"VOTING",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/uQ9vi",
+"author":"Google",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Colcrop",
+"desc":"Cover as many cells as possible, by choosing adjacent colors. Play against a participant or the computer. Computer Level 4 is pretty hard to defeat.",
+"primaryCategory":"GAME",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/Vh9ME",
+"author":"Alexis Vuillemin",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"Bones",
+"desc":"Bones provides graphical dice that any participant in a wave can set up to be rolled by themselves or others. Results are shared with everyone.",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"TEAM",
+"gadgetUrl":"http://goo.gl/GbhWR",
+"author":"10x10 Room",
+"submittedBy":"Jeremy",
+"imageUrl":""},
+
+{"name":"lmnowave",
+"desc":"Solve crossword puzzles with friends in Google Wave.",
+"primaryCategory":"GAME",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/heXs7",
+"author":"Dan Vanderkam",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"FlickrWave",
+"desc":"Display individual Flickr photos or browse photos from a user's stream, favorites, a photoset or a group.",
+"primaryCategory":"IMAGE",
+"secondaryCategory":"VIDEO",
+"gadgetUrl":"http://goo.gl/OSEZF",
+"author":"Mark Probst",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Verbol VoiceChat",
+"desc":"Lets you record any thoughts you have into the wave, listen to what others are saying or have said, and reply to them. V3.12.3.",
+"primaryCategory":"VOICE",
+"secondaryCategory":"PRODUCTIVITY",
+"gadgetUrl":"http://goo.gl/Iklq2",
+"author":"Family Systems and PhoneFromHere",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Scrumpoker",
+"desc":"ScrumPoker for consensus-based estimation.",
+"primaryCategory":"PRODUCTIVITY",
+"secondaryCategory":"TEAM",
+"gadgetUrl":"http://goo.gl/JuBfO",
+"author":"MasteringWave",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Hostel WithMe",
+"desc":"In partnership with HostelWorld.com. Find the best budget accommodation together with your friends.",
+"primaryCategory":"TRAVEL",
+"secondaryCategory":"SEARCH",
+"gadgetUrl":"http://goo.gl/pXAkD",
+"author":"rucksack.com",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Take-Out",
+"desc":"Helps organize take-out orders for a group. Great for coordinating food or coffee runs for your office!",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"TEAM",
+"gadgetUrl":"http://goo.gl/4yFIQ",
+"author":"Kip Holcomb",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Travel WithMe",
+"desc":"Travel WithMe allows groups of people to plan trips together in real time.",
+"primaryCategory":"TRAVEL",
+"secondaryCategory":"TEAM",
+"gadgetUrl":"http://goo.gl/fdpJO",
+"author":"rucksack.com",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Twitter Search",
+"desc":"Shows results from Twitter for a given search term. Users can edit to specify new term.",
+"primaryCategory":"SEARCH",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/1U79x",
+"author":"Google",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Waffle",
+"desc":"The easy way to plan an event. Just add a Waffle to your wave, choose a few dates - now, all wave participants can vote immediately!",
+"primaryCategory":"SEARCH",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/VsXSf",
+"author":"Mikkel Staunsholm (www.waffle.dk)",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Trippy",
+"desc":"Co-create an itinerary: choose points of interest -- including Lonely Planet recommendations, organize, share, print, or export to My Maps!",
+"primaryCategory":"TRAVEL",
+"secondaryCategory":"TEAM",
+"gadgetUrl":"http://goo.gl/HgDlU",
+"author":"Lonely Planet",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Conference",
+"desc":"Click to insert a Ribbit Conference gadget to your toolbar.",
+"primaryCategory":"VOICE",
+"secondaryCategory":"PRODUCTIVITY",
+"gadgetUrl":"http://goo.gl/UVZ4i",
+"author":"Ribbit Corporation",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"TimeBridge Conferencing",
+"desc":"Instantly add phone and web conferencing to your wave with the TimeBridge Conferencing Gadget. Just plug the gadget into your wave and go!",
+"primaryCategory":"VOICE",
+"secondaryCategory":"PRODUCTIVITY",
+"gadgetUrl":"http://goo.gl/FPVh7",
+"author":"Ribbit Corporation",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Plus One",
+"desc":"A small, simple gadget to collect votes. Use it to rate anything!",
+"primaryCategory":"VOTING",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/aDH3v",
+"author":"Peter Frost",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Time-Me!",
+"desc":"A stopwatch with support for multiple split-times!",
+"primaryCategory":"TIME",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/Zm3ch",
+"author":"Owl Order",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Time-manager",
+"desc":"Insert a small timer into your waves. Click on it to start/stop counting. Total time will be saved.",
+"primaryCategory":"TIME",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://goo.gl/48odp",
+"author":"Fedor Indutny",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"When do we meet?",
+"desc":"Find a date for a business meeting, party, or vacation by collaboratively marking each participant's free days in a shared calendar.",
+"primaryCategory":"TIME",
+"secondaryCategory":"TEAM",
+"gadgetUrl":"http://goo.gl/qQ7n0",
+"author":"Robert Bamler",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"List",
+"desc":"Insert little tables inside your wavelet. You can extend the columns, make them sorted, etc...",
+"primaryCategory":"UTILITY",
+"secondaryCategory":"PRODUCTIVITY",
+"gadgetUrl":"http://goo.gl/O6swn",
+"author":"Teun Duynstee",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"FavJumpr",
+"desc":"A little Flickr game where you have to jump from one's user's favorites to another's by selecting the one you like best.",
+"primaryCategory":"GAME",
+"secondaryCategory":"IMAGE",
+"gadgetUrl":"http://goo.gl/DVySN",
+"author":"Mark Probst",
+"submittedBy":"Yuri",
+"imageUrl":""},
+
+{"name":"Wave Chess",
+"desc":"Play Chess in Google Wave.",
+"primaryCategory":"GAME",
+"secondaryCategory":"OTHER",
+"gadgetUrl":"http://wave-chess.appspot.com/wavechess/com.google.wave.chess.client.ChessG…",
+"author":"Google",
+"submittedBy":"Yuri",
+"imageUrl":""}
+ ]
\ No newline at end of file
Added: trunk/src/test/java/cc/kune/common/shared/utils/TextUtilsTest.java
===================================================================
--- trunk/src/test/java/cc/kune/common/shared/utils/TextUtilsTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/common/shared/utils/TextUtilsTest.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -0,0 +1,40 @@
+/*
+ *
+ * Copyright (C) 2007-2012 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package cc.kune.common.shared.utils;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class TextUtilsTest {
+
+ private static final String DOMAIN_REGEXP = "^http([s]|)://localhost/.*";
+
+ @Test
+ public void testUrlDomain() {
+ assertTrue("http://localhost/kk".matches(DOMAIN_REGEXP));
+ assertTrue("https://localhost/kk".matches(DOMAIN_REGEXP));
+ assertFalse("http://localhost:9898/kk".matches(DOMAIN_REGEXP));
+ assertFalse("http://localhost".matches(DOMAIN_REGEXP));
+ assertFalse("ftp://localhost/kk".matches(DOMAIN_REGEXP));
+ }
+}
Modified: trunk/src/test/java/cc/kune/core/server/integration/IntegrationTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/integration/IntegrationTest.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/test/java/cc/kune/core/server/integration/IntegrationTest.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -59,7 +59,7 @@
@After
public void doLogout() throws DefaultException {
- if (session.isUserLoggedIn()) {
+ if (session != null && session.isUserLoggedIn()) {
session.logout();
}
}
Modified: trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java
===================================================================
--- trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java 2012-04-03 14:44:06 UTC (rev 1826)
+++ trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java 2012-04-08 19:05:06 UTC (rev 1827)
@@ -74,20 +74,20 @@
doLogin();
createTestWave(new SimpleArgCallback<WaveRef>() {
@Override
- public void onCallback(final WaveRef waveletName) {
- assertNotNull(waveletName);
- manager.addParticipants(waveletName, getSiteAdminShortName(), NEW_PARTICIPANT);
+ public void onCallback(final WaveRef waveRef) {
+ assertNotNull(waveRef);
+ manager.addParticipants(waveRef, getSiteAdminShortName(), NEW_PARTICIPANT);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ final Wavelet fetchWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
assertNotNull(fetchWavelet);
assertEquals(2, fetchWavelet.getParticipants().size());
assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
// Del all
- manager.delParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName());
+ manager.delParticipants(waveRef, getSiteAdminShortName(), getSiteAdminShortName());
// This fails because we don't have a way to access to than wave now ...
// @domain don't work neither
- final Wavelet fetchedAfterDeleted = manager.fetchWave(waveletName, "");
+ final Wavelet fetchedAfterDeleted = manager.fetchWave(waveRef, "");
assertNotNull(fetchedAfterDeleted);
}
});
@@ -98,21 +98,21 @@
doLogin();
createTestWave(new SimpleArgCallback<WaveRef>() {
@Override
- public void onCallback(final WaveRef waveletName) {
- assertNotNull(waveletName);
- manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ public void onCallback(final WaveRef waveRef) {
+ assertNotNull(waveRef);
+ manager.addParticipants(waveRef, getSiteAdminShortName(), getSiteAdminShortName(),
NEW_PARTICIPANT);
- manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ manager.addParticipants(waveRef, getSiteAdminShortName(), getSiteAdminShortName(),
NEW_PARTICIPANT, NEW_PARTICIPANT);
- manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ manager.addParticipants(waveRef, getSiteAdminShortName(), getSiteAdminShortName(),
NEW_PARTICIPANT, NEW_PARTICIPANT, NEW_PARTICIPANT);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ final Wavelet fetchWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
assertNotNull(fetchWavelet);
assertEquals(2, fetchWavelet.getParticipants().size());
assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
// Del main editor
- manager.delParticipants(waveletName, getSiteAdminShortName(), NEW_PARTICIPANT, NEW_PARTICIPANT,
+ manager.delParticipants(waveRef, getSiteAdminShortName(), NEW_PARTICIPANT, NEW_PARTICIPANT,
getSiteAdminShortName(), getSiteAdminShortName());
}
});
@@ -124,27 +124,27 @@
final String whoDels = getSiteAdminShortName();
createTestWave(new SimpleArgCallback<WaveRef>() {
@Override
- public void onCallback(final WaveRef waveletName) {
- assertNotNull(waveletName);
- manager.addParticipants(waveletName, getSiteAdminShortName(), whoDels, NEW_PARTICIPANT,
+ public void onCallback(final WaveRef waveRef) {
+ assertNotNull(waveRef);
+ manager.addParticipants(waveRef, getSiteAdminShortName(), whoDels, NEW_PARTICIPANT,
NEW_PARTICIPANT2);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ final Wavelet fetchWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
assertNotNull(fetchWavelet);
assertEquals(3, fetchWavelet.getParticipants().size());
assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT2));
assertTrue(manager.isParticipant(fetchWavelet, getSiteAdminShortName()));
- manager.delParticipants(waveletName, whoDels, NEW_PARTICIPANT, NEW_PARTICIPANT2);
- final Wavelet fetchDelWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ manager.delParticipants(waveRef, whoDels, NEW_PARTICIPANT, NEW_PARTICIPANT2);
+ final Wavelet fetchDelWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
assertNotNull(fetchDelWavelet);
assertEquals(1, fetchDelWavelet.getParticipants().size());
assertTrue(manager.isParticipant(fetchDelWavelet, getSiteAdminShortName()));
assertFalse(manager.isParticipant(fetchDelWavelet, NEW_PARTICIPANT));
assertFalse(manager.isParticipant(fetchDelWavelet, NEW_PARTICIPANT2));
- manager.addParticipants(waveletName, getSiteAdminShortName(), getSiteAdminShortName(),
+ manager.addParticipants(waveRef, getSiteAdminShortName(), getSiteAdminShortName(),
NEW_PARTICIPANT);
// Del all (the last, the whoDels...)
- manager.delParticipants(waveletName, whoDels, NEW_PARTICIPANT, getSiteAdminShortName());
+ manager.delParticipants(waveRef, whoDels, NEW_PARTICIPANT, getSiteAdminShortName());
}
});
}
@@ -168,10 +168,10 @@
final URL gadgetUrl = new URL(TEST_GADGET);
createTestWave(new SimpleArgCallback<WaveRef>() {
@Override
- public void onCallback(final WaveRef waveletName) {
- assertNotNull(waveletName);
- manager.addGadget(waveletName, getSiteAdminShortName(), gadgetUrl);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ public void onCallback(final WaveRef waveRef) {
+ assertNotNull(waveRef);
+ manager.addGadget(waveRef, getSiteAdminShortName(), gadgetUrl);
+ final Wavelet fetchWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
final Gadget gadget = getFirstGadget(fetchWavelet, TEST_GADGET);
assertEquals(gadget.getUrl(), TEST_GADGET);
assertEquals(2, gadget.getProperties().size());
@@ -185,8 +185,8 @@
}
// Removing some property
newProps.put(SOME_PROPERTY, null);
- manager.setGadgetProperty(waveletName, getSiteAdminShortName(), gadgetUrl, newProps);
- final Wavelet updatedWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ manager.setGadgetProperty(waveRef, getSiteAdminShortName(), gadgetUrl, newProps);
+ final Wavelet updatedWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
final Gadget gadgetUpdated = getFirstGadget(updatedWavelet, TEST_GADGET);
assertEquals(gadgetUpdated.getUrl(), TEST_GADGET);
assertEquals(3, updatedWavelet.getRootBlip().getElements().size());
@@ -215,10 +215,10 @@
doLogin();
createTestWave(new SimpleArgCallback<WaveRef>() {
@Override
- public void onCallback(final WaveRef waveletName) {
- assertNotNull(waveletName);
- manager.addParticipants(waveletName, getSiteAdminShortName(), whoAdds, NEW_PARTICIPANT);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ public void onCallback(final WaveRef waveRef) {
+ assertNotNull(waveRef);
+ manager.addParticipants(waveRef, getSiteAdminShortName(), whoAdds, NEW_PARTICIPANT);
+ final Wavelet fetchWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
assertNotNull(fetchWavelet);
assertEquals(2, fetchWavelet.getParticipants().size());
assertTrue(manager.isParticipant(fetchWavelet, NEW_PARTICIPANT));
@@ -247,9 +247,9 @@
doLogin();
manager.createWave(RICHTEXT_MESSAGE, new SimpleArgCallback<WaveRef>() {
@Override
- public void onCallback(final WaveRef waveletName) {
- assertNotNull(waveletName);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ public void onCallback(final WaveRef waveRef) {
+ assertNotNull(waveRef);
+ final Wavelet fetchWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
assertNotNull(fetchWavelet);
assertTrue(fetchWavelet.getRootBlip().getAnnotations().size() > 0);
assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
@@ -276,9 +276,9 @@
doLogin();
createTestWave(new SimpleArgCallback<WaveRef>() {
@Override
- public void onCallback(final WaveRef waveletName) {
- assertNotNull(waveletName);
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ public void onCallback(final WaveRef waveRef) {
+ assertNotNull(waveRef);
+ final Wavelet fetchWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
assertNotNull(fetchWavelet);
assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
assertEquals(TITLE, fetchWavelet.getTitle());
@@ -319,10 +319,10 @@
doLogin();
createTestWave(new SimpleArgCallback<WaveRef>() {
@Override
- public void onCallback(final WaveRef waveletName) {
- assertNotNull(waveletName);
- manager.setTitle(waveletName, TITLENEW, getSiteAdminShortName());
- final Wavelet fetchWavelet = manager.fetchWave(waveletName, getSiteAdminShortName());
+ public void onCallback(final WaveRef waveRef) {
+ assertNotNull(waveRef);
+ manager.setTitle(waveRef, TITLENEW, getSiteAdminShortName());
+ final Wavelet fetchWavelet = manager.fetchWave(waveRef, getSiteAdminShortName());
assertNotNull(fetchWavelet);
assertTrue(fetchWavelet.getRootBlip().getContent().contains(MESSAGE));
assertEquals(TITLENEW, fetchWavelet.getTitle());
1
0
Re: [kune-commits] [kune issues] #235: Links with full local URL in waves should not open a new window
by kune issues 08 Apr '12
by kune issues 08 Apr '12
08 Apr '12
#235: Links with full local URL in waves should not open a new window
--------------------------+--------------------
Reporter: aitor@… | Owner: vjrj
Type: defect | Status: closed
Priority: major | Milestone:
Component: Group space | Version:
Resolution: fixed | Keywords:
Blocked By: | Blocking:
--------------------------+--------------------
Changes (by vjrj):
* status: new => closed
* resolution: => fixed
Comment:
In Apache Wave, we have to patch: AnnotationSpreadRenderer.applyAttribute
(detecting if the url is local)
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/235#comment:2>
kune issues <http://kune.ourproject.org/issues/>
1
0
Re: [kune-commits] [kune issues] #222: Create a trash folder icon and improve contents delete functionality
by kune issues 08 Apr '12
by kune issues 08 Apr '12
08 Apr '12
#222: Create a trash folder icon and improve contents delete functionality
--------------------------+--------------------
Reporter: vjrj | Owner: vjrj
Type: enhancement | Status: closed
Priority: major | Milestone:
Component: Group space | Version:
Resolution: fixed | Keywords:
Blocked By: | Blocking:
--------------------------+--------------------
Changes (by vjrj):
* status: new => closed
* resolution: => fixed
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/222#comment:1>
kune issues <http://kune.ourproject.org/issues/>
1
0
#153: Bug deleted wave
--------------------------+--------------------
Reporter: samer@… | Owner: vjrj
Type: defect | Status: closed
Priority: major | Milestone:
Component: Group space | Version:
Resolution: fixed | Keywords:
Blocked By: | Blocking:
--------------------------+--------------------
Changes (by vjrj):
* status: new => closed
* resolution: => fixed
--
Ticket URL: <http://kune.ourproject.org/issues/ticket/153#comment:1>
kune issues <http://kune.ourproject.org/issues/>
1
0
Author: vjrj_
Date: 2012-04-03 16:44:06 +0200 (Tue, 03 Apr 2012)
New Revision: 1826
Added:
trunk/core/
trunk/core/.project
trunk/core/.settings/
trunk/core/.settings/org.eclipse.m2e.core.prefs
trunk/core/kune-cli/
trunk/core/kune-cli/.classpath
trunk/core/kune-cli/.project
trunk/core/kune-cli/.settings/
trunk/core/kune-cli/.settings/org.eclipse.jdt.core.prefs
trunk/core/kune-cli/.settings/org.eclipse.m2e.core.prefs
trunk/core/kune-cli/pom.xml
trunk/core/kune-cli/src/
trunk/core/kune-cli/src/main/
trunk/core/kune-cli/src/main/java/
trunk/core/kune-cli/src/main/java/cc/
trunk/core/kune-cli/src/main/java/cc/kune/
trunk/core/kune-cli/src/main/java/cc/kune/kunecli/
trunk/core/kune-cli/src/main/java/cc/kune/kunecli/KuneCliMain.java
trunk/core/kune-cli/src/main/resources/
trunk/core/kune-cli/src/test/
trunk/core/kune-cli/src/test/java/
trunk/core/kune-cli/src/test/resources/
trunk/core/pom.xml
trunk/core/src/
trunk/core/src/site/
trunk/src/main/java/cc/kune/core/server/state/RenderedWavesCache.java
Modified:
trunk/.classpath
trunk/.project
trunk/debian/changelog
trunk/pom.xml
trunk/script/kune client -no-server.launch
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java
trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
trunk/src/main/java/cc/kune/core/server/content/XMLActionReader.java
trunk/src/main/java/cc/kune/core/server/manager/file/EntityLogoDownloadManager.java
trunk/src/main/java/cc/kune/core/server/manager/file/FileDownloadManagerUtils.java
trunk/src/main/java/cc/kune/core/server/persist/DataSourceKunePersistModule.java
trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java
trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java
Log:
Improved openfire connection, debian init and wave offline render and cache.
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/.classpath 2012-04-03 14:44:06 UTC (rev 1826)
@@ -1,174 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
- <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
- <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
- <classpathentry kind="output" path="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes"/>
- <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/inject/javax.inject/1/javax.inject-1.jar" sourcepath="M2_REPO/javax/inject/javax.inject/1/javax.inject-1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar" sourcepath="M2_REPO/javax/transaction/jta/1.1/jta-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4.4/mail-1.4.4.jar" sourcepath="M2_REPO/javax/mail/mail/1.4.4/mail-1.4.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar" sourcepath="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/api/0.3.14/api-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/api-src/0.3.14/api-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar" sourcepath="M2_REPO/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.14/box-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.14/box-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
- <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.14/client-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.14/client-common-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.14/client-common-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler/0.3.14/client-scheduler-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.14/client-scheduler-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.14/client-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.14/common-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar" sourcepath="M2_REPO/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar" sourcepath="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.14/communication-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.14/concurrencycontrol-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/crypto/0.3.14/crypto-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/crypto-src/0.3.14/crypto-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5.jar" sourcepath="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite/r1694/emite-r1694.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite-proxy/0.1/emite-proxy-0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gxp/google-gxp/0.2.4-beta/google-gxp-0.2.4-beta.jar" sourcepath="M2_REPO/com/google/gxp/google-gxp/0.2.4-beta/google-gxp-0.2.4-beta-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/guava/guava/10.0.1/guava-10.0.1.jar" sourcepath="M2_REPO/com/google/guava/guava/10.0.1/guava-10.0.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r09/guava-gwt-r09.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/guice/3.0/guice-3.0.jar" sourcepath="M2_REPO/com/google/inject/guice/3.0/guice-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-assisted-inject/2.0/guice-assisted-inject-2.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-assistedinject/3.0/guice-assistedinject-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-assistedinject/3.0/guice-assistedinject-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-grapher/3.0/guice-grapher-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-grapher/3.0/guice-grapher-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-multibindings/3.0/guice-multibindings-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-multibindings/3.0/guice-multibindings-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-persist/3.0/guice-persist-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar" sourcepath="M2_REPO/com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/bradrydzewski/gwt-cal/0.9.3-dndCreation/gwt-cal-0.9.3-dndCreation.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/dnd/gwt-dnd/gwt-dnd/3.0.1/gwt-dnd-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-gin/1.0-r137/gwt-gin-1.0-r137.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.14/gwt-util-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-client/0.5/gwtp-dispatch-client-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-server/0.5/gwtp-dispatch-server-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-dispatch-shared/0.5/gwtp-dispatch-shared-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-mvp-client/0.5/gwtp-mvp-client-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-processors/0.5/gwtp-processors-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-tester/0.5/gwtp-tester-0.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtquery/gwtquery/1.1.0/gwtquery-1.1.0-2.1.0.jar" sourcepath="M2_REPO/com/googlecode/gwtquery/gwtquery/1.1.0/gwtquery-1.1.0-2.1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtrpccommlayer/0.0.1-SNAPSHOT/gwtrpccommlayer-0.0.1-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat.jar" sourcepath="M2_REPO/com/googlecode/gwtupload/gwtupload/0.6.3-compat/gwtupload-0.6.3-compat-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/emite/hablar/r1697/hablar-r1697.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-c3p0/3.3.1.GA/hibernate-c3p0-3.3.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/3.1.0.GA/hibernate-validator-3.1.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.9/htmlunit-2.9.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit/2.9/htmlunit-2.9-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.9/htmlunit-core-js-2.9.jar" sourcepath="M2_REPO/net/sourceforge/htmlunit/htmlunit-core-js/2.9/htmlunit-core-js-2.9-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpclient/4.1.2/httpclient-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpclient/4.1.2/httpclient-4.1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpcore/4.1.2/httpcore-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpcore/4.1.2/httpcore-4.1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpmime/4.1.2/httpmime-4.1.2.jar" sourcepath="M2_REPO/org/apache/httpcomponents/httpmime/4.1.2/httpmime-4.1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mnode/ical4j/ical4j/1.0.2/ical4j-1.0.2.jar" sourcepath="M2_REPO/org/mnode/ical4j/ical4j/1.0.2/ical4j-1.0.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12.jar" sourcepath="M2_REPO/com/beust/jcommander/1.12/jcommander-1.12-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/java/dev/jna/jna/3.3.0/jna-3.3.0.jar" sourcepath="M2_REPO/net/java/dev/jna/jna/3.3.0/jna-3.3.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.2.0/jruby-complete-1.2.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/0.9.4/jruby-rack-0.9.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/json/json/20080701/json-20080701.jar" sourcepath="M2_REPO/org/json/json/20080701/json-20080701-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jsoup/jsoup/1.2.2/jsoup-1.2.2.jar" sourcepath="M2_REPO/org/jsoup/jsoup/1.2.2/jsoup-1.2.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jukito/jukito/1.0/jukito-1.0.jar" sourcepath="M2_REPO/org/jukito/jukito/1.0/jukito-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/4.10/junit-4.10.jar" sourcepath="M2_REPO/junit/junit/4.10/junit-4.10-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.8.1/liquibase-core-1.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.8.1.0/liquibase-plugin-1.8.1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar" sourcepath="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar" sourcepath="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.14/media-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model/0.3.14/model-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.14/model-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar" sourcepath="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.14/proto-msg-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/quartz-scheduler/quartz/2.1.0/quartz-2.1.0.jar" sourcepath="M2_REPO/org/quartz-scheduler/quartz/2.1.0/quartz-2.1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/w3c/css/sac/1.3/sac-1.3.jar" sourcepath="M2_REPO/org/w3c/css/sac/1.3/sac-1.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-api/2.12.0/selenium-api-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-api/2.12.0/selenium-api-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.12.0/selenium-chrome-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-chrome-driver/2.12.0/selenium-chrome-driver-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.12.0/selenium-firefox-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-firefox-driver/2.12.0/selenium-firefox-driver-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.12.0/selenium-htmlunit-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-htmlunit-driver/2.12.0/selenium-htmlunit-driver-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.12.0/selenium-ie-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-ie-driver/2.12.0/selenium-ie-driver-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-iphone-driver/2.12.0/selenium-iphone-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-iphone-driver/2.12.0/selenium-iphone-driver-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-java/2.12.0/selenium-java-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-java/2.12.0/selenium-java-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-remote-driver/2.12.0/selenium-remote-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-remote-driver/2.12.0/selenium-remote-driver-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-support/2.12.0/selenium-support-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-support/2.12.0/selenium-support-2.12.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xalan/serializer/2.7.1/serializer-2.7.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/jivesoftware/smack/3.1.0/smack-3.1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/jivesoftware/smackx/3.1.0/smackx-3.1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6.jar" sourcepath="M2_REPO/org/yaml/snakeyaml/1.6/snakeyaml-1.6-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/glines/socketio/java/socketio-gwt/23-10-2011/socketio-gwt-23-10-2011.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/glines/socketio/java/socketio-gwt-sources/23-10-2011/socketio-gwt-sources-23-10-2011.jar"/>
- <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1.jar" sourcepath="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar" sourcepath="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util/0.3.14/util-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.14/util-src-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.14/waveinabox-server-0.3-0.3.14.jar"/>
- <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1.jar" sourcepath="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="src" path=".apt_generated" including="**/*.java"/> <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
-</classpath>
\ No newline at end of file
+ <classpathentry kind="src" output="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/java"/>
+ <classpathentry kind="src" output="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
+ <classpathentry kind="output" path="target/kune-0.1.0-SNAPSHOT/WEB-INF/classes"/>
+</classpath>
Modified: trunk/.project
===================================================================
--- trunk/.project 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/.project 2012-04-03 14:44:06 UTC (rev 1826)
@@ -1,42 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>kune</name>
- <comment>kune free/open/libre collaboration platform. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
- <projects/>
- <buildSpec>
- <buildCommand>
- <name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
- </buildCommand>
- <buildCommand>
- <name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.common.project.facet.core.builder</name>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.validation.validationbuilder</name>
- </buildCommand>
- <buildCommand>
- <name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
- </buildCommand>
- <buildCommand>
- <name>com.instantiations.assist.eclipse.coverage.instrumentationBuilder</name>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.recommenders.rcp.analysis.RecommendersBuilder</name>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
- <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
- <nature>org.eclipse.ajdt.ui.ajnature</nature>
- <nature>com.google.gwt.eclipse.core.gwtNature</nature>
- <nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
- <nature>com.instantiations.assist.eclipse.coverage.codeCoverageNature</nature>
- <nature>org.eclipse.recommenders.rcp.analysis.RecommendersNature</nature>
- </natures>
-</projectDescription>
\ No newline at end of file
+ <name>kune</name>
+ <comment>kune free/open/libre collaboration platform. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.instantiations.assist.eclipse.coverage.instrumentationBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.recommenders.rcp.analysis.RecommendersBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>org.eclipse.ajdt.ui.ajnature</nature>
+ <nature>com.google.gwt.eclipse.core.gwtNature</nature>
+ <nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
+ <nature>com.instantiations.assist.eclipse.coverage.codeCoverageNature</nature>
+ <nature>org.eclipse.recommenders.rcp.analysis.RecommendersNature</nature>
+ </natures>
+</projectDescription>
Added: trunk/core/.project
===================================================================
--- trunk/core/.project (rev 0)
+++ trunk/core/.project 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>kune-core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
Added: trunk/core/.settings/org.eclipse.m2e.core.prefs
===================================================================
--- trunk/core/.settings/org.eclipse.m2e.core.prefs (rev 0)
+++ trunk/core/.settings/org.eclipse.m2e.core.prefs 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
Added: trunk/core/kune-cli/.classpath
===================================================================
--- trunk/core/kune-cli/.classpath (rev 0)
+++ trunk/core/kune-cli/.classpath 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,9 @@
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/org/naturalcli/naturalcli/1.2.3/naturalcli-1.2.3.jar" sourcepath="M2_REPO/org/naturalcli/naturalcli/1.2.3/naturalcli-1.2.3-sources.jar"/>
+</classpath>
\ No newline at end of file
Added: trunk/core/kune-cli/.project
===================================================================
--- trunk/core/kune-cli/.project (rev 0)
+++ trunk/core/kune-cli/.project 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,17 @@
+<projectDescription>
+ <name>kune-cli</name>
+ <comment>Kune command line interface</comment>
+ <projects/>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Added: trunk/core/kune-cli/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/core/kune-cli/.settings/org.eclipse.jdt.core.prefs (rev 0)
+++ trunk/core/kune-cli/.settings/org.eclipse.jdt.core.prefs 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.5
Added: trunk/core/kune-cli/.settings/org.eclipse.m2e.core.prefs
===================================================================
--- trunk/core/kune-cli/.settings/org.eclipse.m2e.core.prefs (rev 0)
+++ trunk/core/kune-cli/.settings/org.eclipse.m2e.core.prefs 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
Added: trunk/core/kune-cli/pom.xml
===================================================================
--- trunk/core/kune-cli/pom.xml (rev 0)
+++ trunk/core/kune-cli/pom.xml 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,19 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>kune-core</artifactId>
+ <groupId>cc.kune</groupId>
+ <version>0.0.1-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <artifactId>kune-cli</artifactId>
+ <description>Kune command line interface</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.naturalcli</groupId>
+ <artifactId>naturalcli</artifactId>
+ <version>1.2.3</version>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Added: trunk/core/kune-cli/src/main/java/cc/kune/kunecli/KuneCliMain.java
===================================================================
--- trunk/core/kune-cli/src/main/java/cc/kune/kunecli/KuneCliMain.java (rev 0)
+++ trunk/core/kune-cli/src/main/java/cc/kune/kunecli/KuneCliMain.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,74 @@
+/*
+ *
+ * Copyright (C) 2007-2012 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package cc.kune.kunecli;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.naturalcli.Command;
+import org.naturalcli.ExecutionException;
+import org.naturalcli.ICommandExecutor;
+import org.naturalcli.InvalidSyntaxException;
+import org.naturalcli.NaturalCLI;
+import org.naturalcli.ParseResult;
+import org.naturalcli.commands.ExecuteFileCommand;
+import org.naturalcli.commands.HTMLHelpCommand;
+import org.naturalcli.commands.HelpCommand;
+import org.naturalcli.commands.SleepCommand;
+
+public class KuneCliMain {
+
+ public static void main(String[] args) throws InvalidSyntaxException, ExecutionException {
+ Command showDateCommand =
+ new Command(
+ "hello world [<name:string>]",
+ "Says hello to the world and, may be, especially to some one.",
+ new ICommandExecutor ()
+ {
+ public void execute(ParseResult pr)
+ {
+ System.out.print("Hello world!");
+ String p0 = pr.getParameterValue(0).toString();
+ if (p0 == null)
+ System.out.println();
+ else
+ System.out.println(" And hello especially to "+p0);
+ }
+ }
+ );
+ // Create an empty command set
+ Set<Command> cs = new HashSet<Command>();
+
+ // Create the interpreter
+ NaturalCLI nc = new NaturalCLI(cs);
+
+ // Add the commands that can be understood
+ cs.add(showDateCommand);
+ cs.add(new HelpCommand(cs)); // help
+ cs.add(new HTMLHelpCommand(cs)); // htmlhelp
+ cs.add(new SleepCommand()); // sleep <seconds:number>
+ cs.add(new ExecuteFileCommand(nc)); // execute file <filename:string>
+
+ // Execute the command line
+ nc.execute(args, 0);
+
+ }
+}
Added: trunk/core/pom.xml
===================================================================
--- trunk/core/pom.xml (rev 0)
+++ trunk/core/pom.xml 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,17 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>cc.kune</groupId>
+ <artifactId>kune-core</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <modules>
+ <module>kune-cli</module>
+ </modules>
+<!-- <repositories> -->
+<!-- <repository> -->
+<!-- <id>kune-maven</id> -->
+<!-- <url>http://kune.ourproject.org/mavenrepo/</url> -->
+<!-- </repository> -->
+<!-- </repositories> -->
+</project>
\ No newline at end of file
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/debian/changelog 2012-04-03 14:44:06 UTC (rev 1826)
@@ -1,6 +1,6 @@
kune (0.1.0+b7) oneiric; urgency=low
- * Improved openfire connection. Improved debian init
+ * Improved openfire connection, debian init andº wave offline render and cache.
-- Vicente J. Ruiz Jurado <vjrj(a)ourproject.org> Mon, 02 Apr 2012 22:51:59 +0200
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/pom.xml 2012-04-03 14:44:06 UTC (rev 1826)
@@ -496,7 +496,7 @@
<version>3.3.5</version>
<!-- <scope>test</scope> -->
</dependency>
-
+
<!-- public side -->
<dependency>
<groupId>org.jruby.rack</groupId>
@@ -712,7 +712,7 @@
<groupId>com.googlecode</groupId>
<artifactId>gwtrpccommlayer</artifactId>
<version>0.0.1-SNAPSHOT</version>
- </dependency>
+ </dependency>
</dependencies>
<distributionManagement>
<repository>
@@ -1029,6 +1029,37 @@
</archive>
</configuration>
<executions>
+ <execution>
+ <id>common</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <classifier>common</classifier>
+ <includes>
+ <include>**/KuneCommon.gwt.xml**</include>
+ <include>**/kune/common/**</include>
+ </includes>
+ </configuration>
+ </execution>
+ <execution>
+ <id>services</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <classifier>services</classifier>
+ <includes>
+ <include>**/rpcservices/UserService**</include>
+ <include>**/shared/domain/*</include>
+ <include>**/shared/domain/utils/*</include>
+ <include>**/shared/dto/*</include>
+ <include>**/client/errors/*</include>
+ </includes>
+ </configuration>
+ </execution>
</executions>
</plugin>
</plugins>
@@ -1041,6 +1072,49 @@
<version>1.0-beta-2</version>
</extension>
</extensions>
+ <pluginManagement>
+ <plugins>
+ <!--This plugin's configuration is used to store Eclipse m2e settings
+ only. It has no influence on the Maven build itself. -->
+ <plugin>
+ <groupId>org.eclipse.m2e</groupId>
+ <artifactId>lifecycle-mapping</artifactId>
+ <version>1.0.0</version>
+ <configuration>
+ <lifecycleMappingMetadata>
+ <pluginExecutions>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId></groupId>
+ <artifactId></artifactId>
+ <versionRange></versionRange>
+ <goals>
+ <goal></goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ <pluginExecution>
+ <pluginExecutionFilter>
+ <groupId>org.liquibase</groupId>
+ <artifactId>liquibase-plugin</artifactId>
+ <versionRange>1.7.0.0,1.7.0.0</versionRange>
+ <goals>
+ <goal>update</goal>
+ </goals>
+ </pluginExecutionFilter>
+ <action>
+ <ignore></ignore>
+ </action>
+ </pluginExecution>
+ </pluginExecutions>
+ </lifecycleMappingMetadata>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
</build>
<profiles>
<profile>
Modified: trunk/script/kune client -no-server.launch
===================================================================
--- trunk/script/kune client -no-server.launch 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/script/kune client -no-server.launch 2012-04-03 14:44:06 UTC (rev 1826)
@@ -18,7 +18,7 @@
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gwt.eclipse.core.moduleClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gdt.eclipse.maven.mavenClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.DevMode"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-war /home/vjrj/proyectos/dev/kune/trunk/target/kune-0.1.0-SNAPSHOT -startupUrl /?locale=en&log_level=INFO -noserver -remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -logLevel INFO -codeServerPort 9997 cc.kune.KuneDev"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="kune"/>
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2012-04-03 14:44:06 UTC (rev 1826)
@@ -1,5 +1,5 @@
-GCHARSET "UTF-8 "; body
- {
+GCHARSET "UTF-8 ";
+ body {
background-color: transparent;
color: black;
font-family: "Ubuntu Beta", UbuntuBeta, Ubuntu, "Bitstream Vera Sans",
@@ -423,7 +423,7 @@
}
div.gwt-TabLayoutPanelTabInner {
- padding-top:3px;
+ padding-top: 3px;
}
.k-link {
@@ -901,7 +901,6 @@
padding: 0 2px;
}
-
button.k-btn-go-up {
margin-right: 5px;
}
@@ -976,8 +975,8 @@
color: gray !important;
border-color: #CCCCCC !important;
background: inherits !important;
- kfilter: alpha(opacity =
- 50) !important;
+ kfilter: alpha(opacity =
+ 50) !important;
-moz-opacity: 0.50 !important;
-khtml-opacity: 0.50 !important;
opacity: 0.50 !important;
@@ -991,7 +990,6 @@
}
/* end buttons */
-
.k-sn-collabslabel {
}
@@ -1270,8 +1268,8 @@
-webkit-border-bottom-left-radius: 5px;
-moz-border-radius-bottomleft: 5px;
border-bottom-left-radius: 5px;
- kfilter: alpha(opacity =
- 90);
+ kfilter: alpha(opacity =
+ 90);
-moz-opacity: 0.90;
-khtml-opacity: 0.90;
opacity: 0.90;
@@ -1605,8 +1603,14 @@
}
/* Wave public (not logged) render (splash) */
+div.docEditorContainer div.docEditor div.thread {
+ padding: 0 10px !important;
+}
-div.docEditorContainer div.docEditor div.thread {
- padding: 0 10px !important;
+.author-count-root {
+ margin: -30px 0 0 -30px;
}
+div.docEditorContainer div.thread div.time {
+ color: #A05A2C;
+}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/core/server/KuneContainerListener.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -23,14 +23,9 @@
\*/
package cc.kune.core.server;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.log4j.PropertyConfigurator;
-
import cc.kune.core.server.persist.KunePersistenceService;
import cc.kune.core.server.rack.ContainerListener;
@@ -48,18 +43,21 @@
this.logger = logger;
}
- private void configureLog4j() {
- try {
- final Properties properties = new Properties();
- final InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(
- "log4j.properties");
- // "log4j.dev.properties");
- properties.load(input);
- PropertyConfigurator.configure(properties);
- } catch (final IOException e) {
- e.printStackTrace();
- }
- }
+ //
+ // private void configureLog4j() {
+ // try {
+ // final Properties properties = new Properties();
+ // // FIXME this should be optional
+ // final InputStream input =
+ // Thread.currentThread().getContextClassLoader().getResourceAsStream(
+ // "log4j.properties");
+ // // "log4j.dev.properties");
+ // properties.load(input);
+ // PropertyConfigurator.configure(properties);
+ // } catch (final IOException e) {
+ // e.printStackTrace();
+ // }
+ // }
public Logger getLogger() {
return logger;
@@ -67,7 +65,7 @@
@Override
public void start() {
- configureLog4j();
+ // configureLog4j();
logger.log(Level.INFO, "Kune persistence starting");
persistenceService.start();
logger.log(Level.INFO, "Kune persistence started");
Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -182,13 +182,12 @@
bindServices();
// bind(KuneProperties.class).to(KunePropertiesDefault.class);
bind(Mapper.class).to(DozerMapper.class);
- bind(ServerToolRegistry.class);
- // bind(FileUploadManager.class).in(ServletScopes.REQUEST);
- bind(FileUploadManager.class);
- bind(FileDownloadManager.class);
- bind(EntityLogoUploadManager.class);
- bind(EntityLogoDownloadManager.class);
- bind(ParticipantUtils.class);
+ bind(ServerToolRegistry.class).in(Singleton.class);
+ bind(FileUploadManager.class).in(Singleton.class);
+ bind(FileDownloadManager.class).in(Singleton.class);
+ bind(EntityLogoUploadManager.class).in(Singleton.class);
+ bind(EntityLogoDownloadManager.class).in(Singleton.class);
+ bind(ParticipantUtils.class).in(Singleton.class);
bind(UsersOnline.class).to(UserSessionManager.class).in(Singleton.class);
requestStaticInjection(AccessRightsUtils.class);
bind(WaveEmailNotifier.class).in(Singleton.class);
Modified: trunk/src/main/java/cc/kune/core/server/content/XMLActionReader.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/content/XMLActionReader.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/core/server/content/XMLActionReader.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -46,7 +46,7 @@
@Inject
public XMLActionReader((a)Named(CoreSettings.RESOURCE_BASES) final List<String> resourceBases) {
try {
- final InputStream iStream = FileDownloadManagerUtils.searchFileInResourcBases(resourceBases,
+ final InputStream iStream = FileDownloadManagerUtils.getInputStreamInResourceBases(resourceBases,
XMLActionsConstants.ACTIONS_XML_LOCATION_PATH_ABS);
final StringWriter writer = new StringWriter();
IOUtils.copy(iStream, writer, "UTF-8");
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/EntityLogoDownloadManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/EntityLogoDownloadManager.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/EntityLogoDownloadManager.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -19,10 +19,14 @@
\*/
package cc.kune.core.server.manager.file;
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
-import java.io.InputStream;
import java.util.List;
+import javax.activation.MimetypesFileTypeMap;
import javax.persistence.NoResultException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -46,21 +50,30 @@
public static final Log LOG = LogFactory.getLog(EntityLogoDownloadManager.class);
private static final long serialVersionUID = -1958945058088446881L;
- private final InputStream groupLogo;
+ private final byte[] groupLogo;
GroupManager groupManager;
- private final InputStream personLogo;
- private final InputStream unknownLogo;
+ private final String groupMime;
+ private final byte[] personLogo;
+ private final String personMime;
+ private final byte[] unknownLogo;
+ private final String unknownMime;
@Inject
public EntityLogoDownloadManager((a)Named(CoreSettings.RESOURCE_BASES) final List<String> resourceBases,
- final GroupManager groupManager) {
+ final GroupManager groupManager) throws IOException {
this.groupManager = groupManager;
- personLogo = FileDownloadManagerUtils.searchFileInResourcBases(resourceBases,
- FileConstants.PERSON_NO_AVATAR_IMAGE);
- groupLogo = FileDownloadManagerUtils.searchFileInResourcBases(resourceBases,
- FileConstants.GROUP_NO_AVATAR_IMAGE);
- unknownLogo = FileDownloadManagerUtils.searchFileInResourcBases(resourceBases,
- FileConstants.NO_RESULT_AVATAR_IMAGE);
+
+ final File personFile = getFile(resourceBases, FileConstants.PERSON_NO_AVATAR_IMAGE);
+ personMime = getMime(personFile);
+ personLogo = getBy(personFile);
+
+ final File groupFile = getFile(resourceBases, FileConstants.GROUP_NO_AVATAR_IMAGE);
+ groupMime = getMime(groupFile);
+ groupLogo = getBy(groupFile);
+
+ final File unknownFile = getFile(resourceBases, FileConstants.NO_RESULT_AVATAR_IMAGE);
+ unknownMime = getMime(unknownFile);
+ unknownLogo = getBy(unknownFile);
}
@Override
@@ -82,25 +95,46 @@
return;
}
if (!group.hasLogo()) {
- FileDownloadManagerUtils.returnFile((group.isPersonal() ? personLogo : groupLogo),
- resp.getOutputStream());
+ if (group.isPersonal()) {
+ reply(resp, personLogo, personMime);
+ } else {
+ reply(resp, groupLogo, groupMime);
+ }
+
} else {
// Has logo
- final byte[] logo = group.getLogo();
-
- resp.setContentLength(logo.length);
- resp.setContentType(group.getLogoMime().toString());
- resp.setHeader("Content-Disposition", "attachment; filename=\"" + group.getShortName()
- + "-logo\"");
- resp.getOutputStream().write(logo);
+ reply(resp, group.getLogo(), group.getLogoMime().toString());
}
} catch (final NoResultException e) {
unknownResult(resp);
}
}
+ private byte[] getBy(final File file) throws IOException {
+ final BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ org.apache.commons.io.IOUtils.copy(is, baos);
+ return baos.toByteArray();
+ }
+
+ private File getFile(final List<String> resourceBases, final String location) {
+ final File file = FileDownloadManagerUtils.searchFileInResourceBases(resourceBases, location);
+ return file;
+ }
+
+ private String getMime(final File file) {
+ return new MimetypesFileTypeMap().getContentType(file);
+ }
+
+ private void reply(final HttpServletResponse resp, final byte[] logo, final String mime)
+ throws IOException {
+ resp.setContentLength(logo.length);
+ resp.setContentType(mime);
+ resp.getOutputStream().write(logo);
+ }
+
private void unknownResult(final HttpServletResponse resp) throws IOException {
- FileDownloadManagerUtils.returnFile(unknownLogo, resp.getOutputStream());
+ reply(resp, unknownLogo, unknownMime);
}
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/FileDownloadManagerUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/FileDownloadManagerUtils.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/FileDownloadManagerUtils.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -37,6 +37,20 @@
public static final Log LOG = LogFactory.getLog(FileDownloadManagerUtils.class);
+ public static InputStream getInputStreamInResourceBases(final List<String> resourceBases,
+ final String filename) {
+ InputStream in = null;
+ final File icon = searchFileInResourceBases(resourceBases, filename);
+ try {
+ if (icon != null) {
+ in = new BufferedInputStream(new FileInputStream(icon));
+ }
+ } catch (final FileNotFoundException e) {
+ LOG.error(String.format("Cannot read filename: %s in %s", filename, resourceBases.toString()));
+ }
+ return in;
+ }
+
public static void returnFile(final InputStream in, final OutputStream out)
throws FileNotFoundException, IOException {
try {
@@ -74,25 +88,17 @@
resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
- public static InputStream searchFileInResourcBases(final List<String> resourceBases,
- final String filename) {
- InputStream in = null;
+ public static File searchFileInResourceBases(final List<String> resourceBases, final String filename) {
File icon = null;
for (final String path : resourceBases) {
- final String pathAndfilename = path + (path.endsWith(File.separator) ? "" : File.separator) + filename;
+ final String pathAndfilename = path + (path.endsWith(File.separator) ? "" : File.separator)
+ + filename;
final File file = new File(pathAndfilename);
if (file.exists()) {
icon = file;
break;
}
}
- try {
- if (icon != null) {
- in = new BufferedInputStream(new FileInputStream(icon));
- }
- } catch (final FileNotFoundException e) {
- LOG.error(String.format("Cannot read filename: %s in %s", filename, resourceBases.toString()));
- }
- return in;
+ return icon;
}
}
Modified: trunk/src/main/java/cc/kune/core/server/persist/DataSourceKunePersistModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/persist/DataSourceKunePersistModule.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/core/server/persist/DataSourceKunePersistModule.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -19,6 +19,8 @@
*/
package cc.kune.core.server.persist;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.Properties;
import javax.persistence.EntityManager;
@@ -26,6 +28,7 @@
import org.apache.commons.configuration.SystemConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.log4j.PropertyConfigurator;
import org.hibernate.Session;
import cc.kune.core.server.properties.KuneProperties;
@@ -50,7 +53,6 @@
import com.google.inject.persist.jpa.KuneJpaLocalTxnInterceptor;
public class DataSourceKunePersistModule extends PrivateModule {
- // FIXME Trying to make this PrivateModule so we can have two Persist sources
// http://code.google.com/p/google-guice/wiki/GuicePersistMultiModules
public static final Log LOG = LogFactory.getLog(DataSourceKunePersistModule.class);
@@ -58,6 +60,7 @@
CustomPersistFilter.class, DataSourceKune.class);
private String kuneConfig;
private KunePropertiesDefault kuneProperties;
+ private String log4Conf = null;
private String settedJpaUnit = null;
private KuneJpaLocalTxnInterceptor transactionInterceptor;
@@ -86,6 +89,10 @@
bind(KuneProperties.class).toInstance(kuneProperties);
+ if (log4Conf == null) {
+ configureLog4j();
+ }
+
// precedence method param > properties
final String configuredJpaUnit = kuneProperties.get(KuneProperties.SITE_DB_PERSISTENCE_NAME);
final String jpaUnit = settedJpaUnit != null ? settedJpaUnit
@@ -158,6 +165,19 @@
bind(GenericPersistenceInitializer.class).asEagerSingleton();
}
+ private void configureLog4j() {
+ try {
+ final Properties properties = new Properties();
+ final InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(
+ "log4j.properties");
+ // "log4j.dev.properties");
+ properties.load(input);
+ PropertyConfigurator.configure(properties);
+ } catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+
public KuneProperties getKuneProperties() {
return kuneProperties;
}
@@ -170,5 +190,6 @@
final SystemConfiguration sysConf = new SystemConfiguration();
kuneConfig = settedProperties != null ? settedProperties : sysConf.getString("kune.server.config");
kuneProperties = new KunePropertiesDefault(kuneConfig);
+ log4Conf = sysConf.getString("log4j.configuration");
}
}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/server/state/RenderedWavesCache.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/state/RenderedWavesCache.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/state/RenderedWavesCache.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright (C) 2007-2012 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+package cc.kune.core.server.state;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import cc.kune.common.shared.utils.Pair;
+import cc.kune.core.server.persist.CachedCollection;
+import cc.kune.wave.server.kspecific.KuneWaveService;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.wave.api.Wavelet;
+
+@Singleton
+public class RenderedWavesCache extends CachedCollection<String, Pair<Long, String>> {
+ public static final Log LOG = LogFactory.getLog(RenderedWavesCache.class);
+
+ private static final String SEP = "---";
+
+ private final KuneWaveService kuneWaveService;
+
+ @Inject
+ public RenderedWavesCache(final KuneWaveService kuneWaveService) {
+ super(50);
+ this.kuneWaveService = kuneWaveService;
+ }
+
+ public String getOrRender(final Wavelet wavelet) {
+ final Pair<Long, String> pair = get(ref(wavelet));
+ final long lastModifiedTime = wavelet.getLastModifiedTime();
+ if (pair != null) {
+ LOG.debug("Existing rendered wave");
+ }
+ if (pair == null || pair.getLeft() < lastModifiedTime) {
+ LOG.debug("not returning not existing or expired rendered wave");
+ final String rendered = kuneWaveService.render(wavelet);
+ put(ref(wavelet), Pair.create(lastModifiedTime, rendered));
+ return rendered;
+ }
+ return pair.getRight();
+ }
+
+ private String ref(final Wavelet wavelet) {
+ return wavelet.getWaveId() + SEP + wavelet.getWaveletId();
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -47,7 +47,8 @@
public static final Log LOG = LogFactory.getLog(StateServiceDefault.class);
private final GroupManager groupManager;
private final I18nTranslationService i18n;
- private final KuneWaveService kuneWaveManager;
+ private final KuneWaveService kuneWaveService;
+ private final RenderedWavesCache renderedWaves;
private final AccessRightsService rightsService;
private final SocialNetworkManager socialNetworkManager;
private final TagUserContentManager tagManager;
@@ -56,13 +57,14 @@
public StateServiceDefault(final GroupManager groupManager,
final SocialNetworkManager socialNetworkManager, final TagUserContentManager tagManager,
final AccessRightsService rightsService, final I18nTranslationService i18n,
- final KuneWaveService kuneWaveManager) {
+ final KuneWaveService kuneWaveService, final RenderedWavesCache renderedWaves) {
this.groupManager = groupManager;
this.socialNetworkManager = socialNetworkManager;
this.tagManager = tagManager;
this.rightsService = rightsService;
this.i18n = i18n;
- this.kuneWaveManager = kuneWaveManager;
+ this.kuneWaveService = kuneWaveService;
+ this.renderedWaves = renderedWaves;
}
private Container calculateRootContainer(final Container container) {
@@ -109,10 +111,11 @@
state.setWaveRef(waveId);
try {
// FIXME if we remove the authors this fails...
- final Wavelet wavelet = kuneWaveManager.fetchWave(
+ final Wavelet wavelet = kuneWaveService.fetchWave(
JavaWaverefEncoder.decodeWaveRefFromPath(waveId), content.getAuthors().get(0).getShortName());
// final String currentContent = wavelet.getRootBlip().getContent();
- state.setContent(kuneWaveManager.render(wavelet));
+
+ state.setContent(renderedWaves.getOrRender(wavelet));
// Well we "cache" the last modified time of waves in db (w'll find
// another way to do it better in the future with db persitence of
// waves)
@@ -120,7 +123,7 @@
// contentManager.setModifiedOn(content, wavelet.getLastModifiedTime());
// contentManager.save(userLogged, content, currentContent);
state.setTitle(wavelet.getTitle());
- state.setIsParticipant(userLogged != User.UNKNOWN_USER ? kuneWaveManager.isParticipant(wavelet,
+ state.setIsParticipant(userLogged != User.UNKNOWN_USER ? kuneWaveService.isParticipant(wavelet,
userLogged.getShortName()) : false);
} catch (final Exception e) {
LOG.error("Error accessing wave " + waveId, e);
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -103,6 +103,7 @@
Tooltip.to(itemWidget, item.getTooltip());
// FIXME make this under demand
itemWidget.getRowClick().addClickHandler(clickHandler);
+ itemWidget.getRowDoubleClick().addDoubleClickHandler(doubleClickHandler);
if (ContentStatus.inTheDustbin.equals(item.getContentStatus())) {
itemWidget.getTitleWidget().addStyleName("k-line-through");
}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -120,12 +120,14 @@
getView().addItem(item, new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
+ event.stopPropagation();
stateManager.gotoStateToken(stateToken);
}
}, new DoubleClickHandler() {
@Override
public void onDoubleClick(final DoubleClickEvent event) {
- stateManager.gotoStateToken(stateToken);
+ event.stopPropagation();
+ // stateManager.gotoStateToken(stateToken);
}
});
}
Modified: trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-04-03 13:42:14 UTC (rev 1825)
+++ trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-04-03 14:44:06 UTC (rev 1826)
@@ -56,13 +56,13 @@
public void onNetworkStatus(final NetworkStatusEvent event) {
switch (event.getStatus()) {
case CONNECTED:
- case RECONNECTED:
session.check(new AsyncCallbackSimple<Void>() {
@Override
public void onSuccess(final Void result) {
goOnline();
}
});
+ case RECONNECTED:
break;
case DISCONNECTED:
NotifyUser.showProgress(i18n.t("Connecting"));
1
0
r1825 - in openfireauth: . src/main/java/cc/kune/core/server/auth/openfire
by Vicente J. Ruiz Jurado 03 Apr '12
by Vicente J. Ruiz Jurado 03 Apr '12
03 Apr '12
Author: vjrj_
Date: 2012-04-03 15:42:14 +0200 (Tue, 03 Apr 2012)
New Revision: 1825
Modified:
openfireauth/pom.xml
openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java
Log:
open auth connector improved
Modified: openfireauth/pom.xml
===================================================================
--- openfireauth/pom.xml 2012-04-03 13:34:06 UTC (rev 1824)
+++ openfireauth/pom.xml 2012-04-03 13:42:14 UTC (rev 1825)
@@ -39,17 +39,7 @@
<dependency>
<groupId>cc.kune</groupId>
<artifactId>kune-services</artifactId>
- <version>0.1.0-SNAPSHOT</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- </exclusions>
+ <version>0.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
Modified: openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java
===================================================================
--- openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java 2012-04-03 13:34:06 UTC (rev 1824)
+++ openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java 2012-04-03 13:42:14 UTC (rev 1825)
@@ -21,7 +21,7 @@
public class KuneAuthProvider implements AuthProvider {
public static final Log LOG = LogFactory.getLog(KuneAuthProvider.class);
- private static final String USER_NOT_LOGGED = "User not logged";
+ private static final String USER_NOT_LOGGED = "User \'%s\' authentication failed";
private final String publicAddress;
private UserService userService;
@@ -40,10 +40,10 @@
// http://googlewebtoolkit.blogspot.com.es/2010/07/gwtrpccommlayer-extending-g…
try {
final URL url = new URL("http://" + publicAddress + "/ws/UserService");
- LOG.error("Service access URL: " + url);
+ LOG.info("Service access URL: " + url);
final GwtRpcService service = GwtRpcService.FACTORY.newInstance();
userService = service.create(url, UserService.class);
- LOG.error("UserService created");
+ LOG.info("UserService created");
} catch (final Exception e) {
LOG.error("Error starting auth provider", e);
}
@@ -54,12 +54,13 @@
throws UnauthorizedException {
try {
userService.checkUserAndHash(username, passwdOrToken);
- LOG.info(String.format("User %s logged", username));
+ LOG.info(String.format("User \'%s\' logged", username));
} catch (final Exception e) {
- LOG.error(USER_NOT_LOGGED, e);
- throw new UnauthorizedException(USER_NOT_LOGGED, e);
+ final String msg = String.format(USER_NOT_LOGGED, username);
+ LOG.warn(msg);
+ throw new UnauthorizedException(msg);
}
- LOG.info(String.format("User %s logged", username));
+ LOG.info(String.format("User \'%s\' logged", username));
}
@Override
1
0
r1824 - in openfireauth: . .settings src/main/java/cc/kune/core/server/auth/openfire src/test/java/cc/kune/core/server/auth/openfire
by Vicente J. Ruiz Jurado 03 Apr '12
by Vicente J. Ruiz Jurado 03 Apr '12
03 Apr '12
Author: vjrj_
Date: 2012-04-03 15:34:06 +0200 (Tue, 03 Apr 2012)
New Revision: 1824
Removed:
openfireauth/.settings/org.eclipse.jdt.core.prefs
Modified:
openfireauth/.classpath
openfireauth/.project
openfireauth/pom.xml
openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java
openfireauth/src/test/java/cc/kune/core/server/auth/openfire/KuneAuthProviderTest.java
Log:
open auth connector improved
Modified: openfireauth/.classpath
===================================================================
--- openfireauth/.classpath 2012-04-03 00:35:11 UTC (rev 1823)
+++ openfireauth/.classpath 2012-04-03 13:34:06 UTC (rev 1824)
@@ -5,8 +5,12 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/cc/kune/kune/0.1.0-SNAPSHOT/kune-0.1.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cc/kune/kune-services/0.1.0-SNAPSHOT/kune-services-0.1.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/guice/3.0/guice-3.0.jar" sourcepath="M2_REPO/com/google/inject/guice/3.0/guice-3.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/inject/javax.inject/1/javax.inject-1.jar" sourcepath="M2_REPO/javax/inject/javax.inject/1/javax.inject-1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/com/googlecode/gwtrpccommlayer/0.0.1-SNAPSHOT/gwtrpccommlayer-0.0.1-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/4.9/junit-4.9.jar" sourcepath="M2_REPO/junit/junit/4.9/junit-4.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
@@ -15,4 +19,8 @@
<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/igniterealtime/openfire/3.7.0/openfire-3.7.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.4/slf4j-api-1.6.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-simple/1.6.4/slf4j-simple-1.6.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.13/box-0.3.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.13/box-src-0.3.13.jar" sourcepath="M2_REPO/org/waveprotocol/box-src/0.3.13/box-src-0.3.13-sources.jar"/>
</classpath>
\ No newline at end of file
Modified: openfireauth/.project
===================================================================
--- openfireauth/.project 2012-04-03 00:35:11 UTC (rev 1823)
+++ openfireauth/.project 2012-04-03 13:34:06 UTC (rev 1824)
@@ -6,12 +6,8 @@
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
</buildCommand>
- <buildCommand>
- <name>org.eclipse.m2e.core.maven2Builder</name>
- </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
\ No newline at end of file
Deleted: openfireauth/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- openfireauth/.settings/org.eclipse.jdt.core.prefs 2012-04-03 00:35:11 UTC (rev 1823)
+++ openfireauth/.settings/org.eclipse.jdt.core.prefs 2012-04-03 13:34:06 UTC (rev 1824)
@@ -1,285 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.source=1.6
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=2
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=0
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=0
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=2
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=105
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=2
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
Modified: openfireauth/pom.xml
===================================================================
--- openfireauth/pom.xml 2012-04-03 00:35:11 UTC (rev 1823)
+++ openfireauth/pom.xml 2012-04-03 13:34:06 UTC (rev 1824)
@@ -38,8 +38,18 @@
</dependency>
<dependency>
<groupId>cc.kune</groupId>
- <artifactId>kune</artifactId>
+ <artifactId>kune-services</artifactId>
<version>0.1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
@@ -57,6 +67,36 @@
<artifactId>httpcore</artifactId>
<version>4.0.1</version>
</dependency>
+ <dependency>
+ <groupId>org.waveprotocol</groupId>
+ <artifactId>box</artifactId>
+ <version>${wiab.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.waveprotocol</groupId>
+ <artifactId>box-src</artifactId>
+ <version>${wiab.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.6.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <version>1.6.4</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <version>3.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.gwt</groupId>
+ <artifactId>gwt-servlet</artifactId>
+ <version>${gwt.version}</version>
+ </dependency>
</dependencies>
<build>
<plugins>
Modified: openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java
===================================================================
--- openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java 2012-04-03 00:35:11 UTC (rev 1823)
+++ openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java 2012-04-03 13:34:06 UTC (rev 1824)
@@ -1,7 +1,9 @@
package cc.kune.core.server.auth.openfire;
-import java.net.MalformedURLException;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
+import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -10,25 +12,41 @@
import org.jivesoftware.openfire.auth.InternalUnauthenticatedException;
import org.jivesoftware.openfire.auth.UnauthorizedException;
import org.jivesoftware.openfire.user.UserNotFoundException;
+import org.waveprotocol.box.server.CoreSettings;
import cc.kune.core.client.rpcservices.UserService;
-import com.googlecode.gwtrpccommlayer.client.impl.GwtRpcCommLayerClient;
+import com.googlecode.gwtrpccommlayer.client.GwtRpcService;
public class KuneAuthProvider implements AuthProvider {
public static final Log LOG = LogFactory.getLog(KuneAuthProvider.class);
private static final String USER_NOT_LOGGED = "User not logged";
- private final UserService userService;
+ private final String publicAddress;
+ private UserService userService;
- public KuneAuthProvider() throws MalformedURLException, ClassNotFoundException,
- IllegalAccessException, InstantiationException {
+ public KuneAuthProvider() {
+ final Properties prop = new Properties();
+ try {
+ final InputStream is = this.getClass().getClassLoader().getResourceAsStream(
+ "wave-server.properties");
+ prop.load(is);
+ } catch (final IOException e) {
+ LOG.error("Error openning property files", e);
+ }
+ publicAddress = prop.getProperty(CoreSettings.HTTP_FRONTEND_PUBLIC_ADDRESS);
+
// http://googlewebtoolkit.blogspot.com.es/2010/07/gwtrpccommlayer-extending-g…
-
- final URL url = new URL("http://127.0.0.1:8888/ws/UserService");
- final GwtRpcCommLayerClient client = new GwtRpcCommLayerClient(url);
- userService = client.createRemoteServicePojoProxy(UserService.class);
+ try {
+ final URL url = new URL("http://" + publicAddress + "/ws/UserService");
+ LOG.error("Service access URL: " + url);
+ final GwtRpcService service = GwtRpcService.FACTORY.newInstance();
+ userService = service.create(url, UserService.class);
+ LOG.error("UserService created");
+ } catch (final Exception e) {
+ LOG.error("Error starting auth provider", e);
+ }
}
@Override
@@ -36,9 +54,12 @@
throws UnauthorizedException {
try {
userService.checkUserAndHash(username, passwdOrToken);
+ LOG.info(String.format("User %s logged", username));
} catch (final Exception e) {
+ LOG.error(USER_NOT_LOGGED, e);
throw new UnauthorizedException(USER_NOT_LOGGED, e);
}
+ LOG.info(String.format("User %s logged", username));
}
@Override
Modified: openfireauth/src/test/java/cc/kune/core/server/auth/openfire/KuneAuthProviderTest.java
===================================================================
--- openfireauth/src/test/java/cc/kune/core/server/auth/openfire/KuneAuthProviderTest.java 2012-04-03 00:35:11 UTC (rev 1823)
+++ openfireauth/src/test/java/cc/kune/core/server/auth/openfire/KuneAuthProviderTest.java 2012-04-03 13:34:06 UTC (rev 1824)
@@ -16,7 +16,8 @@
final KuneAuthProvider auth = new KuneAuthProvider();
auth.authenticate("admin", "easyeasy");
// Test with a valid session hash also
- auth.authenticate("admin", "1lvy0m668xv9w1csre15n874hx");
+ // auth.authenticate("admin", "guplzs35jxe06vxfi2h4xk7q");
+
// auth.authenticate("vjrj", "6rzonw7n39p01td1p0rfujvu3");
// auth.authenticate("admin", "x04c5575ycquu96k4kajldaq");
// Only usersession!!!
@@ -25,24 +26,24 @@
@Test(expected = UnauthorizedException.class)
public void wrongFileSession() throws UnauthorizedException, ConnectionException,
- InternalUnauthenticatedException, MalformedURLException, ClassNotFoundException,
- IllegalAccessException, InstantiationException {
+ InternalUnauthenticatedException, ClassNotFoundException, IllegalAccessException,
+ InstantiationException {
final KuneAuthProvider auth = new KuneAuthProvider();
auth.authenticate("admin", "6rzonw7n39p01td1p0rfujvu3a");
}
@Test(expected = UnauthorizedException.class)
public void wrongPass() throws UnauthorizedException, ConnectionException,
- InternalUnauthenticatedException, MalformedURLException, ClassNotFoundException,
- IllegalAccessException, InstantiationException {
+ InternalUnauthenticatedException, ClassNotFoundException, IllegalAccessException,
+ InstantiationException {
final KuneAuthProvider auth = new KuneAuthProvider();
auth.authenticate("admin", "easyeasy2");
}
@Test(expected = UnauthorizedException.class)
public void wrongSession() throws UnauthorizedException, ConnectionException,
- InternalUnauthenticatedException, MalformedURLException, ClassNotFoundException,
- IllegalAccessException, InstantiationException {
+ InternalUnauthenticatedException, ClassNotFoundException, IllegalAccessException,
+ InstantiationException {
final KuneAuthProvider auth = new KuneAuthProvider();
auth.authenticate("admin", "6rzonw7n39p01td1p0rfujvu3");
}
1
0
r1823 - in openfireauth: . src/main/java/cc/kune/core/server/auth/openfire src/test/java/cc/kune/core/server/auth/openfire
by Vicente J. Ruiz Jurado 03 Apr '12
by Vicente J. Ruiz Jurado 03 Apr '12
03 Apr '12
Author: vjrj_
Date: 2012-04-03 02:35:11 +0200 (Tue, 03 Apr 2012)
New Revision: 1823
Modified:
openfireauth/.classpath
openfireauth/pom.xml
openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java
openfireauth/src/test/java/cc/kune/core/server/auth/openfire/KuneAuthProviderTest.java
Log:
Openfire AuthProvider now use RPC
Modified: openfireauth/.classpath
===================================================================
--- openfireauth/.classpath 2012-04-03 00:06:45 UTC (rev 1822)
+++ openfireauth/.classpath 2012-04-03 00:35:11 UTC (rev 1823)
@@ -5,17 +5,14 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/com/google/guava/guava/r09/guava-r09.jar" sourcepath="M2_REPO/com/google/guava/guava/r09/guava-r09-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/protobuf/protobuf-java/2.3.0/protobuf-java-2.3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cc/kune/kune/0.1.0-SNAPSHOT/kune-0.1.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/googlecode/gwtrpccommlayer/0.0.1-SNAPSHOT/gwtrpccommlayer-0.0.1-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/4.9/junit-4.9.jar" sourcepath="M2_REPO/junit/junit/4.9/junit-4.9-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpclient/4.0.1/httpclient-4.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/igniterealtime/openfire/3.7.0/openfire-3.7.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.13/box-0.3.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.13/box-src-0.3.13.jar" sourcepath="M2_REPO/org/waveprotocol/box-src/0.3.13/box-src-0.3.13-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model/0.3.13/model-0.3.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.13/model-src-0.3.13.jar" sourcepath="M2_REPO/org/waveprotocol/model-src/0.3.13/model-src-0.3.13-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto/0.3.13/proto-0.3.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-src/0.3.13/proto-src-0.3.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util/0.3.13/util-0.3.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.13/util-src-0.3.13.jar" sourcepath="M2_REPO/org/waveprotocol/util-src/0.3.13/util-src-0.3.13-sources.jar"/>
</classpath>
\ No newline at end of file
Modified: openfireauth/pom.xml
===================================================================
--- openfireauth/pom.xml 2012-04-03 00:06:45 UTC (rev 1822)
+++ openfireauth/pom.xml 2012-04-03 00:35:11 UTC (rev 1823)
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>cc.kune</groupId>
<artifactId>kune-openfireauth</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <version>0.0.2-SNAPSHOT</version>
<name>Kune Openfire Auth Lib</name>
<description>The jar generated, can be installed in /lib/ directory and allow to auth openfire users throw kune session tokens (see HybridAuthProvider)</description>
<properties>
@@ -11,6 +11,7 @@
<maven.compiler.target>1.6</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<wiab.version>0.3.13</wiab.version>
+ <gwt.version>2.1.1</gwt.version>
</properties>
<repositories>
<repository>
@@ -20,66 +21,42 @@
</repositories>
<dependencies>
<dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>r09</version>
- </dependency>
- <dependency>
- <groupId>com.google.protobuf</groupId>
- <artifactId>protobuf-java</artifactId>
- <version>2.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>model</artifactId>
- <version>${wiab.version}</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>model-src</artifactId>
- <version>${wiab.version}</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>box</artifactId>
- <version>${wiab.version}</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>box-src</artifactId>
- <version>${wiab.version}</version>
- </dependency>
- <dependency>
<groupId>org.igniterealtime</groupId>
<artifactId>openfire</artifactId>
<version>3.7.0</version>
</dependency>
<dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>proto</artifactId>
- <version>${wiab.version}</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>proto-src</artifactId>
- <version>${wiab.version}</version>
- </dependency>
- <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>util</artifactId>
- <version>${wiab.version}</version>
+ <groupId>com.googlecode</groupId>
+ <artifactId>gwtrpccommlayer</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>util-src</artifactId>
- <version>${wiab.version}</version>
+ <groupId>cc.kune</groupId>
+ <artifactId>kune</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>com.google.gwt</groupId>
+ <artifactId>gwt-user</artifactId>
+ <version>${gwt.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpcore</artifactId>
+ <version>4.0.1</version>
+ </dependency>
</dependencies>
<build>
<plugins>
@@ -105,4 +82,4 @@
</plugin>
</plugins>
</build>
-</project>
\ No newline at end of file
+</project>
Modified: openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java
===================================================================
--- openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java 2012-04-03 00:06:45 UTC (rev 1822)
+++ openfireauth/src/main/java/cc/kune/core/server/auth/openfire/KuneAuthProvider.java 2012-04-03 00:35:11 UTC (rev 1823)
@@ -1,12 +1,7 @@
package cc.kune.core.server.auth.openfire;
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.util.Properties;
+import java.net.MalformedURLException;
+import java.net.URL;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -15,137 +10,34 @@
import org.jivesoftware.openfire.auth.InternalUnauthenticatedException;
import org.jivesoftware.openfire.auth.UnauthorizedException;
import org.jivesoftware.openfire.user.UserNotFoundException;
-import org.waveprotocol.box.server.CoreSettings;
-import org.waveprotocol.box.server.account.AccountData;
-import org.waveprotocol.box.server.persistence.PersistenceException;
-import org.waveprotocol.box.server.persistence.file.FileAccountStore;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-public class KuneAuthProvider implements AuthProvider {
+import cc.kune.core.client.rpcservices.UserService;
- protected class ClassLoadingObjectInputStream extends ObjectInputStream {
+import com.googlecode.gwtrpccommlayer.client.impl.GwtRpcCommLayerClient;
- /**
- * Code copied from HashSessionManager
- *
- * @throws IOException
- */
- public ClassLoadingObjectInputStream() throws IOException {
- super();
- }
+public class KuneAuthProvider implements AuthProvider {
- public ClassLoadingObjectInputStream(final java.io.InputStream in) throws IOException {
- super(in);
- }
-
- @Override
- public Class<?> resolveClass(final java.io.ObjectStreamClass cl) throws IOException,
- ClassNotFoundException {
- try {
- return Class.forName(cl.getName(), false, Thread.currentThread().getContextClassLoader());
- } catch (final ClassNotFoundException e) {
- return super.resolveClass(cl);
- }
- }
- }
-
- private static final String INCORRECT_USERNAME = "Incorrect username";
public static final Log LOG = LogFactory.getLog(KuneAuthProvider.class);
private static final String USER_NOT_LOGGED = "User not logged";
- private final FileAccountStore accountStore;
- private final Properties prop;
+ private final UserService userService;
- public KuneAuthProvider() {
- prop = new Properties();
- try {
- final InputStream is = this.getClass().getClassLoader().getResourceAsStream(
- "wave-server.properties");
+ public KuneAuthProvider() throws MalformedURLException, ClassNotFoundException,
+ IllegalAccessException, InstantiationException {
- // final String location =
- // getClass().getProtectionDomain().getCodeSource().getLocation().toString();
- // LOG.info("Location: " + location);
- // final String path = location.substring(5);
- // final FileInputStream fis = new FileInputStream(new File(path +
- // "wave-server.properties"));
- prop.load(is);
- } catch (final IOException e) {
- LOG.error("Error openning property files", e);
- }
- final String acStoreLocation = getProp(CoreSettings.ACCOUNT_STORE_DIRECTORY);
- LOG.warn("Account store location: " + acStoreLocation);
- accountStore = new FileAccountStore(acStoreLocation);
+ // http://googlewebtoolkit.blogspot.com.es/2010/07/gwtrpccommlayer-extending-g…
+
+ final URL url = new URL("http://127.0.0.1:8888/ws/UserService");
+ final GwtRpcCommLayerClient client = new GwtRpcCommLayerClient(url);
+ userService = client.createRemoteServicePojoProxy(UserService.class);
}
@Override
- @SuppressWarnings("unused")
public void authenticate(final String username, final String passwdOrToken)
- throws UnauthorizedException, ConnectionException, InternalUnauthenticatedException {
+ throws UnauthorizedException {
try {
- final String accountName = username + ParticipantId.DOMAIN_PREFIX
- + getProp(CoreSettings.WAVE_SERVER_DOMAIN);
- // LOG.warn("Trying to check account " + accountName);
- final AccountData account = accountStore.getAccount(ParticipantId.ofUnsafe(accountName));
- if (account.asHuman().getPasswordDigest().verify(passwdOrToken.toCharArray())) {
- // Great ... authenticated
- } else {
- boolean logged = false;
- final String sessionName = getProp(CoreSettings.SESSIONS_STORE_DIRECTORY) + File.separator
- + passwdOrToken;
- // LOG.warn("Session name: " + sessionName);
- try {
- final File session = new File(sessionName);
- if (session.exists()) {
- final FileInputStream is = new FileInputStream(session);
- final DataInputStream in = new DataInputStream(is);
-
- final String clusterId = in.readUTF();
- in.readUTF(); // nodeId
- final long created = in.readLong();
- final long accessed = in.readLong();
- final int requests = in.readInt();
-
- final int size = in.readInt();
- if (size > 0) {
- final ClassLoadingObjectInputStream ois = new ClassLoadingObjectInputStream(in);
- for (int i = 0; i < size; i++) {
- try {
- final String key = ois.readUTF();
- final Object value = ois.readObject();
- if (value instanceof ParticipantId) {
- if (((ParticipantId) value).getAddress().startsWith(username + "@")) {
- // LOG.warn("Participation id found in session");
- logged = true;
- break;
- }
- }
- } catch (final ClassNotFoundException e) {
- } catch (final IOException e) {
- LOG.warn("Persisted in kune session unexpected object: " + e.getMessage());
- }
- }
- ois.close();
- }
- in.close();
- is.close();
- if (!logged) {
- // LOG.warn("Participation id not found in session");
- throw new UnauthorizedException(INCORRECT_USERNAME);
- } else {
- // LOG.warn("Participation id found in session");
- // Great ... authenticated
- }
- } else {
- // LOG.warn("Session file doesn't exists");
- throw new UnauthorizedException(USER_NOT_LOGGED);
- }
- } catch (final IOException e) {
- LOG.warn("File session io error", e);
- throw new UnauthorizedException(USER_NOT_LOGGED, e);
- }
- }
- } catch (final PersistenceException e) {
- LOG.warn("File session persistence error");
- throw new UnauthorizedException(INCORRECT_USERNAME, e);
+ userService.checkUserAndHash(username, passwdOrToken);
+ } catch (final Exception e) {
+ throw new UnauthorizedException(USER_NOT_LOGGED, e);
}
}
@@ -161,10 +53,6 @@
throw new UnsupportedOperationException();
}
- private String getProp(final String key) {
- return (String) prop.get(key);
- }
-
@Override
public boolean isDigestSupported() {
return false;
Modified: openfireauth/src/test/java/cc/kune/core/server/auth/openfire/KuneAuthProviderTest.java
===================================================================
--- openfireauth/src/test/java/cc/kune/core/server/auth/openfire/KuneAuthProviderTest.java 2012-04-03 00:06:45 UTC (rev 1822)
+++ openfireauth/src/test/java/cc/kune/core/server/auth/openfire/KuneAuthProviderTest.java 2012-04-03 00:35:11 UTC (rev 1823)
@@ -1,5 +1,7 @@
package cc.kune.core.server.auth.openfire;
+import java.net.MalformedURLException;
+
import org.jivesoftware.openfire.auth.ConnectionException;
import org.jivesoftware.openfire.auth.InternalUnauthenticatedException;
import org.jivesoftware.openfire.auth.UnauthorizedException;
@@ -9,32 +11,38 @@
@Test
public void maintest() throws UnauthorizedException, ConnectionException,
- InternalUnauthenticatedException {
+ InternalUnauthenticatedException, MalformedURLException, ClassNotFoundException,
+ IllegalAccessException, InstantiationException {
final KuneAuthProvider auth = new KuneAuthProvider();
auth.authenticate("admin", "easyeasy");
- auth.authenticate("vjrj", "6rzonw7n39p01td1p0rfujvu3");
- auth.authenticate("admin", "x04c5575ycquu96k4kajldaq");
+ // Test with a valid session hash also
+ auth.authenticate("admin", "1lvy0m668xv9w1csre15n874hx");
+ // auth.authenticate("vjrj", "6rzonw7n39p01td1p0rfujvu3");
+ // auth.authenticate("admin", "x04c5575ycquu96k4kajldaq");
// Only usersession!!!
// auth.authenticate("vjrj", "1006oh5apswj81tl4vcsk1gqpj");
}
@Test(expected = UnauthorizedException.class)
public void wrongFileSession() throws UnauthorizedException, ConnectionException,
- InternalUnauthenticatedException {
+ InternalUnauthenticatedException, MalformedURLException, ClassNotFoundException,
+ IllegalAccessException, InstantiationException {
final KuneAuthProvider auth = new KuneAuthProvider();
auth.authenticate("admin", "6rzonw7n39p01td1p0rfujvu3a");
}
@Test(expected = UnauthorizedException.class)
public void wrongPass() throws UnauthorizedException, ConnectionException,
- InternalUnauthenticatedException {
+ InternalUnauthenticatedException, MalformedURLException, ClassNotFoundException,
+ IllegalAccessException, InstantiationException {
final KuneAuthProvider auth = new KuneAuthProvider();
auth.authenticate("admin", "easyeasy2");
}
@Test(expected = UnauthorizedException.class)
public void wrongSession() throws UnauthorizedException, ConnectionException,
- InternalUnauthenticatedException {
+ InternalUnauthenticatedException, MalformedURLException, ClassNotFoundException,
+ IllegalAccessException, InstantiationException {
final KuneAuthProvider auth = new KuneAuthProvider();
auth.authenticate("admin", "6rzonw7n39p01td1p0rfujvu3");
}
1
0