32
1
mirror of https://github.com/joomla-extensions/weblinks.git synced 2024-10-31 19:02:30 +00:00

Compare commits

...

504 Commits

Author SHA1 Message Date
Tuan Pham Ngoc
bc87751851
Replace 4.3.0 by 4.3.1 2023-10-24 16:50:27 +07:00
Tuan Pham Ngoc
b47cd5a598
Update download link 2023-10-23 19:02:51 +07:00
Tuan Pham Ngoc
e6a8f3ddb1
Add 4.3.0 release 2023-10-23 16:49:01 +07:00
Renovate Joomla Bot
7546a4867c
Lock file maintenance (master) (#508)
Co-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>
2023-08-22 09:57:54 +02:00
Robert Deutz
a928dd3a87
Merge pull request #524 from richard67/master-update-manifest-targetplatforms-2023-05-15
Update manifest for target platforms 4.3 and 4.4
2023-05-15 20:01:03 +02:00
Richard Fath
4c9df15e2f Add 5.0, too 2023-05-15 19:51:58 +02:00
Richard Fath
4f5c286cb3 Update manifest for target platforms 4.3 and 4.4 2023-05-15 19:32:02 +02:00
Hannes Papenberg
268d3d22e6
Update renovate.json 2022-09-20 22:16:28 +02:00
Tuan Pham Ngoc
36492e6133
Merge pull request #401 from kofaysi/master
Update to default.php: removed nowrap class to allow wrapping title and alias
2022-09-03 20:33:45 +07:00
Tuan Pham Ngoc
fd6cf51539
Merge pull request #387 from okonomiyaki3000/patch-1
Don't strip Time info
2022-09-03 20:31:40 +07:00
Tuan Pham Ngoc
e811a10547
Merge branch 'master' into patch-1 2022-09-03 20:30:53 +07:00
Roland Dalmulder
55200beae1
Merge pull request #510 from joomla-extensions/zero-24-patch-1
Claim 4.2 support for weblinks
2022-08-18 20:34:43 +02:00
Tobias Zulauf
25912ad928
Claim 4.2 support 2022-08-18 19:00:50 +02:00
Renovate Joomla Bot
f04e6372a6
Lock file maintenance (master) (#506)
Co-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>
2022-08-03 17:16:17 +02:00
Hannes Papenberg
cc49a14b5d
Update renovate.json 2022-08-03 16:25:53 +02:00
Renovate Joomla Bot
ecc9e19305
Configure Renovate (#504)
Co-authored-by: Renovate Bot <renovate@whitesourcesoftware.com>
2022-08-03 16:24:52 +02:00
David Jardin
d8504a9c9f
Merge pull request #502 from joomla-extensions/dependabot/composer/guzzlehttp/guzzle-6.5.8
Bump guzzlehttp/guzzle from 6.5.5 to 6.5.8
2022-06-22 08:09:48 +02:00
dependabot[bot]
098aa2f12f
Bump guzzlehttp/guzzle from 6.5.5 to 6.5.8
Bumps [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) from 6.5.5 to 6.5.8.
- [Release notes](https://github.com/guzzle/guzzle/releases)
- [Changelog](https://github.com/guzzle/guzzle/blob/6.5.8/CHANGELOG.md)
- [Commits](https://github.com/guzzle/guzzle/compare/6.5.5...6.5.8)

---
updated-dependencies:
- dependency-name: guzzlehttp/guzzle
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 20:45:03 +00:00
Hannes Papenberg
998e57afb5
Merge pull request #403 from Hackwar/patch-1 2022-04-21 10:41:49 +02:00
Hannes Papenberg
598942f96e
Travis has stopped serving us 2022-04-21 10:41:18 +02:00
Hannes Papenberg
accf06131c
Update README.md
Co-authored-by: Brian Teeman <brian@teeman.net>
2022-04-21 10:39:32 +02:00
Hannes Papenberg
b9d7f89266
Merge pull request #493 from Hackwar/master-composer 2022-04-21 10:22:50 +02:00
Hannes Papenberg
766dbaf26c
Merge pull request #442 from richard67/master-fix-references-to-cms-staging-branch
[3.x] Fix references to the CMS staging branch
2022-04-21 10:17:00 +02:00
Hannes Papenberg
4cb294d5f2 Updating composer dependencies 2022-04-21 09:55:13 +02:00
Tuan Pham Ngoc
fc2d0f4938
Merge pull request #484 from joomla-extensions/zero-24-patch-1
Weblinks is supported on J4.1 too right?
2022-02-17 12:27:39 +07:00
Tobias Zulauf
dd52c09c30
weblinks is supported on J4.1 too right? 2022-02-16 22:48:14 +01:00
Tuan Pham Ngoc
d48fb44e4f
Update manifest for 4.0.1 release 2021-11-22 14:41:20 +07:00
Tuan Pham Ngoc
680a44f8aa
Merge pull request #462 from joomdonation/master
Prepare manifest.xml for 3.9.0 and 4.0.0 releases
2021-09-20 11:12:37 +07:00
Tuan Pham Ngoc
68a1d385f5 Add sha512 hash for 3.9.0 package 2021-09-20 11:06:00 +07:00
Tuan Pham Ngoc
8cf588e57f Updated hash 2021-09-19 14:42:07 +07:00
Tuan Pham Ngoc
9ec36613e0 New sha512 2021-09-05 12:34:33 +07:00
Tuan Pham Ngoc
ecd90e0f1b Correct sha512 2021-09-05 11:36:55 +07:00
Tuan Pham Ngoc
c58a8e339d Prepare manifest for new releases 2021-09-05 11:19:39 +07:00
Tuan Pham Ngoc
5de3a59349
Merge pull request #461 from joomdonation/master
Update copyright format for master
2021-09-05 11:06:46 +07:00
Tuan Pham Ngoc
0da09499f9
Merge branch 'joomla-extensions:master' into master 2021-09-05 11:04:01 +07:00
chmst
35e84fbbcc Adapt copyright in com_weblinks to files in joomla core 2021-09-05 10:58:19 +07:00
Tuan Pham Ngoc
17fb02680e
Merge pull request #455 from joomdonation/master
CS
2021-08-29 12:36:14 +07:00
Tuan Pham Ngoc
06c13b6a72
Yes, thanks !
Co-authored-by: Quy <quy@fluxbb.org>
2021-08-28 23:32:12 +07:00
Tuan Pham Ngoc
d007d1d29d CS 2021-08-28 23:25:11 +07:00
Tuan Pham Ngoc
5ae2866c28
Merge pull request #454 from joomdonation/master
Add missing commits
2021-08-28 21:15:12 +07:00
Tuan Pham Ngoc
3883eafa37 Update version number 2021-08-28 20:35:09 +07:00
Tuan Pham Ngoc
f8ea546cfe Let's build script update version number 2021-08-28 17:01:14 +07:00
Tuan Pham Ngoc
c70b2f70b0 Prevent changing created_by if the current user is not allowed to access to com_users 2021-08-27 10:38:45 +07:00
Tuan Pham Ngoc
073d3c8b46
Merge pull request #452 from joomdonation/update_language_items
Update language items
2021-08-20 18:17:00 +07:00
Tuan Pham Ngoc
6d0f3cbbdb Update language items 2021-08-20 18:16:05 +07:00
Tuan Pham Ngoc
fc4267038c
Merge pull request #426 from infograf768/patch-4
Thanks @infograf768. This is useful for multilingual website and maintainers decided to merge it.
2021-08-18 17:58:22 +07:00
Tuan Pham Ngoc
b81f7c48e0
Merge pull request #389 from SharkyKZ/master
Don't hide filter form
2021-08-18 17:03:59 +07:00
Tuan Pham Ngoc
407b768344
Merge branch 'master' into master 2021-08-18 16:58:40 +07:00
Tuan Pham Ngoc
8ee3f1ba1a
Prevent warnings on PHP 8 2021-08-18 16:34:22 +07:00
Tuan Pham Ngoc
d1e941f581
Resolve conflicts 2021-08-18 16:05:20 +07:00
Tuan Pham Ngoc
d452972144
Merge pull request #385 from Paladin/patch-1
It's not hurt to add this field available for module output, so I'm merging this.
2021-08-18 15:47:43 +07:00
Tuan Pham Ngoc
427998ee0d
Merge pull request #434 from Harmageddon/patch-1
Fix PHP warnings
2021-08-18 15:40:46 +07:00
Tuan Pham Ngoc
620f535ceb
Improve show tags code 2021-08-18 15:36:02 +07:00
Tuan Pham Ngoc
40fec2bdfa
Better check 2021-08-18 14:39:15 +07:00
Tuan Pham Ngoc
d765eabdf6
Merge pull request #432 from ReLater/patch-2
mod_weblinks Warning: count(): Parameter must be an array
2021-08-18 14:31:47 +07:00
Tuan Pham Ngoc
95d0f86f1e
Return empty array on failure 2021-08-18 14:24:42 +07:00
Richard Fath
29ca3c8d52 Fix wrong default path in documentation 2021-08-15 16:49:31 +02:00
Richard Fath
d42f2227d7 Fix references to the CMS staging branch 2021-08-15 16:31:31 +02:00
Constantin Romankiewicz
84ec6b93e7
Fix PHP warnings
Similar to https://github.com/joomla/joomla-cms/pull/27273

Fixes #433.

This PR fixes PHP warnings for the weblinks category view.
2021-03-28 14:22:51 +02:00
ReLater
bfee41b26d
Return an array for count() 2021-02-17 15:27:23 +01:00
Maikol Fustes
dffe7c53c3
Fix for #427 (#428)
This fix removes the warning if no weblinks
2020-09-28 11:45:14 +01:00
infograf768
31964a86e9
Update view.html.php
Create the Associations Toolbar button to directly link to com_associations when editing a weblink
2020-08-02 12:07:00 +02:00
Brian Teeman
5ad08ed6e0 Update deprecated license … (#410)
The spdx have deprecated the short license identifier GPL-2.0+ and we should use GPL-2.0-or-later
https://spdx.org/licenses/
2019-09-16 15:08:17 +01:00
zero-24
51403b36b1 Fix: Inconsistent PHP minimum version (#412) 2019-09-16 15:08:01 +01:00
Harald Leithner
b304552f37 Release 3.7.0 to upgrade server (#414) 2019-09-16 15:06:47 +01:00
wilsonge
97a74f5b44
Hopefully fix source location 2019-09-12 10:30:31 +01:00
wilsonge
362c14774c
Fix depends_on step from previous commit 2019-09-12 10:18:46 +01:00
wilsonge
4dd89a35c7
Save artifacts on failure 2019-09-12 10:12:30 +01:00
wilsonge
855fcb03c1
Fix previous commit downgrading selenium 2019-09-12 10:00:55 +01:00
wilsonge
adc32eeb34
Downgrade selenium until it works with latest linux browser versions 2019-09-12 09:50:15 +01:00
wilsonge
f23e5402a7
Use non-deprecated renderField method 2019-08-17 12:54:15 +01:00
George Wilson
571d84bb7e
Merge pull request #406 from joomla-extensions/feature/drop-php55
Codeception Upgrade
2019-08-16 18:02:27 +01:00
George Wilson
821ca1f4eb
Merge branch 'master' into feature/drop-php55 2019-08-16 18:01:28 +01:00
wilsonge
4f08aee681
Update JORobo to latest version 2019-08-16 18:00:35 +01:00
Allon Moritz
f7519475f1 Make it joomla 4 compatible (#362) 2019-08-16 14:52:52 +01:00
wilsonge
22df3bff56
Proxy the kill selenium task to the library 2019-08-14 00:24:46 +01:00
David Jardin
20b335d918 Replace require_once call with Autoloader (#404)
Allows the usage of a custom IndexerAdapter class using a JLoader override
2019-08-13 23:46:59 +01:00
wilsonge
c477abd151
Different PHP requirements for dev vs stable 2019-08-13 21:01:37 +01:00
wilsonge
5aa2f2fde6
More intuitive names for traits 2019-08-13 20:58:00 +01:00
wilsonge
45062c9340
Fix tests locally 2019-08-13 20:55:08 +01:00
wilsonge
9124a2727d
Update everything else just cause why not 2019-08-13 20:53:50 +01:00
wilsonge
0249510c72
Remove deprecated call 2019-08-13 20:53:50 +01:00
wilsonge
b26c00c34d
Test dropping php 5.5 and upgrading latest codeception 2019-08-13 20:53:50 +01:00
Jelle Kok
3b155af6e9
codestyle + fix windows webdriver load 2019-08-13 04:18:48 +02:00
wilsonge
8712d4033a
Upgrade drone file to docker image + drone 1. Requires signature 2019-08-13 01:47:28 +01:00
wilsonge
0716d5e3e6
Fix code style errors in project 2019-08-13 00:15:35 +01:00
wilsonge
a96ef51de4
Update the Joomla Browser version to the latest version 2019-08-12 23:57:03 +01:00
wilsonge
68c634976f
Remove HHVM, add PHP 7.2, 7.3 2019-08-12 23:57:03 +01:00
wilsonge
df58b4c93c
Bump selenium driver version and firefox version used in php7 2019-08-12 23:57:03 +01:00
wilsonge
fed4615abd
Update testing robo + use setWebdriver method now exposed 2019-08-12 21:17:07 +01:00
wilsonge
5fbb9634da
Fix the strict standards issues by bumping base jrobo tasks version 2019-08-12 21:17:07 +01:00
wilsonge
683168e8e4
Fix reference to old selenium task 2019-08-12 21:17:07 +01:00
George Wilson
685435e87d
Rework xvfb
Following https://docs.travis-ci.com/user/gui-and-headless-browsers/#using-services as default travis moved to Xenial from trusty since they last passed
2019-08-12 21:17:07 +01:00
wilsonge
44b1683d18
Prepare for release version 3.7.0 2019-08-10 20:32:28 +01:00
wilsonge
98d9d21255
Prepare for release version 3.7.0 2019-08-10 20:30:19 +01:00
wilsonge
a012bc7b63
Update composer files and move to undeprecated jrobo 2019-08-10 20:27:27 +01:00
Hannes Papenberg
ea64e3777c
Improve README.md 2019-06-16 23:11:44 +02:00
kofaysi
b69a91491f
Update default.php
removed nowrap class from the table cell definition for the name and the alias of a weblink
2019-04-21 10:27:48 +02:00
Elijah Madden
802cff4ae8 Use correct database (#391)
Suppose you're not operating on the default Joomla database (the one returned by `JFactory::getDbo()`) but on another one entirely? In theory, it is possible. In that case, you will want this new table object to use the same DBO that `$this` is using. 

If you look at any similar table classes that are built in to Joomla, you will see this same kind of thing. So this is consistent with Joomla practices.
2019-03-15 12:24:27 +00:00
SharkyKZ
5f8f6cc0cc
Don't hide filter form 2018-06-07 11:17:08 +03:00
Elijah Madden
afa9df617b
Don't strip Time info
There is no need to strip the time info from the `created` column. This information might be useful in case of timezone differences or whatever. Let the formatting be done at the template level.
2018-04-10 11:30:08 +09:00
Arlen Walker
83c8202374
Add the category description
This will pick up the category description and make it available to the output of the module.

No effect on backwards compatibility, as it doesn't change what exists now, merely adds one more attribute.

Use Case: When you're choosing to output subcategories, it might be useful in some cases to have more than just the category name available. Output templates that don't need it can ignore it safely, but this makes it available for the templates that might want to use it.
2018-02-15 13:43:15 -06:00
Astrid
8574a4f3cf improvedtheBatchview (#375) 2018-02-12 23:57:58 +01:00
Astrid
84df598015 makeSameAliasPossibleForDifferentLanguages (#373) 2017-11-06 12:56:26 +01:00
Astrid
08e6da7006 addJoroboMapTaskToRoboFile (#374) 2017-11-06 12:55:24 +01:00
Astrid
ffc012d56a changedlanguagestringssothatimagefloatismoreconcrete (#376) 2017-11-06 12:54:06 +01:00
Astrid
9bc1752ca5 First imageignores image float setting366 (#378)
* usethesameclassforfloatingtheimageslikecomcontent

* addchangetosecondimage
2017-11-06 12:52:45 +01:00
Astrid
c9d4f57cea mapping of new media files was not correct (#372) 2017-11-06 12:52:05 +01:00
Astrid
bb7343450b
Merge pull request #370 from joomla-extensions/zero-24-patch-1
Delete jed_update.xml
2017-11-03 21:46:55 +01:00
Astrid
d0ff882375
Merge pull request #349 from infograf768/weblinks_assoc
Implementing full associations for single weblink
2017-11-03 21:46:26 +01:00
Astrid
50ee6f5a34
Merge pull request #317 from zero-24/custom_fields
[RFC] [3.7] Add basic custom fields support
2017-11-03 21:45:33 +01:00
zero-24
c9cae3de4e Delete jed_update.xml 2017-10-22 12:18:58 +02:00
Astrid
e69347e255 Update config.xml
deleted merge conflict hints.
2017-09-16 18:36:25 +02:00
zero-24
8b9ab398a9
Merge branch 'custom_fields' of github.com:/zero-24/weblinks into custom_fields 2017-09-13 19:04:44 +02:00
zero-24
6243927ffd
merge conflict 2017-09-13 19:03:30 +02:00
zero-24
e8a9d563af thanks @quy 2017-09-01 01:30:47 +02:00
zero-24
ef9e8f4198 thanks @quy 2017-09-01 01:29:47 +02:00
zero-24
84a5009952 thanks @quy 2017-09-01 01:29:16 +02:00
zero-24
1ad63abd54 thanks @quy 2017-09-01 01:28:39 +02:00
Brian Teeman
2ebe811b60 xml code-style (#363)
* xml code-style

* fixes

* oops
2017-08-31 19:56:12 +02:00
Brian Teeman
84a98f9718 typo (#358)
i made a pr to the cms as well
2017-08-16 22:23:50 +02:00
Michael Babker
06bc161692 Merge pull request #354 from joomla-extensions/use-downloads-site
Serve updates through the downloads site
2017-07-23 13:02:40 -05:00
Michael Babker
3cd419ff67 Serve updates through the downloads site 2017-06-14 21:55:03 -05:00
Jean-Marie Simonet
725464800f Correcting weblink frontend model to adapt to the new display 2017-06-10 08:33:20 +02:00
zero-24
58fa74a1a2 Update modal.php 2017-05-22 14:14:50 +02:00
zero-24
7e9269d993 Update weblink.php 2017-05-22 14:13:49 +02:00
infograf768
b6e084a828 deploy 2017-05-22 12:04:38 +02:00
infograf768
da554cbac7 Merge pull request #5 from zero-24/weblinks_assoc
fix some smal things
2017-05-22 12:01:44 +02:00
zero-24
9b30cedb4d fix some smal things 2017-05-21 18:59:44 +02:00
Jean-Marie Simonet
db0bfa95b9 small corrections 2017-05-20 08:28:21 +02:00
Jean-Marie Simonet
4f33935200 correcting date 2017-05-17 09:08:43 +02:00
Jean-Marie Simonet
3151bf9c8f Minifying js and adding xtd-editors web link 2017-05-17 09:06:21 +02:00
Jean-Marie Simonet
75684b9918 Changing comment 2017-05-16 17:55:36 +02:00
Jean-Marie Simonet
9b6e02a384 adding media in manifest 2017-05-16 17:50:43 +02:00
Jean-Marie Simonet
99f239c8a5 missing change 2017-05-16 08:42:34 +02:00
Jean-Marie Simonet
3389bf4902 IMplementing full associations 2017-05-16 08:03:22 +02:00
Jelle Kok
12498eb311 Update composer (#347) 2017-05-12 20:42:13 +02:00
zero-24
b68ab0f2bd Disable the buttons and just allow editor none for not authenticated users (#340) 2017-04-23 12:21:33 +02:00
Astrid
60557d4f88 Version number (#342)
* ->env(['env'])

* versionnumberJorobe
2017-04-22 13:54:00 +02:00
zero-24
02865f3574 using @link over @see (#339) 2017-04-21 19:25:47 +02:00
zero-24
c6eac62828 only support mod_stats and mod_stats_admin (#338)
* only support mod_stats and mod_stats_admin

* logic error
2017-04-21 19:24:27 +02:00
Brian Teeman
dd7c338448 travis/drone (#337)
Seperate Travis and drone from the title of the repo
2017-04-04 18:37:03 +02:00
zero-24
f30e456ee0 some more changes 2017-03-31 17:59:06 +02:00
zero-24
76ec0b8ca6 fix readme md file 2017-03-31 17:58:45 +02:00
Astrid
4c23724ddd Merge pull request #333 from zero-24/stats
Move weblinks stats to weblinks repo
2017-03-25 15:01:52 +01:00
zero-24
bf250e5a62 Update weblinks.xml 2017-03-25 14:15:51 +01:00
zero-24
300460adc8 Move lang files for search plugin (#334)
* Move search language files

* Add postflight script to remove old language files

* Update script.php

* remove the useless scriptphp
2017-03-25 12:25:31 +01:00
zero-24
6b6926d0ab Update JED file (even if it don't work) (#335)
* Update JED file (even if it don't work)

* Update jed_update.xml
2017-03-25 12:23:55 +01:00
zero-24
efc3e398d6 apply changes 2017-03-24 12:51:56 +01:00
Astrid
41c8206509 Merge pull request #332 from joomla-extensions/revert-325-frontend_view_single_weblink
Revert "Frontend view single weblink"
2017-03-24 12:17:32 +01:00
Astrid
26cec36c12 Revert "Frontend view single weblink" 2017-03-24 11:53:09 +01:00
Astrid
3a32a86772 Merge pull request #325 from astridx/frontend_view_single_weblink
Frontend view single weblink
2017-03-24 11:51:31 +01:00
Astrid
d463447043 correction in Composer.json (#321) 2017-03-24 04:12:57 +01:00
Astrid
107a3f1a92 correction in Composer.json (#322) 2017-03-24 04:12:19 +01:00
Astrid
bd2e3360d6 New Syntax for setting the env variable in Robofile #324 2017-03-24 04:11:54 +01:00
Brian Teeman
7e832b98c5 Correct PR #315 (#330)
Corrects PR #315 which changed ID to id

The style guide says it should have been ID

It was wrong in the joomla-cms repo and has been corrected to ID there
2017-03-23 23:09:44 +01:00
Astrid
0f911271bf Xmlcs (#329)
* first xml review

* fix the other xmls too

* add frontend component

* add missing tabs

* add missing tabs
2017-03-22 10:47:54 +01:00
infograf768
698928a287 Update associations.php (#328)
This correction is similar to what was merged in core:
See https://github.com/joomla/joomla-cms/pull/14646
2017-03-16 12:26:26 +01:00
Astrid
3df6255489 Merge pull request #319 from zero-24/xmlcs_others
Review XML CS for the XML files in the module + plugin
I applied the patch and I changed some options in web links component and search weblinks plugin. All changes are correcly saved. So I am brave and merge :)
2017-03-12 23:05:17 +01:00
astridx
f1f0fffb1c correced __DEPLOY_VERSION__ 2017-03-12 22:50:26 +01:00
zero-24
506513ae37 Add some doku about install weblinks (#327) 2017-03-12 22:02:21 +01:00
infograf768
23e07f6cae Create associations.php helper to let weblinks be used into com_associations (#294)
* Create associations.php

This should be merged after the new com_associations gets in core
https://github.com/joomla/joomla-cms/pull/13537

* some CS fixes
2017-03-12 14:56:34 +01:00
Nicola Galgano
9e56646abc Add count and link to tagged items (#298)
* Add count and link to tagged items

[com_tags] - Add count and link to tagged items #10895

* added lang strings

added lang strings

* just added some spaces in the new code
2017-03-12 13:52:04 +01:00
Frank Mayer
4b7480f54a Replace deprecated isSite() (#286) 2017-03-12 13:31:42 +01:00
Thomas Hunziker
e54849f018 UseGlobal or list fields (#278) 2017-03-12 13:25:07 +01:00
andrepereiradasilva
0d5021838e use the new languages layout (#279) 2017-03-12 13:13:01 +01:00
astridx
5bb713b157 add the forgotton <a href> 2017-03-10 22:22:00 +01:00
Astrid
1d4988a25b Merge pull request #326 from yvesh/bumpversion36
Bumping version in manifest and jorobo config file to match 3.6.0 release
2017-03-08 21:53:41 +01:00
Yves Hoppe
25bfe2a92e
Bumping version in manifest and jorobo build file to match 3.6.0 release 2017-03-08 21:42:03 +01:00
astridx
cc7df89721 correciton 2017-03-05 20:01:56 +01:00
astridx
b0178665d2 frontend view 2017-03-05 17:46:13 +01:00
zero-24
0f4632baea Merge branch 'master' into xmlcs_others 2017-03-04 19:41:57 +01:00
Yves Hoppe
b9b7d20ec0 Remove the link target frrom the module as it is set in the weblink (#320) 2017-03-04 19:40:54 +01:00
zero-24
d4a03c2d55 default should be off 2017-02-25 13:04:33 +01:00
zero-24
7a0c15a453 module and plugin xmls 2017-02-25 12:18:06 +01:00
zero-24
95bd6c9c2e cs 2017-02-25 11:52:36 +01:00
zero-24
f7691ed50d first step for custom_fields 2017-02-25 11:42:25 +01:00
zero-24
b01cde83c1 ID vs. id (#315) 2017-02-18 00:19:41 +01:00
zero-24
3f1a5e3a8d some missing copy updates to 2017 (#314) 2017-02-16 20:05:09 +01:00
Yves Hoppe
3f29687165 Update manifest.xml beta channel and jorobo.dist.ini version to 3.6.0-rc1 (#313)
* Bumped version to dist version to 3.6.0-rc1

* Bumped version to 3.6.0-rc1

* rc not beta
2017-02-16 19:49:42 +01:00
zero-24
df8d9da962 Add drone badage to readme.md (#310) 2017-02-15 12:05:52 +01:00
zero-24
9f56672c35 Delete script.php 2017-02-13 20:42:23 +01:00
zero-24
1463cd26df Merge branch 'master' of github.com:joomla-extensions/weblinks 2017-02-13 20:41:21 +01:00
zero-24
29f652a452 move the script.php 2017-02-13 20:40:51 +01:00
zero-24
6c67d8a9fd make travis happy
```
FILE: ...mla-extensions/weblinks/src/administrator/manifests/packages/script.php
--------------------------------------------------------------------------------
FOUND 1 ERROR(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
 22 
 ERROR
Constructor and destructor comments must not have a @return tag -------------------------------------------------------------------------------- UPGRADE TO PHP_CODESNIFFER 2.0 TO FIX ERRORS AUTOMATICALLY
```
2017-02-13 20:34:47 +01:00
zero-24
ef4415edf1 Script PHP (#306)
* add scriptphp

* add script PHP with warning about a not supported version

* add script PHP with warning about a not supported version

* remove debug

* add script PHP with warning about a not supported version
2017-02-13 20:21:37 +01:00
zero-24
67cfd94d3e Merge pull request #303 from yvesh/removeduplicatemanifest
Remove the duplicate manifest file in the src folder
2017-02-13 18:53:51 +01:00
Yves Hoppe
44b155f700 Remove the duplicate manifest file in the src folder 2017-02-13 17:45:34 +01:00
zero-24
566d2a8350 Sync issue and PR tempaltes (#302)
* Update ISSUE_TEMPLATE.md

* Update PULL_REQUEST_TEMPLATE.md
2017-02-13 17:43:29 +01:00
zero-24
d06e41c17c This is going to be 3.6 and not 3.0 (#301) 2017-02-13 17:41:59 +01:00
zero-24
e6c0db6275 Merge pull request #300 from yvesh/headerupdate
Copyright header update to 2017
2017-02-13 17:23:19 +01:00
Yves Hoppe
516252c286 Copyright header update to 2017 2017-02-13 17:20:35 +01:00
Astrid
ced791e351 Read me (#295)
* myInstallation

* myInstallation

* corrections

* corrections

* corrections

* corrections
2017-02-13 17:16:20 +01:00
andrepereiradasilva
5178381b51 Add an exception when not allowed (#262) 2017-02-13 17:05:26 +01:00
zero-24
d4cdc056bb Merge pull request #297 from yvesh/bumpversion
Added bump version task to RoboFile.php
2017-02-13 17:00:54 +01:00
Astrid
2ed39bcc36 codestyle (#293)
* codestyle

* Update weblink.xml
2017-02-13 17:00:43 +01:00
Robert Deutz
155a17cf08 Merge pull request #296 from yvesh/phpcsfix
Fix PHP Codesniffer path for Travis
2017-02-08 15:55:34 +01:00
Yves Hoppe
5f461d7a37 Added bump version task to RoboFile.php 2017-01-14 11:22:05 +01:00
Yves Hoppe
a6fe011d05 Fix php codesniffer path for Travis 2017-01-14 09:16:31 +01:00
Astrid
572eebbfc4 Update to selenium_v3.0.1.2 (#291)
* Update selenium to v3.0.1.2
* Code style
* JoomlaBrowser to v3.6.5.1
2017-01-12 21:22:50 +01:00
chrisdavenport
e6a50f1fdb Missed the year 2017-01-02 09:43:22 +00:00
chrisdavenport
c0d7a9407f Use substitution codes in XML file 2017-01-02 01:23:02 +00:00
chrisdavenport
6caa06509b Set version number 2017-01-01 22:36:14 +00:00
chrisdavenport
0e5dc69bc1 Use JRoute instead 2016-12-31 22:15:43 +00:00
andrepereiradasilva
bf25b8e764 cs just remove extra line (#289) 2016-12-31 19:51:24 +00:00
chrisdavenport
b7a90bad2c Add link as separate entry in array 2016-12-29 23:48:23 +00:00
chrisdavenport
896efa4a6a Remove link from language file 2016-12-29 00:34:45 +00:00
chrisdavenport
5bbbf6904d Move weblinks stats to weblinks repo 2016-12-28 16:50:29 +00:00
Tito Alvarez
3037c4007f * Updated Jorobo and Joomla Projects Robo dependencies for package release and testing (#287)
* Standardised testing Joomla folder name
2016-12-14 19:08:42 +01:00
Chris Davenport
1431b671d5 Merge language string changes from CMS (#285)
* Fix for failing code style tests

* Changed spacing again and ran the script this time

* Merge language string changes from CMS
2016-12-06 21:39:28 +01:00
Twincarb
ba775ea531 Remove an extra ) (#284)
I have a site which provided me with an error 500 code. On looking in the server logs it pointed to an extra ) on row 33 which is now on row 34 in the staging version.

Testing:
Code Review 
Check it still shows correctly.
2016-12-04 14:39:38 +00:00
Chris Davenport
bb4b0bfb46 Fix for failing code style tests (#283)
* Fix for failing code style tests

* Changed spacing again and ran the script this time
2016-12-01 08:21:47 +01:00
Walt Sorensen
f44c951a86 Add php 7.1 and hhvm (#281)
* add php 7.1 and hhvm

* too many spaces for allow fail

* Someone made it so you have to run on slow sudo

* php 7.0-7.1 not allowed to fail
2016-11-30 17:47:00 +01:00
chrisdavenport
6f83dbc6f4 Missing beta tag 2016-11-28 23:40:12 +00:00
chrisdavenport
3cf373b43c Release 3.6.0-beta 2016-11-28 22:13:39 +00:00
Chris Davenport
489cc73c99 Add headers task to Robo (#274)
Looks good, thank you @chrisdavenport 

If we ever have time (probably at the code sprint, added it to the todo-list), we should move the file existing check to the constructor.. We need that for every task 👍
2016-10-23 00:08:16 +02:00
Nicola Galgano
143fef691b Create Categories on-the-fly on Link edit form (#252)
* Create Categories on-the-fly on Weblink edit form

Create Categories on-the-fly on Weblink edit form (1/3)

* Create Categories on-the-fly on Weblink edit form 

Create Categories on-the-fly on Weblink edit form (2/3)

* Create Categories on-the-fly on Weblink edit form 

Create Categories on-the-fly on Weblink edit form (3/3

* CS fix

CS fix

* Update weblink.xml

* Update weblink.php

* Update weblink.php

* one space

one space as suggested
2016-10-21 00:31:25 +01:00
zero-24
3548e9f9e0 Implement the JED update.xml (#268)
* add jed_update.xml

* get rid of the wrong method
2016-10-18 17:21:48 +01:00
Daniel Dimitrov
ab6125be50 ~ changes to the way we deal with curl insecure on windows (#163) 2016-10-15 15:47:47 +02:00
Niels Nübel
ede97061b7 fix Typo (#270) 2016-10-15 15:45:10 +02:00
zero-24
f158889d94 Component delivers 303 status code instead of 301 (#272) 2016-10-15 15:44:28 +02:00
Jelle Kok
6eb07c1e40 Enable cache for vendor folder #265 2016-09-01 20:20:05 +02:00
Yves Hoppe
b1b7ff4325 moving cache to top of yml file 2016-08-26 12:38:48 +02:00
Yves Hoppe
ca12a1baee moving cache to top of yml file 2016-08-26 12:33:11 +02:00
Yves Hoppe
e495804688 testing if vendor folder is mounted 2016-08-26 11:39:04 +02:00
Yves Hoppe
3322e761b5 Moved composer install to the top so caching can work 2016-08-26 10:53:53 +02:00
Yves Hoppe
9a754e4484 Merge remote-tracking branch 'upstream/master' into dronecache 2016-08-26 10:52:04 +02:00
javier gomez
e76489b19c Merge pull request #266 from yvesh/composerupdate20160824
Updated composer.json and composer.lock
2016-08-26 10:16:45 +02:00
Yves Hoppe
3042a7e918 Updated composer.json and composer.lock to latest versions 2016-08-24 20:05:07 +02:00
Yves Hoppe
d58e03e3d2 Merge remote-tracking branch 'upstream/master' into dronecache 2016-08-24 19:47:22 +02:00
javier gomez
41cebd1b24 Add sleep time to allow fluxbox and Xvfb launch on Drone.io (#263)
* pipe the output of fluxbox to /dev/null like we do with xvfb
2016-08-24 19:43:45 +02:00
Yves Hoppe
5241470c5e Enable cache for vendor folder 2016-08-24 19:37:44 +02:00
Yves Hoppe
3f6f2396cd Drone.io integration for Weblinks (#260)
* Started integration of drone.io scripts

* Started integration of drone.io scripts

* Started integration of drone.io scripts

* Removed curl testing

* Skipping frontend tests for drone

* Skipping frontend tests for drone

* Updated scenario skip comment and removed time from .drone.yml
2016-08-24 19:17:27 +02:00
Puneet Kala
f470766616 Merge pull request #258 from yvesh/travishosts
Forcing 127.0.0.1 for /etc/hosts in travis
2016-08-15 17:46:46 +05:30
Yves Hoppe
c15fd94d46 Forcing 127.0.0.1 for /etc/hosts in travis 2016-08-15 13:52:01 +02:00
Robert Deutz
97d3c26513 Merge pull request #228 from chrisdavenport/showon-groupby
Add showon behaviour to group by subcategory config fields.
2016-08-15 08:14:59 +02:00
Robert Deutz
64a377e570 Merge pull request #255 from andrepereiradasilva/acl-edit-own
[com_weblinks] Make ACL core.edit.own work (PR for 11466)
2016-08-15 08:14:36 +02:00
andrepereiradasilva
cfd842f5e4 missing comma 2016-08-07 09:22:04 +01:00
andrepereiradasilva
0af9354e1e correct variable 2016-08-07 08:24:33 +01:00
andrepereiradasilva
70012793dc fix conflicts final 2016-08-07 02:17:04 +01:00
andrepereiradasilva
ed336b0466 Merge remote-tracking branch 'refs/remotes/joomla-extensions/master' into acl-edit-own 2016-08-07 02:16:42 +01:00
andrepereiradasilva
50f6900439 fix conflicts 1 2016-08-07 02:16:40 +01:00
andrepereiradasilva
2b3ec8fdb3 correct core.edit.own 2016-08-07 02:08:21 +01:00
zero-24
8ef77771e7 Add patchtester description to README.md
* Update README.md
2016-08-05 13:17:35 +02:00
Puneet Kala
42fdd5b4cc Merge pull request #227 from yvesh/phpcs
Running phpcs check with travis on php 5.6
2016-08-02 21:51:00 +05:30
Yves Hoppe
c4a202ade1 Merge remote-tracking branch 'upstream/master' into phpcs 2016-08-02 16:28:14 +02:00
zero-24
8416e19d63 CodeStyle in doc comments
```
FILE: ...oomla-extensions/weblinks/src/components/com_weblinks/helpers/route.php
--------------------------------------------------------------------------------
FOUND 1 ERROR(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
 183 | ERROR | Missing comment for param "$needles" at position 1
--------------------------------------------------------------------------------
UPGRADE TO PHP_CODESNIFFER 2.0 TO FIX ERRORS AUTOMATICALLY
--------------------------------------------------------------------------------
```

hopfully the last on to go with: https://github.com/joomla-extensions/weblinks/pull/227
2016-08-02 14:33:26 +02:00
Yves Hoppe
b97d472f8f Merge remote-tracking branch 'upstream/master' into phpcs 2016-08-01 19:50:42 +02:00
zero-24
4332a3d7b4 CodeStyle again 2016-08-01 19:47:09 +02:00
Yves Hoppe
0d11295440 Merge remote-tracking branch 'upstream/master' into phpcs 2016-08-01 19:26:17 +02:00
Jelle Kok
d09319ad78 Merge pull request #249 from joomla-extensions/php72
Add PHP7 Check Travis
2016-07-31 13:30:06 +02:00
Tito Alvarez
fc32eea69e Improved Travis system tests including multiple PHP versions and PHP 7 support
* Added PHP 7 support
* Improved test system including multiple PHP versions
* Removed unused php extensions
* Improved Travis script readability
2016-07-31 09:33:59 +02:00
Yves Hoppe
778a84e568 Merge remote-tracking branch 'upstream/master' into phpcs 2016-07-30 19:32:37 +02:00
andrepereiradasilva
afa26265d8 use JLoader (#247) 2016-07-28 21:17:26 +01:00
Jelle Kok
a258f6aa61 Update firefox and remove failure php 7 2016-07-27 23:22:42 +02:00
Jelle Kok
bbef568eb8 Add PHP7 Check Travis 2016-07-27 23:19:52 +02:00
Yves Hoppe
00ddf5b2e6 Changing collation to utf8mb4 (#226)
* Changing collation to utf8mb4

* Increased Joomla version requirement
2016-07-27 20:37:46 +01:00
RolandD
93f8892458 Merge pull request #242 from wderuijter/patch-1
Get the correct target param from the item
2016-07-26 07:46:11 +02:00
Puneet Kala
aa0a41abe7 Merge pull request #245 from yvesh/ordering
Fixed ordering of available tabs in acceptance tests for new staging
2016-07-19 22:04:20 +05:30
Yves Hoppe
4123437d72 Fixed ordering of available tabs in acceptance tests for new staging 2016-07-18 22:18:53 +02:00
Wim de Ruijter
5a8135fc3c Changed it at both locations 2016-07-18 21:30:17 +02:00
zero-24
353300bc2f Fix CS for com_weblinks frontend models (#229)
* Update category.php

* Update weblink.php

* Update form.php

* Update categories.php

* Update category.php

* Update categories.php
2016-07-08 19:55:07 +01:00
Wim de Ruijter
3fc4d984d1 Get the correct target param from the item
Get the correct target param from the item instead of the component target param
2016-07-08 08:08:25 +02:00
javier gomez
c2b4bd1dc7 Temporarilly skip smart search tests
Thank you @javigomez - Travis working again
2016-07-07 10:37:55 +02:00
javier gomez
e4a0b0fc41 Merge pull request #238 from yvesh/composer-selenium
Updated selenium-server-standalone to v2.53.1
2016-07-07 10:02:41 +02:00
Yves Hoppe
74b200a632 Updated the contribution / release guide from Phing to JoRobo (#224) 2016-07-04 22:56:22 +01:00
Nicola Galgano
1680ec7b49 Allow captcha when submit a webllink (#223)
* allow captcha  on submit web link

allow captcha  on submit web link (1/5)

* allow captcha  on submit web link

allow captcha  on submit web link (2/5)

* allow captcha  on submit web link

allow captcha  on submit web link (3/5)

* allow captcha  on submit web link

allow captcha  on submit web link (4/5)

* allow captcha  on submit web link

allow captcha  on submit web link (5/5)

* CS fix

CS fix

* XML CS for https://github.com/joomla-extensions/weblinks/pull/223

Simple XML CS https://github.com/joomla-extensions/weblinks/pull/223

* update captcha message

update captcha message like com_user, com_contatct #10931

* handle session data

handle session data 1(/2)

* handle session data

handle session data (2/2)

* move buttons down

move buttons down

* fix conflicts with #231

fix conflicts with #231

* fix conflicts with #231 

fix conflicts with #231
2016-07-04 22:32:27 +01:00
Yves Hoppe
ddfa026180 Updated selenium-server-standalone to v2.53.1 2016-07-04 20:17:33 +02:00
zero-24
77d2b1fbf9 View and router frontend CS (#231)
* Update view.html.php

* Update default_items.php

* Update default.php

* Update view.html.php

* Update edit.php

* Update router.php

* Update router.php

* Update default_items.php

* Update view.html.php

* Update view.html.php
2016-07-03 11:07:25 +01:00
zero-24
8688bfd9cc Update view.html.php (#234)
* Update view.html.php

* Update edit_params.php

* Update view.html.php

* Update default.php

* Update view.html.php

* Update view.html.php
2016-07-03 11:04:21 +01:00
zero-24
276c32922e Fix CS for com_weblinks frontend helpers and global controler file (#230)
* Update route.php

* Update icon.php

* Update controller.php

* Update route.php
2016-07-02 12:02:00 +01:00
zero-24
1fd0653eb6 Update script.php (#233) 2016-06-28 22:08:56 +01:00
zero-24
5270b206cc Fix Cs for weblinks backend (#232)
* Update weblinks.php

* Update weblink.php

* Update controller.php
2016-06-28 22:05:31 +01:00
andrepereiradasilva
258f337d59 Implements searchtools, filters, dropdown actions and counting (#208)
* implements searchtools, filters and merge the other two PR

* just to force travis to run

* revert

* filter is published

* filter is published 2

* modify filter test thanks to yvesh

* code style

* elseif , not else if
2016-06-28 10:45:18 +01:00
Chris Davenport
40f0b35013 Add showon behaviour to group by subcategory config fields. 2016-06-28 10:23:20 +01:00
Emanuele Reggi
cff91ba244 Group by subcategories on mod_weblinks (#38)
* Group by subcategories on mod_weblinks

* BUGFIX: added missing 1-column option.

* GroupBySubcategories turned Off by default.

* Improved readability of inline php statements.
2016-06-28 09:59:52 +01:00
Yves Hoppe
d353ec9833 Running phpcs check with travis on php 5.6 2016-06-27 21:55:16 +02:00
Yves Hoppe
7faa44cdb8 Updated jorobo.dist.ini for JoRobo version 0.4 (#225)
Merged on review.  Thanks @yvesh
2016-06-26 20:48:32 +01:00
zero-24
0af518e0f3 JArrayHelper => ArrayHelper (#221)
* cs and arrayhelper

* cs and arrayhelper
2016-06-25 22:23:16 +01:00
zero-24
3514f29bda Support issue templates and move contributing (#222)
* support issue templates and move contributing

* support issue templates and move contributing
2016-06-25 22:22:04 +01:00
Prital Patel
a3f6281bd4 [fix #212] Weblink created date not showed on Search view (#219)
Simple fix.  Two successful tests.  Thanks @pritalpatel
2016-06-25 22:09:37 +01:00
Bear
8b6db18948 issue #8891 fixed typo s/$cachable/$cacheable (#179)
Thanks @N6REJ
2016-06-25 21:51:02 +01:00
bf118c40df Fix if 'git' instead of 'git.exe' as command is used on windows (#168) 2016-06-25 21:44:10 +01:00
andrepereiradasilva
d840a7f50b Convert remaining "Weblinks" text to "Web Links" (#210)
* "Weblink" to "Web Link" (frontend module)

* "Weblink" to "Web Link" (package language)

* update site name

* admin language

* admin language 2

* missing this one

* change text also in tests

* forgot one

* change frontend tests too
2016-06-25 21:10:22 +01:00
Puneet Kala
778d7aa96b Merge pull request #220 from javigomez/smartSearch
Tests for Smart search
2016-06-22 19:10:12 +05:30
javier gomez
5bc5e45624 Fix delete message 2016-06-22 15:02:33 +02:00
javier gomez
4ee799c41c Merge remote-tracking branch 'origin/master' into pr/217 2016-06-22 14:56:08 +02:00
javier gomez
9fb8d3e6fb Update Smart search tests 2016-06-22 14:55:45 +02:00
Jelle Kok
d2ae0fb830 Update Composer (#218)
Update Composer. Add Gherkin. Update new version codeception 2.2.1. Update jorobo.  Merged on review.
2016-06-09 17:34:47 +01:00
chrisdavenport
55f2b835ec Improvements suggested by @pritalpatel. Thanks Prital. 2016-06-04 23:19:17 +01:00
chrisdavenport
b9b95daccc Reduce the iframe wait time. 2016-05-31 09:26:32 +01:00
chrisdavenport
9116cae63d First simple attempt at Smart Search test. 2016-05-30 20:12:33 +01:00
George Wilson
2b636f5427 Merge pull request #215 from joomla-extensions/ff46
Update firefox version
2016-05-24 11:29:07 +02:00
George Wilson
a44cb31365 Merge pull request #216 from joomla-extensions/php7
Php7 Support
2016-05-24 11:28:56 +02:00
Jelle Kok
3d6cfeef14 Php7 Support 2016-05-21 21:55:51 +02:00
Jelle Kok
c8108bc9eb Update firefox version 2016-05-21 17:54:07 +02:00
Jelle Kok
9c93c7f3ca Merge pull request #214 from javigomez/360jb 2016-05-21 16:46:17 +02:00
javier gomez
dca5255169 Update Joomla Browser to J3.6. 2016-05-21 15:58:56 +02:00
javier gomez
36c813e759 Merge pull request #205 from yvesh/master
Update default jorobo.dist.ini build version to 3.5.0
2016-05-02 19:55:45 +02:00
Yves Hoppe
625ac8316f Added php 5.5.33 as preferred php platform to composer.json 2016-05-01 21:52:42 +02:00
Yves Hoppe
1ba516bc9f Upaded composer.json joomla-browser to latest version for travis 2016-04-27 14:53:32 +02:00
Yves Hoppe
af78c83357 Merge remote-tracking branch 'upstream/master' 2016-04-27 14:48:36 +02:00
Puneet Kala
51a9d7f7ca Merge pull request #176 from andrepereiradasilva/ux-language
Adds language flags to weblinks listing tables
2016-04-27 00:18:18 +05:30
Yves Hoppe
7298ebe146 Updated defaut jorobo.dist.ini build version to 3.5.0 2016-04-23 17:45:36 +02:00
Viktor Vogel
681ae25b3d Merge pull request #203 from yvesh/master
Updated manifest.xml to weblinks 3.5.0
2016-03-22 20:19:21 +01:00
Yves Hoppe
2fb0d78ebb Updated manifest.xml to weblinks 3.5.0 2016-03-22 20:17:16 +01:00
Viktor Vogel
25ca0879d9 Merge pull request #201 from andrepereiradasilva/patch-1
2015 to 2016 and remove extra tab
2016-03-22 19:39:16 +01:00
andrepereiradasilva
38d6fb0ec4 Update pkg_weblinks.xml 2016-03-18 18:10:15 +00:00
andrepereiradasilva
777a17f397 adapt to latest JoRobo version 2016-03-18 14:37:33 +00:00
andrepereiradasilva
24647f6e0e 2015 to 2016 and remove extra tab 2016-03-18 13:58:34 +00:00
George Wilson
ae8e62c1bc Add missing not-null properties 2016-03-18 01:10:45 +00:00
George Wilson
8585bd5300 Merge pull request #200 from yvesh/master
Update to JoRobo 0.3.0
2016-03-17 14:24:55 +00:00
Yves Hoppe
9a1b7bb893 Updated to JoRobo 0.3.0 2016-03-15 07:55:13 +01:00
Robert Deutz
c279ea86a2 Added manifestfile in manifest folder
File must be copied because we have two versions of jorobo with different expectations where the file is located. If we udpate to jorobo > 0.2 then we delete the one in src

https://github.com/joomla-projects/jorobo/pull/13
2016-03-14 15:57:30 +01:00
Michael Babker
9128775f35 Remove Phing scripts, they're broken anyway 2016-03-03 10:14:56 -05:00
Michael Babker
93de9a852e Package extension language files install in the frontend 2016-03-03 10:12:26 -05:00
javier gomez
2f8341a00b Merge pull request #190 from yvesh/unit_tests
Adding possibilty to run unit tests for com_weblinks with robo and codeception
2016-02-29 12:17:44 +01:00
javier gomez
3499cabd8d Update composer 2016-02-29 11:12:21 +01:00
Yves Hoppe
74d113ea70 Adding possibilty to run unit tests for com_weblinks with robo and codeception 2016-02-24 20:19:57 +01:00
Yves Hoppe
74852b9e18 Adding possibilty to run unit tests for com_weblinks with robo and codeception 2016-02-24 20:15:38 +01:00
javier gomez
82da7785a3 Merge pull request #189 from pritalpatel/updateSelenium
Update selenium version to 2.52.0
2016-02-17 11:34:54 +01:00
Prital Patel
6f215297f2 Merge pull request #1 from javigomez/updateSeleniumPrital
Update selenium prital
2016-02-17 15:51:48 +05:30
javier gomez
00448623c1 Update Firefox to latest 44.0.2 2016-02-17 10:54:15 +01:00
javier gomez
7cfc901fc1 Merge remote-tracking branch 'origin/master' into pr/189
# Conflicts:
#	composer.json
2016-02-17 10:54:00 +01:00
javier gomez
f98b43d789 Merge pull request #188 from javigomez/JB3_4_8v2andSelenium2_51_0
[tests] Update Selenium and JoomlaBrowser
2016-02-17 10:50:39 +01:00
Prital Patel
8e03b129a0 update selenium version 2016-02-16 22:13:29 +05:30
javier gomez
b575a7a346 [tests] Force Travis to use latest Firefox 2016-02-09 11:18:46 +01:00
javier gomez
47af24cdb4 [tests] Update JoomlaBrowser to 3.4.8 v2 2016-02-09 11:11:17 +01:00
javier gomez
fde1d3618c [tests] avoid false positives in Frontend Weblinks Test 2016-02-09 11:10:55 +01:00
javier gomez
789f5ca534 [tests] fix issue counting hits in tests 2016-02-08 20:12:39 +01:00
javier gomez
6de0dcdb7a Update to latest Selenium 2016-02-08 18:15:19 +01:00
javier gomez
fe3962bd23 Run tests on specific JoomlaBrowser version v3.4.8.1
clean version of #187
2016-02-08 18:03:21 +01:00
javier gomez
94dbf20963 Merge pull request #185 from javigomez/disablestats
[tests] Disable statistics for tests
2016-02-08 16:20:23 +01:00
javier gomez
7bfa0200f1 Merge branch 'master' into pr/185 2016-02-03 13:29:00 +01:00
javier gomez
80695d0ce3 Merge pull request #184 from infograf768/patch-1
Adding Alert when deleting weblinks.
2016-02-03 13:27:58 +01:00
infograf768
ce4e1bae4e Merge pull request #3 from javigomez/updatedJM
Updated to new JoRobo requirements and add a acceptPopup to weblinks removal
2016-02-01 16:09:15 +01:00
javier gomez
a26ee4a552 [tests] add accept popup when removing a weblink 2016-02-01 13:37:11 +01:00
javier gomez
74ce09dda3 [tests] rename jbuild to jorobo 2016-02-01 13:36:56 +01:00
javier gomez
6234b9bc8c [tests] Disable statistics for tests 2016-02-01 11:50:38 +01:00
infograf768
3214782cf1 Merge pull request #2 from javigomez/updateJorobp
[tests] Update joRobo subproject
2016-02-01 11:47:28 +01:00
javier gomez
56807170f4 [tests] update JoRobo
See: #183
2016-02-01 11:42:56 +01:00
javier gomez
4730e9a15a Merge remote-tracking branch 'origin/master' 2016-02-01 11:42:16 +01:00
infograf768
23dcb2a748 Merge pull request #1 from javigomez/fixtest
[tests] update categories test to accept popup on delete
2016-02-01 10:43:31 +01:00
javier gomez
b4482e166c Merge pull request #183 from yvesh/master
Updated JoRobo namespace in RoboFile
2016-02-01 10:36:31 +01:00
javier gomez
9a3bd0c904 [tests] update categories test to accept popup on delete 2016-02-01 10:26:25 +01:00
infograf768
4838aa668a Adding Alert when deleting weblinks.
Similar to https://github.com/joomla/joomla-cms/pull/8995 implemented in core.
2016-01-28 08:08:09 +01:00
Yves Hoppe
8404915409 Updated JoRobo namespace in RoboFile 2016-01-23 17:35:12 +01:00
andrepereiradasilva
4596d0c77a Sincronize com_weblinks with PR https://github.com/joomla/joomla-cms/pull/8815 2016-01-02 15:12:59 +00:00
George Wilson
6cd0429107 Merge pull request #174 from alikon/patch-3
PHP 7 error when save a weblink
2015-12-06 15:15:52 +00:00
Nicola Galgano
8f464fc91b PHP 7 error when save a weblink
the model fix
2015-12-06 08:43:17 +01:00
Nicola Galgano
c9ab22cdf0 PHP 7 error when save a weblink
Fatal error: Cannot use Joomla\String\String as String because 'String' is a special class name
2015-12-06 08:34:41 +01:00
Robert Deutz
52daec90df Merge pull request #171 from Bakual/Bakual-patch-1
Allow Weblinks to be updated in Joomla 3.5
2015-11-19 14:22:57 +01:00
Thomas Hunziker
352b17a3f8 Improving the targetplatform
Thanks for the hint @zero-24
2015-11-18 23:16:40 +01:00
Thomas Hunziker
5a5f2b3f73 Allow Weblinks to be updated in Joomla 3.5 2015-11-18 23:08:45 +01:00
javier gomez
f1de317317 Merge pull request #164 from javigomez/158
Add environments for different resolutions
2015-11-04 12:52:28 +01:00
javier gomez
44be385447 Merge remote-tracking branch 'origin/master' into pr/158
# Conflicts:
#	tests/acceptance.suite.dist.yml
2015-11-04 11:48:14 +01:00
javier gomez
63313389ce Merge pull request #162 from yvesh/master
Fixed caching issue with folder not deleted before new clone
2015-11-04 10:23:22 +01:00
Yves Hoppe
73230a4543 Fixed caching issue with folder not deleted before new clone 2015-11-02 12:11:36 +01:00
Viktor Vogel
7c13b8f488 Merge pull request #149 from yvesh/packagebuilding
Integrated robo build system - clean merge of #125
2015-11-02 11:43:13 +01:00
Yves Hoppe
c07f0d03b7 Added default timezone 2015-11-02 11:22:39 +01:00
Yves Hoppe
352e063196 Updated lock file 2015-11-02 11:07:04 +01:00
Yves Hoppe
4bd9ce6fec Merge 2015-11-02 11:02:03 +01:00
Yves Hoppe
e3e90a2916 Updated composer.json to use the new jorobo package 2015-11-02 10:58:34 +01:00
Yves Hoppe
06bbd1f093 Merge 2015-11-02 10:58:34 +01:00
Yves Hoppe
a429e7cdde Added composer.lock file 2015-11-02 10:58:03 +01:00
Yves Hoppe
6e3b42ea0e Fixed a bug in administratorVerifyAvailable 2015-11-02 10:55:42 +01:00
Yves Hoppe
01bc962a67 Integrated robo build system - clean merge of #125 2015-11-02 10:55:42 +01:00
Yves Hoppe
7ea2741520 Integrated robo build system - clean merge of #125 2015-11-02 10:55:42 +01:00
javier gomez
a79603b994 Merge pull request #161 from javigomez/RoboUpdate2
Updating Robo Function run:test
2015-11-01 16:28:05 +01:00
javier gomez
277ff5c803 Improve logics in run:test method 2015-11-01 16:19:12 +01:00
javier gomez
cf95385242 Merge remote-tracking branch 'origin/master' into pr/146
# Conflicts:
#	RoboFile.php
2015-11-01 16:17:37 +01:00
Yves Hoppe
6a2955b388 Fixed an issue with the script.php 2015-11-01 16:08:19 +01:00
Francesco Abeni
8fd6f1d0e4 Add environments for different resolutions 2015-11-01 16:05:43 +01:00
Viktor Vogel
d902a88504 Merge pull request #151 from therunnergit/extension-refactoring
Refactor method to get extension
2015-11-01 15:53:06 +01:00
Yves Hoppe
84edc8552f Merge branch 'packagebuilding' of github.com:yvesh/weblinks into packagebuilding 2015-11-01 15:50:44 +01:00
Viktor Vogel
2536ca5a6c Merge pull request #145 from joomla-extensions/javigomez-patch-2
Add link to testing best practices document
2015-11-01 15:24:31 +01:00
javier gomez
c811166a7f Merge remote-tracking branch 'origin/master' into pr/149 2015-11-01 15:16:49 +01:00
Puneet Kala
3d563da619 Merge pull request #157 from javigomez/cleanedcategoriestest99
Standarise Administrator Categories Tests
2015-11-01 19:31:37 +05:30
Yves Hoppe
5e9b7211b2 Merge branch 'packagebuilding' 2015-11-01 14:29:46 +01:00
Yves Hoppe
2caddabe5d Updated composer.json to use the new jorobo package 2015-11-01 14:16:01 +01:00
javier gomez
9b9603b089 Update com_categories new title 2015-11-01 13:49:10 +01:00
javier gomez
e3bb16c086 Standarise Administrator Categories Tests 2015-11-01 12:05:35 +01:00
javier gomez
e216308f31 Merge pull request #156 from joomla-extensions/revert-147-Task
Revert "Test to submit a weblink and test to Displays a list of Web L…
2015-11-01 12:02:59 +01:00
javier gomez
533ab019c0 Revert "Test to submit a weblink and test to Displays a list of Web Links for…" 2015-11-01 12:02:48 +01:00
Viktor Vogel
65f544cda1 Merge pull request #147 from kshitijSharma2014/Task
Test to submit a weblink and test to Displays a list of Web Links for…
2015-11-01 11:55:14 +01:00
Viktor Vogel
92dc96881e Merge pull request #99 from remotehelp/patch-2
Update default_items.php
2015-11-01 11:29:21 +01:00
Viktor Vogel
7c4c3d564d Merge pull request #154 from therunnergit/tests-modifications-for-153
Fix tests after PR #153
2015-11-01 11:15:39 +01:00
Francesco Abeni
49ad05a930 Fix tests after PR #153 2015-11-01 10:56:43 +01:00
Viktor Vogel
f913a99a87 Merge pull request #153 from therunnergit/count-clicks-global-option
Fix missing global option default
2015-11-01 10:56:26 +01:00
Viktor Vogel
16e02d58c4 Merge pull request #88 from alikon/patch-2
installation fix on MSSQL
2015-11-01 10:49:46 +01:00
Francesco Abeni
35e3f1f18a Fix missing global option default 2015-11-01 10:42:34 +01:00
Viktor Vogel
931f1b0e59 Merge pull request #135 from javigomez/fixtravis2
Fix travis when using .httaccess
2015-11-01 10:23:28 +01:00
Yves Hoppe
3683dfb0a7 Merge 2015-11-01 10:22:31 +01:00
Yves Hoppe
dc67401e70 Merge branch 'master' into packagebuilding 2015-11-01 10:19:07 +01:00
Yves Hoppe
585ce49eaf Added composer.lock file 2015-11-01 10:13:36 +01:00
Yves Hoppe
fa3151900e Added composer.lock file 2015-11-01 10:10:01 +01:00
Yves Hoppe
b18e1a862a Fixed a bug in administratorVerifyAvailable 2015-11-01 10:01:45 +01:00
javier gomez
8bafcf32c1 Merge pull request #148 from yvesh/master
Fixing ending slash at repo folder
2015-11-01 09:57:12 +01:00
Francesco Abeni
33583c8afc Refactor method to get extension 2015-11-01 09:57:02 +01:00
Yves Hoppe
7f91f78d11 Integrated robo build system - clean merge of #125 2015-11-01 08:51:15 +01:00
Yves Hoppe
28ab09ae12 Integrated robo build system - clean merge of #125 2015-11-01 08:44:16 +01:00
Yves Hoppe
ed8d237816 Fixing ending slash at repo folder 2015-10-31 19:01:21 +01:00
puneet0191
0c8e3929f7 Merge branch 'master' of https://github.com/joomla-extensions/weblinks into RoboUpdate
Updating the Branch
2015-10-31 23:26:27 +05:30
kshitij sharma
24552b5e29 Test to submit a weblink and test to Displays a list of Web Links for a category 2015-10-31 17:58:48 +01:00
javier gomez
6e78edfd2f Add link to testing best practices document 2015-10-31 17:19:21 +01:00
puneet0191
ba916e5e0e Updating Composer File 2015-10-31 21:35:31 +05:30
puneet0191
3902ca6332 Updating Robo File to add the functionality to run each method. 2015-10-31 21:34:54 +05:30
Viktor Vogel
092ea0328d Merge pull request #142 from joomla-extensions/revert-141-CategoriesTest
Revert "Create a menu item: Displays a list of Web Links for a category"
2015-10-31 17:01:34 +01:00
Puneet Kala
fb37930a93 Revert "Create a menu item: Displays a list of Web Links for a category" 2015-10-31 21:19:26 +05:30
Viktor Vogel
ab8dbab01a Merge pull request #130 from therunnergit/checker-tools
Add tasks for checker tools
2015-10-31 16:44:30 +01:00
Viktor Vogel
b1c3dee301 Merge pull request #141 from kshitijSharma2014/CategoriesTest
Create a menu item: Displays a list of Web Links for a category
2015-10-31 15:45:53 +01:00
Viktor Vogel
24529c48dd Merge pull request #127 from therunnergit/tests-for-issue-26
Add test for hits counter
2015-10-31 15:15:52 +01:00
Viktor Vogel
bd8d3ed69e Merge pull request #98 from remotehelp/patch-1
Update en-GB.com_weblinks.ini
2015-10-31 15:10:57 +01:00
kshitij sharma
a87cdbd70b Create a menu item: Displays a list of Web Links for a category 2015-10-31 15:08:52 +01:00
Francesco Abeni
4896d5c6e2 Improve documentation and return values 2015-10-31 14:43:25 +01:00
javier gomez
da61ac9fe3 Merge pull request #137 from javigomez/puneettabschecker
Test to validate the Tabs on edit view
2015-10-31 14:43:24 +01:00
Viktor Vogel
0c4c17763e Merge pull request #134 from javigomez/fixinstallfolder
Install weblinks removing Joomla installation folder
2015-10-31 14:37:39 +01:00
puneet0191
75c309e843 Test to validate the Tabs on edit view
For more information see this issue:
2015-10-31 12:45:07 +01:00
javier gomez
ab8116ccc3 Fixed ilegal usage of sed 2015-10-31 12:37:27 +01:00
Francesco Abeni
2e91df1c07 Add url parameter for counter test 2015-10-31 12:25:49 +01:00
javier gomez
d4b80d8ae8 Fix wrong move command in robo 2015-10-31 12:22:02 +01:00
javier gomez
b9d54a1b0a Merge pull request #133 from therunnergit/issue-129
Add constructor to RoboFile
2015-10-31 12:13:41 +01:00
javier gomez
19538a6321 Install weblinks removing Joomla installation folder
This pull adds Daniel fix at https://github.com/joomla-projects/joomla-browser/pull/74
2015-10-31 12:07:53 +01:00
Viktor Vogel
58bf6f8f11 Merge pull request #124 from therunnergit/chown-local-user
Option to chown local user
2015-10-31 11:54:50 +01:00
Viktor Vogel
a25d3540af Merge pull request #132 from compojoom/curl_insecure
the --insecure option was set to git, but it should be set at curl
2015-10-31 11:34:19 +01:00
Francesco Abeni
b471903a06 Add constructor to RoboFile 2015-10-31 11:31:08 +01:00
Daniel Dimitrov
8aac8bf174 the --insecure option was set to git, but it should be set at curl 2015-10-31 11:28:05 +01:00
Viktor Vogel
8278e96032 Merge pull request #131 from compojoom/show_friendly_message_delete_fails
output message to delete the weblinks installation manually
2015-10-31 11:17:12 +01:00
Daniel Dimitrov
c41b53afd8 output message to delete the weblinks installation manually 2015-10-31 11:09:22 +01:00
Francesco Abeni
74f35976a7 Add tasks for checker tools 2015-10-31 11:04:54 +01:00
javier gomez
dbcb20bff7 Merge pull request #105 from kshitijSharma2014/add-archive-test
Adding test to check if category got archived
2015-10-31 10:08:51 +01:00
javier gomez
7fb20c1630 Merge remote-tracking branch 'origin/master' into pr/105 2015-10-31 09:51:58 +01:00
Viktor Vogel
3f6288b460 Merge pull request #116 from kshitijSharma2014/test1
Kill selenium Server
2015-10-31 09:35:13 +01:00
Francesco Abeni
78591bdaa6 Add test for hits counter 2015-10-30 17:54:02 +01:00
Viktor Vogel
e1163303bd Merge pull request #115 from javigomez/travis55b
Fix Apache running on PHP 5.3 instead of 5.5
2015-10-30 17:49:37 +01:00
Viktor Vogel
86e4f0cbe0 Merge pull request #123 from therunnergit/update-documentation
Update documentation
2015-10-30 17:12:59 +01:00
Viktor Vogel
d80c21024e Merge pull request #106 from Kubik-Rubik/readme_windows
Updated README.md  for Windows
2015-10-30 17:03:27 +01:00
Kubik-Rubik
fbb4fe63e6 Updated wording 2015-10-30 17:02:58 +01:00
javier gomez
7603c82c0f Merge pull request #118 from Kubik-Rubik/build_codeception_windows
Fix for Windows to make sure to run the build command...
2015-10-30 16:46:31 +01:00
Kubik-Rubik
68c6864021 Typo... thank Javier! :-P 2015-10-30 16:38:49 +01:00
Kubik-Rubik
3c46c84ed1 Build command with the bin folder 2015-10-30 16:11:05 +01:00
Kubik-Rubik
3f6f869f3d Build command with the bin folder 2015-10-30 16:10:20 +01:00
Francesco Abeni
caf010ce4b Option to chown local user 2015-10-30 15:56:05 +01:00
Francesco Abeni
6f115b1221 Update documentation
Add documentation about RoboFile.ini local configuration file
2015-10-30 15:47:16 +01:00
javier gomez
6562fd304a Merge pull request #117 from therunnergit/extend-clone-command
Extend clone options
2015-10-30 15:34:17 +01:00
kshitij sharma
28d96c315d Update AdministratorCategoriesCest.php 2015-10-30 15:25:00 +01:00
kshitij sharma
204da25f16 Update AdministratorCategoriesCest.php 2015-10-30 15:15:05 +01:00
Viktor Vogel
b00a245253 Merge pull request #119 from puneet0191/TrashingCategory
Adding the test to Trash a Category.
2015-10-30 15:09:41 +01:00
puneet0191
f5ee9e9cc7 Updating the comment 2015-10-30 19:10:25 +05:30
puneet0191
d41d5c7935 Updating Composer to load latest Joomla! Browser 2015-10-30 19:10:16 +05:30
javier gomez
92fff6966d Merge remote-tracking branch 'origin/master' into pr/115
# Conflicts:
#	RoboFile.php
2015-10-30 14:36:20 +01:00
kshitij sharma
577933c5f8 Update RoboFile.php 2015-10-30 14:33:23 +01:00
kshitij sharma
6bacebcaff Update RoboFile.php 2015-10-30 14:32:55 +01:00
Kubik-Rubik
02678e65ba Fix for Windows to make sure to run the build command to generate AcceptanceTester 2015-10-30 14:04:36 +01:00
puneet0191
7acb192136 Adding Delete Category in Test 2015-10-30 17:36:28 +05:30
puneet0191
15887b9bf0 Adding a function to delete a category 2015-10-30 17:35:54 +05:30
Francesco Abeni
7a2aca3b9a Extend clone options 2015-10-30 12:51:48 +01:00
Viktor Vogel
f944819f3e Merge pull request #107 from therunnergit/master
Add config param for local cms folder
2015-10-30 12:24:06 +01:00
javier gomez
a80e3ab53c Temporary remove tests in PHP 7 2015-10-30 11:28:40 +01:00
kshitij sharma
46f42ceb73 Kill selenium Server
Function to kill the already running selenium server
2015-10-30 11:27:28 +01:00
puneet0191
d42948bd48 Adding Test for Deleting Category Fixes #103 2015-10-30 11:09:23 +01:00
javier gomez
2135f26ea0 Fix Apache running on PHP 5.3 instead of 5.5 2015-10-30 10:43:37 +01:00
Francesco Abeni
0513bdd03f Merge local configuration and git cache features 2015-10-29 17:49:33 +01:00
Viktor Vogel
6352c630ce Merge pull request #109 from yvesh/master
Added local caching for the cloned joomla-cms
2015-10-29 17:40:09 +01:00
Francesco Abeni
08c2f8b641 Improve dist.ini file and fix CS 2015-10-29 16:06:04 +01:00
Yves Hoppe
2b369b1cff Added local caching for the cloned joomla-cms 2015-10-29 15:57:41 +01:00
Yves Hoppe
ec02c4f2e6 Added local caching for the cloned joomla-cms 2015-10-29 15:49:33 +01:00
Francesco Abeni
3e268d0626 Add config param for local cms folder 2015-10-29 15:30:04 +01:00
Kubik-Rubik
c3da104011 Updated README.md for Windows 2015-10-29 14:43:21 +01:00
Robert Deutz
f7966408b5 Merge pull request #104 from therunnergit/master
Add local configuration file for RoboFile.php
2015-10-29 14:30:59 +01:00
kshitij sharma
88cff10f0b Adding test to check if category got archived 2015-10-29 13:36:44 +01:00
Francesco Abeni
35840637b8 Change local configuration to real INI format 2015-10-29 12:58:49 +01:00
Francesco Abeni
b3d4ecf6a3 Fix formatting 2015-10-29 11:14:35 +01:00
Francesco Abeni
04216cf96d Add local configuration file for RoboFile.php 2015-10-29 11:12:58 +01:00
Puneet Kala
930f4213dd Merge pull request #102 from rdeutz/fix_category_manager_name
fix for category manager name
2015-10-29 14:53:00 +05:30
Robert Deutz
65eae0986c fix for category manager name 2015-10-29 10:13:54 +01:00
remoteshaman.com
4c6ff1777b Update en-GB.com_weblinks.ini
placing the new string in alphabetical order
2015-10-15 15:29:25 +03:00
remoteshaman.com
5374929e52 Update default_items.php
"label label-warning" text "Unpublished" view only for administrator's and not need display for all user in filter label tag.
2015-10-15 05:26:38 +03:00
remoteshaman.com
9716197fdb Update en-GB.com_weblinks.ini
Lang variable COM_WEBLINKS_NUM_ITEMS missing for title NUM ITEMS in category list (pkg_weblinks_3.4.1.zip)
2015-10-15 05:20:24 +03:00
Puneet Kala
1f19991696 Merge pull request #97 from javigomez/newmenuitemmanager
[tests] Update menu item creation
2015-10-07 16:57:31 +05:30
javier gomez
32df1efcb2 [tests] Update menu item creation
This pull updates JoomlaBrowser https://github.com/joomla-projects/joomla-browser/pull/66 to avoid false positives
2015-10-07 12:41:21 +02:00
javier gomez
e308a08642 Merge pull request #96 from javigomez/frontendtests
[tests] Added integration tests and moved to codeception 2.1
2015-10-05 18:25:35 +02:00
Yves Hoppe
a0d68ab93b [tests] Added integration tests and moved to codeception 2.1
This is a clean version of pull #94
2015-09-30 19:30:10 +02:00
Viktor Vogel
88d25172ca Merge pull request #91 from joomla-extensions/zero-24-patch-1
Fix: Two "images" tabs in Web links
2015-09-10 11:04:48 +02:00
zero-24
8ccb881d66 Update edit.php 2015-09-10 10:27:45 +02:00
Nicola Galgano
8252c35dad Merge pull request #1 from zero-24/patch-1
CS
2015-09-08 12:10:01 +02:00
zero-24
8717ae7720 CS 2015-09-08 11:59:05 +02:00
Nicola Galgano
07a7fbbc6a installation fix on MSSQL
testing this one #7832 i was unable to install pkg_weblinks on MSSQL
the problem was that these fields (version,hits,modified_user_id,checked_out)  was passed like a string  instead of bigint
2015-09-08 08:49:37 +02:00
George Wilson
e1ed479219 Merge pull request #86 from joomla-extensions/weblinks-filter-clear
Fixed clear button not working.
2015-09-06 23:42:25 +01:00
Michael Babker
d771cc8704 Merge pull request #87 from puneet0191/Fix_Tests
PR to fix the Broken Codeception Tests, with the recent changes in Joomla!
2015-09-06 14:04:43 -04:00
puneet0191
f1a532bd38 Fixing Weblinks Test 2015-09-06 22:49:36 +05:30
puneet0191
f32e369137 Fixing Categories Tests 2015-09-06 22:49:22 +05:30
RolandD
d3dcadfd2d Fixed clear button not working.
On the Weblinks list page, you can filter the results by putting text in the filter box. Clicking the X won't empty the search field.

To test:
1. Go to Weblinks
2. Filter the list
3. Click the X and it doesn't clear the search field
4. Apply patch
5. Reload page
6. Clear the search field with the X
7. Search field is now cleared
2015-09-06 12:05:17 -03:00
Puneet Kala
d92c25b701 Merge pull request #84 from joomla-extensions/updatereadme
Update Readme.md with way to run All the tests
2015-08-04 19:03:20 +05:30
javier gomez
e17fba993a Update the way to run All the tests
the run:test method allows to run the tests individually. The command for running all the tests is `run:tests`(see https://github.com/joomla-extensions/weblinks/blob/master/RoboFile.php#L41)

Updates #83
2015-08-04 09:57:35 +02:00
Puneet Kala
cb1a9ae1af Merge pull request #83 from gunjanpatel/readmeUpdate
[doc] Updating robo acceptance run command
2015-08-03 10:41:37 +05:30
Gunjan Patel
4e75b75e51 [doc] Updating robo acceptance run command 2015-08-03 10:30:47 +05:30
Robert Deutz
1e485ebc90 Merge pull request #76 from brianteeman/langupdate
update strings AND new/edit
2015-07-30 11:17:13 +02:00
Brian Teeman
6964d365f0 Merge pull request #1 from javigomez/langupdate2
Updates the tests with the new strings
2015-07-29 17:36:03 +01:00
javier gomez
0a984f778b Update tests with new strings 2015-07-29 18:23:47 +02:00
javier gomez
0910b638a6 Update Selenium 2015-07-29 18:21:47 +02:00
javier gomez
4951f7af4a Merge remote-tracking branch 'origin/master' into pr/76 2015-07-28 10:02:59 +02:00
Thomas Hunziker
5043ce7681 Change manifest client to "site" and remove outdated "client_id". 2015-07-23 21:26:56 +02:00
Brian Teeman
64870c54d3 update strings AND new/edit 2015-07-22 12:41:52 +01:00
168 changed files with 14117 additions and 3412 deletions

51
.drone.yml Normal file
View File

@ -0,0 +1,51 @@
---
kind: pipeline
name: default
steps:
- name: weblinks-codeception-tests
image: joomlaprojects/docker-systemtests:latest
commands:
- composer install
- chmod a+x .drone/build.sh
- ./.drone/build.sh
- apache2ctl start
- service mysql start
- cd /tests/www
- export DISPLAY=:0
- Xvfb -screen 0 1024x768x24 -ac +extension GLX +render -noreset > /dev/null 2>&1 &
- sleep 3
- fluxbox > /dev/null 2>&1 &
- vendor/bin/robo run:tests
- name: artifacts-system-tests
image: cschlosser/drone-ftps
depends_on: [ weblinks-codeception-tests ]
environment:
FTP_USERNAME:
from_secret: ftpusername
FTP_PASSWORD:
from_secret: ftppassword
PLUGIN_HOSTNAME: ci.joomla.org:21
PLUGIN_SRC_DIR: /tests/_output/
PLUGIN_DEST_DIR: /artifacts
PLUGIN_SECURE: false
PLUGIN_EXCLUDE: ^\.git/$
commands:
- export PLUGIN_DEST_DIR=$PLUGIN_DEST_DIR/$DRONE_REPO/$DRONE_BRANCH/$DRONE_PULL_REQUEST_$DRONE_BUILD_NUMBER/system-tests
- echo https://ci.joomla.org:444$PLUGIN_DEST_DIR
- /bin/upload.sh
when:
status:
- failure
volumes:
- name: weblinks_cache
host:
path: /tmp/weblinks_cache
---
kind: signature
hmac: 9346f0e74d2605ebe7bc9d33ad0588c1073ba3a9d9b254b71a7a85e219089449
...

32
.drone/build.sh Normal file
View File

@ -0,0 +1,32 @@
#!/usr/bin/env bash
VERSION="$(git rev-parse --short HEAD)"
echo "Started building at $(date) - $(whoami)"
# Update composer
composer self-update
# show directory listing
ls -al
ls -al vendor
mount
# Install dependencies
composer install --no-interaction --no-progress
mkdir -p /tests/www
cp -r ./* /tests/www
cd /tests/www
cp jorobo.dist.ini jorobo.ini
cp RoboFile.dist.ini RoboFile.ini
# Build package
vendor/bin/robo build --dev
# Copy acceptance yml
cp tests/acceptance.suite.dist.yml tests/acceptance.suite.yml
chown -R www-data .
chown -R www-data /tests

View File

@ -29,19 +29,12 @@ If you find any new bugs, or want to raise any type of support issue, please use
## Release Procedure
This is the procedure and checklist for creating a new package.
This is the procedure and checklist for creating a new package:
* Update the version number in `build.ini`.
* Run `phing set-version`.
* Pun `phing` to make the new package for the version.
* Run `phing tag`.
* Push the commits and tags up to Github.
* Go to the releases page on Github.
* Click on the new tag.
- Click the `Edit Tag` button.
- Fill in the title and description for the release.
- Attach the zip-file for the package to the release. Wait for the file to complete uploading!
- Click the `Publish Release` button.
* Update the version number in `jorobo.ini`
* Modify `jorobo.ini`, add your GitHub token and add ` Release` after `Package`
* Run `robo build` to make the new package and auto-upload and release it on GitHub.
* Go to the releases page on GitHub, review the Changelog and change the status from Pre-Release to Stable.
* Create a new `<update>` tag in the `manifest.xml` file.
- Change the `<version>` tag to the new version.
- Change the `<downloadurl>` tag to match the URL of the new release.

18
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,18 @@
### Steps to reproduce the issue
### Expected result
### Actual result
### System information (as much as possible)
### Additional comments

20
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,20 @@
Pull Request for Issue # .
### Summary of Changes
### Testing Instructions
### Expected result
### Actual result
### Documentation Changes Required

11
.gitignore vendored
View File

@ -40,18 +40,25 @@ phing-latest.phar
/Gemfile.lock
# composer
composer.lock
composer.phar
vendor/*
# Robo
robo.phar
RoboFile.ini
# Test related files
tests/acceptance.suite.yml
tests/*/*Tester.php
tests/joomla-cms3*
tests/_support/_generated/*TesterActions.php
tests/joomla*
tests/_output*
selenium-server-standalone.jar
codecept.phar
selenium.log
tests/cache
# Package building related
/dist
jorobo.ini

View File

@ -1,34 +1,54 @@
sudo: true
language: php
php:
- 5.5
- 5.6
- 7.0
services:
- xvfb
env:
global:
- RUN_PHPCS="no"
matrix:
allow_failures:
fast_finish: true
include:
- php: 5.6
env: RUN_PHPCS="yes"
- php: 7.0
sudo: true
addons:
firefox: 'latest-esr'
- php: 7.1
- php: 7.2
- php: 7.3
before_script:
# Forcing localhost in hosts file
- sudo sed -i '1s/^/127.0.0.1 localhost\n/' /etc/hosts
- sudo apt-get update -qq
# Install Apache
- sudo apt-get install -y --force-yes apache2 libapache2-mod-php5 php5-curl php5-mysql php5-intl php5-gd > /dev/null
- sudo /etc/init.d/apache2 stop
- sudo sed -i -e "s,APACHE_RUN_USER=www-data,APACHE_RUN_USER=$USER,g" /etc/apache2/envvars
- sudo sed -i -e "s,APACHE_RUN_GROUP=www-data,APACHE_RUN_GROUP=$USER,g" /etc/apache2/envvars
- sudo chown -R $USER /var/lock/apache2
- sudo chown -R $USER:$USER /var/www
- ln -s $TRAVIS_BUILD_DIR/tests/ /var/www/tests
- sudo sed -i -e "s,AllowOverride[ ]None,AllowOverride All,g" /etc/apache2/sites-available/default
- sudo /etc/init.d/apache2 start
# Xvfb
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- sleep 3 # give xvfb some time to start
- sudo apt-get install -y --force-yes apache2 libapache2-mod-fastcgi > /dev/null
- sudo mkdir $(pwd)/.run
- chmod a+x tests/travis-php-fpm.sh
- sudo ./tests/travis-php-fpm.sh $USER $(phpenv version-name)
- sudo a2enmod rewrite actions fastcgi alias
- echo "cgi.fix_pathinfo = 1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
- ~/.phpenv/versions/$(phpenv version-name)/sbin/php-fpm
- sudo cp -f tests/travis-ci-apache.conf /etc/apache2/sites-available/default
- sudo sed -e "s?%TRAVIS_BUILD_DIR%?$(pwd)?g" --in-place /etc/apache2/sites-available/default
- sudo sed -e "s?%PHPVERSION%?${TRAVIS_PHP_VERSION:0:1}?g" --in-place /etc/apache2/sites-available/default
- git submodule update --init --recursive
- sudo service apache2 restart
# Fluxbox
- sudo apt-get install fluxbox -y --force-yes
- fluxbox &
- sleep 3 # give fluxbox some time to start
- composer update
# Composer
- composer install
script:
# Build
- mv jorobo.dist.ini jorobo.ini
- vendor/bin/robo build
# System tests (Codeception)
- mv tests/acceptance.suite.dist.yml tests/acceptance.suite.yml
- vendor/bin/robo run:tests
- vendor/bin/robo run:tests --use-htaccess
# Run phpcs on PHP 5.6 against weblinks source
- if [[ $RUN_PHPCS == "yes" ]]; then vendor/bin/phpcs --report=full --extensions=php -p --standard=tests/joomla/build/phpcs/Joomla ./src; fi

32
CHANGELOG.md Normal file
View File

@ -0,0 +1,32 @@
# Changelog
#### 3.7.0
* Use correct database *2019-08-10*
* Move to namespaces *2019-08-10*
* First imageignores image float setting366 *2019-08-10*
* Changed language strings so that the parameter "image float" in the config is more concrete *2019-08-10*
* Improved the Batch view of com_weblinks *2019-08-10*
* add Jorobo Map Task To RoboFile *2019-08-10*
* makeSameAliasPossibleForDifferentLanguages *2019-08-10*
* mapping of new media files was not correct because of this you see the warning "JInstaller: :Install: File does not exist /var/www/html/weblinksecht/weblinks/tests/joomla/tmp/media/js" while installing *2019-08-10*
* Delete jed_update.xml *2019-08-10*
* xml code-style *2019-08-10*
* typo *2019-08-10*
* Serve updates through the downloads site *2019-08-10*
* Implementing full associations for single weblink *2019-08-10*
* Update composer *2019-08-10*
* Use correct database *2019-08-10*
* Move to namespaces *2019-08-10*
* First imageignores image float setting366 *2019-08-10*
* Changed language strings so that the parameter "image float" in the config is more concrete *2019-08-10*
* Improved the Batch view of com_weblinks *2019-08-10*
* add Jorobo Map Task To RoboFile *2019-08-10*
* makeSameAliasPossibleForDifferentLanguages *2019-08-10*
* mapping of new media files was not correct because of this you see the warning "JInstaller: :Install: File does not exist /var/www/html/weblinksecht/weblinks/tests/joomla/tmp/media/js" while installing *2019-08-10*
* Delete jed_update.xml *2019-08-10*
* xml code-style *2019-08-10*
* typo *2019-08-10*
* Serve updates through the downloads site *2019-08-10*
* Implementing full associations for single weblink *2019-08-10*
* Update composer *2019-08-10*

336
README.md
View File

@ -1,37 +1,333 @@
# Weblinks for Joomla! [![Build Status](https://travis-ci.org/joomla-extensions/weblinks.svg?branch=master)](https://travis-ci.org/joomla-extensions/weblinks)
# Weblinks for Joomla!
This repo is meant to hold the decoupled com_weblinks component and related code.
Build Status
---------------------
| Drone-CI |
| ------------- |
| [![Build Status](https://ci.joomla.org/api/badges/joomla-extensions/weblinks/status.svg)](https://ci.joomla.org/joomla-extensions/weblinks) |
# Tests
To prepare the system tests (Selenium) to be run in your local machine you are asked to rename the file `tests/acceptance.suite.dist.yml` to `tests/acceptance.suite.yml`. Afterwards, please edit the file according to your system needs.
Weblinks for Joomla! provides a component and accompanying extensions to create a directory of weblinks.
To run the tests please execute the following commands (for the moment only working in Linux and MacOS, for more information see: https://docs.joomla.org/Testing_Joomla_Extensions_with_Codeception):
# How to test a PR
```bash
$ composer install
$ vendor/bin/robo
$ vendor/bin/robo test:acceptance
## With the [Patch Tester Component](https://github.com/joomla-extensions/patchtester/releases/latest)
Easily apply changes from a pull requests against this repo:
Install the last release of [com_weblinks](https://github.com/joomla-extensions/weblinks/releases/latest) into your Joomla.
Install the last release of [com_patchtester](https://github.com/joomla-extensions/patchtester/releases/latest) into your Joomla (weblinks is supported since Version 3.0.0 Alpha 2).
Log into your site's administrator section, go to the Patch Tester Component Options (Components -> Patch Tester -> Options)
Switch the `GitHub Repository` to `Joomla Weblinks Package`. For this you have to fill the field `GitHub Project Owner` with `joomla-extensions` and the field `GitHub Project Repository` with `weblinks`.
Click `Save & Close` and hit the `Fetch Data` Button to the the lastest pull requests
Click `Apply Patch` to apply the proposed changes from the pull request.
Click `Revert Patch` to revert an applied patch.
You can read more about the Patch Tester extension on the [Joomla! Documentation Wiki](https://docs.joomla.org/Component_Patchtester_for_Testers).
## With Github
If you want to test a patch you can apply the patch via git.
If you cloned this repo under the name upstream - your remote is upstream you can user the command
```
git fetch upstream pull/PR_NUMBER/head:BRANCHNUMER
```
for fetching the branch of the PR https://github.com/joomla-extensions/weblinks/pull/290 this would be
```
git fetch upstream pull/290/head:move-lang-files
```
After that you can checkout the branch and start testing.
```
git checkout move-lang-files
```
# For Linux
## Install
### 1. Open a session and change to the document root of your local webserver.
```
$ cd /var/www/html/
/var/www/html$
```
##For Windows:
### 2. Clone the current repository into your webserver root folder
```
/var/www/html$ git clone git@github.com:joomla-extensions/weblinks.git
Clone nach 'weblinks' ...
remote: Counting objects: 2446, done.
remote: Compressing objects: 100% (75/75), done.
remote: Total 2446 (delta 10), reused 0 (delta 0), pack-reused 2361
Empfange Objekte: 100% (2446/2446), 615.02 KiB | 375.00 KiB/s, Fertig.
Löse Unterschiede auf: 100% (1232/1232), Fertig.
Prüfe Konnektivität ... Fertig.
```
Are you new with github? Here you can find informations about setting it up: https://help.github.com/articles/set-up-git/
If you get an error you can try git clone https://github.com:joomla-extensions/weblinks.git instead of git clone git@github.com:joomla-extensions/weblinks.git
### 3. Change to the directory weblinks
```
/var/www/html$ cd weblinks
/var/www/html/weblinks$
```
### 4. This files should be in your weblinks folder.
```
/var/www/html/weblinks$ ls
codeception.yml docs LICENSE RoboFile.dist.ini tests
composer.json jed_update.xml manifest.xml RoboFile.php
composer.lock jorobo.dist.ini README.md src
```
### 5. Optional: Have a look into composer.json for information what software you will install via composer.
```
/var/www/html/weblinks$ cat composer.json
```
or https://github.com/joomla-extensions/weblinks/blob/master/composer.json
Read more about [how to install composer](https://getcomposer.org/doc/00-intro.md) here.
### 6. Optional: If you have problems using composer set a timeout.
```
/var/www/html/weblinks$export COMPOSER_PROCESS_TIMEOUT=1500;
```
### 7. Install via composer
```
/var/www/html/weblinks$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
- Installing symfony/yaml (v3.1.3)
Downloading: 100%
...
...
Generating autoload files
```
### 8. After that you have to build [robo](http://robotframework.org/)
```
/var/www/html/weblinks$ vendor/bin/robo build
```
### 9. Optional: Prepare the database
If you use MySQL or PostgreSQL as database and your user has create database privileges the Database is automatically created by the Joomla installer.
But the safest way is to create the database before running Joomla's web installer.
```
/var/www/html/weblinks$ mysql -u root -p
mysql> create database weblinks;
Query OK, 1 row affected (0,00 sec)
mysql> quit;
Bye
```
### 10. Copy the file acceptance.suite.dist.yml into acceptance.suite.dist.yml
```
/var/www/html/weblinks$ cd tests
/var/www/html/weblinks/tests$ cp acceptance.suite.dist.yml acceptance.suite.yml
```
### 11. Update the file acceptance.suite.yml to your needs. At least you have to update the options url, database name and counter_test_url.
```
/var/www/html/weblinks/tests$ cat acceptance.suite.yml
class_name: AcceptanceTester
modules:
enabled:
- JoomlaBrowser
- AcceptanceHelper
config:
JoomlaBrowser:
url: 'http://localhost/weblinks/tests/joomla-cms3' # the url that points to the joomla installation at /tests/system/joomla-cms
browser: 'firefox'
window_size: 1024x768
capabilities:
unexpectedAlertBehaviour: 'accept'
username: 'admin' # UserName for the Administrator
password: 'admin' # Password for the Administrator
database host: 'localhost' # place where the Application is Hosted #server Address
database user: 'root' # MySQL Server user ID, usually root
database password: 'yourPassword' # MySQL Server password, usually empty or root
database name: 'weblinks' # DB Name, at the Server
database type: 'mysqli' # type in lowercase one of the options: MySQL\MySQLi\PDO
database prefix: 'jos_' # DB Prefix for tables
install sample data: 'no' # Do you want to Download the Sample Data Along with Joomla Installation, then keep it Yes
sample data: 'Default English (GB) Sample Data' # Default Sample Data
admin email: 'admin@mydomain.com' # email Id of the Admin
language: 'English (United Kingdom)' # Language in which you want the Application to be Installed
AcceptanceHelper:
repo_folder: '/home/travis/build/joomla-extensions/weblinks/' # Path to the Extension repository. To be used by tests to install via Install from folder
counter_test_url: 'http://localhost/weblinks/tests/joomla-cms3' # the url for the weblink item used to test hits counter
url: 'http://localhost/weblinks/tests/joomla-cms3' # the url that points to the joomla installation at /tests/system/joomla-cms - we need it twice here
error_level: "E_ALL & ~E_STRICT & ~E_DEPRECATED"
env:
desktop: ~
tablet:
modules:
config:
JoomlaBrowser:
window_size: 768x1024
phone:
modules:
config:
JoomlaBrowser:
window_size: 480x640
```
### 12. Optional: Go back to weblinks directory and create and edit the file RoboFile.ini. Delete the local user www-data.
```
/var/www/html/weblinks$ cp RoboFile.dist.ini RoboFile.ini
/var/www/html/weblinks$ cat RoboFile.ini
; If set to true, the repo will not be cloned from GitHub and the local copy will be reused.
; This setting will be obsolete once we have local Git cache enabled
skipClone = false
; If you want to setup your test website in a different folder, you can do that here.
; You can also set an absolute path, i.e. /path/to/my/cms/folder
cmsPath = tests/joomla-cms3
; If you want to clone a different branch, you can set it here
branch = 3.10-dev
; (Linux / Mac only) If you want to set a different owner for the CMS root folder, you can set it here.
localUser =
; Set this to true, if your curl binaries are not able to create an https connection
insecure = false
```
### 13. Optional: Set use owner of the project to your user.
```
/var/www/html/weblinks$sudo chown -R username:usergroup /var/www
```
### 14. Ready! Run the first tests:
```
/var/www/html/weblinks$ vendor/bin/robo run:tests
Clone nach 'tests/cache' ...
[Exec] Done in 13.18s
[FileSystem\CopyDir] Copied from tests/cache to tests/joomla-cms3
...
```
## Tests
The tests in Weblinks Extension use Codeception Testing Framework, if you want to know more about the technology used for testing please check: [Testing Joomla Extensions with Codeception](https://docs.joomla.org/Testing_Joomla_Extensions_with_Codeception).
## Optional: extra configuration for RoboFile
This is not required, and if in doubt you can just skip this section, but there may be some specific use cases when you need (or want) to override the default behaviour of RoboFile.php. To do this, copy `RoboFile.dist.ini` to `RoboFile.ini` and add options in INI format, one per line, e.g.
skipClone = true
cmsPath = tests/joomla
The currently available options are as follows:
* `skipClone`: set to `true` to avoid the cms repo being deleted and re-cloned at each test execution. Useful to save time and bandwidth while you're debugging your test environment. But please be aware that if you don't refresh the repo you'll have to manually check the `installation` folder is present and the `configuration.php` is not.
* `cmsPath`: set to the local path (absolute or relative) where you'd like the test website to be installed. Default is `tests/joomla-cms3`.
* `branch`: set to whatever existing branch from the `joomla-cms` project if you want to clone that specific branch. Default is `3.10-dev`.
## Additional options
You can run the tests against different resolutions. The default acceptance YAML configuration file provides three options:
* "desktop": default, 1024x768px
* "tablet": tablet in portrait mode, 768x1024px
* "phone": phone in portrait mode, 480x640px
To set a specific resolution, set is as an option of the command:
`$ vendor/bin/robo run:tests --env=tablet`
Note: the first parameter is used by Travis and you should always set it to "0" when you run your tests locally.
## Video
[Here](https://www.youtube.com/watch?v=fWO_Ed_wxpw) you can finde a video that shows the installation of com_weblinks for testing.
# For Windows:
You need to install:
- Git for windows (https://msysgit.github.io/)
- GitHub for windows (https://windows.github.com/)
- Curl for windows if necesssary.
- Curl for Windows if necessary.
- for complete list of necessary software and tips check this [wiki page](https://github.com/joomla-extensions/weblinks/wiki/Programs-needed-on-Windows-to-get-the-tests-running)
Note: For commands line is better if you use the 'Git shell' program.
Create a symbolic link from your tests\joomla-cms3 to a subfolder of your web server. For example, I'm creating a link between the tests folder of my weblinks folder and the tests folder of my web server:
mklink /J C:\wamp\www\tests\joomla-cms3 C:\Users\Nicolas\Documents\GitHub\weblinks\tests\joomla-cms3
First you should create a fork of the official repository and clone the fork into your web server folder.
Go in the folder of weblinks, for example:
cd C:\Users\Nicolas\Documents\GitHub\weblinks
To prepare the system tests (Selenium) to be run in your local machine you are asked to rename the file `tests/acceptance.suite.dist.yml` to `tests/acceptance.suite.yml`. Afterwards, please edit the file according to your system needs.
Then, run the command:
composer install
The next step is only required if you don't place the weblinks folder into your web server folder. Create a symbolic link from your tests\joomla-cms3 to a subfolder of your web server. For example:
That will add all the dependencies for the testing of weblinks
You can then run the command:
vendor\bin\robo.bat test:acceptance
```bash
mklink /J C:\wamp\www\tests\joomla-cms3 C:\Users\Name\Documents\GitHub\weblinks\tests\joomla-cms3
```
Open the console and go in the folder of weblinks, for example:
```bash
cd C:\wamp\www\weblinks
```
Then run the command:
```bash
$ composer install
```
You can then run the following command to start the tests:
```bash
$ vendor/bin/robo run:tests
```
Once all tests were executed, you may also run a specific test:
```bash
$ vendor/bin/robo run:test // Then select the test you want to run!
```

16
RoboFile.dist.ini Normal file
View File

@ -0,0 +1,16 @@
; If set to true, the repo will not be cloned from GitHub and the local copy will be reused.
; This setting will be obsolete once we have local Git cache enabled
skipClone = false
; If you want to setup your test website in a different folder, you can do that here.
; You can also set an absolute path, i.e. /path/to/my/cms/folder
cmsPath = tests/joomla
; If you want to clone a different branch, you can set it here
branch = 3.10-dev
; (Linux / Mac only) If you want to set a different owner for the CMS root folder, you can set it here.
localUser = www-data
; Set this to true, if your curl binaries are not able to create an https connection
insecure = false

View File

@ -5,121 +5,146 @@
* Download robo.phar from http://robo.li/robo.phar and type in the root of the repo: $ php robo.phar
* Or do: $ composer update, and afterwards you will be able to execute robo like $ php vendor/bin/robo
*
* @see http://robo.li/
* @package Joomla.Site
* @subpackage RoboFile
*
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
use Joomla\Jorobo\Tasks\loadTasks as loadReleaseTasks;
use Joomla\Testing\Robo\Tasks\loadTasks as loadTestingTasks;
use Robo\Tasks;
require_once 'vendor/autoload.php';
class RoboFile extends \Robo\Tasks
if (!defined('JPATH_BASE'))
{
define('JPATH_BASE', __DIR__);
}
/**
* Modern php task runner for Joomla! Browser Automated Tests execution
*
* @package RoboFile
*
* @since 1.0
*/
class RoboFile extends Tasks
{
// Load tasks from composer, see composer.json
use \joomla_projects\robo\loadTasks;
private $extension = '';
use loadTestingTasks;
use loadReleaseTasks;
/**
* Set the Execute extension for Windows Operating System
*
* @return void
*/
private function setExecExtension()
* File extension for executables
*
* @var string
*/
private $executableExtension = '';
/**
* Local configuration parameters
*
* @var array
*/
private $configuration = array();
/**
* Path to the local CMS root
*
* @var string
*/
private $cmsPath = '';
/**
* @var array | null
* @since version
*/
private $suiteConfig;
/**
* Constructor
*/
public function __construct()
{
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
{
$this->extension = '.exe';
}
$this->configuration = $this->getConfiguration();
$this->cmsPath = $this->getCmsPath();
$this->executableExtension = $this->getExecutableExtension();
// Set default timezone (so no warnings are generated if it is not set)
date_default_timezone_set('UTC');
}
/**
* Executes all the Selenium System Tests in a suite on your machine
*
* @param string $seleniumPath Optional path to selenium-standalone-server-x.jar
* @param string $suite Optional, the name of the tests suite
*
* @return mixed
*/
public function runTests($seleniumPath = null, $suite = 'acceptance')
* Get the executable extension according to Operating System
*
* @return string
*/
private function getExecutableExtension()
{
$this->setExecExtension();
// Get Joomla Clean Testing sites
if (is_dir('tests/joomla-cms3'))
if ($this->isWindows())
{
$this->taskDeleteDir('tests/joomla-cms3')->run();
return '.exe';
}
$this->_exec('git' . $this->extension . ' clone -b staging --single-branch --depth 1 https://github.com/joomla/joomla-cms.git tests/joomla-cms3');
$this->say('Joomla CMS site created at tests/joomla-cms3');
return '';
}
if (!$seleniumPath)
{
if (!file_exists('selenium-server-standalone.jar'))
{
$this->say('Downloading Selenium Server, this may take a while.');
/**
* Executes all the Selenium System Tests in a suite on your machine
*
* @param array $opts Array of configuration options:
* - 'use-htaccess': renames and enable embedded Joomla .htaccess file
* - 'env': set a specific environment to get configuration from
*
* @return mixed
* @throws \Codeception\Exception\ConfigurationException
*/
public function runTests($opts = ['use-htaccess' => false, 'env' => 'desktop'])
{
$this->createTestingSite($opts['use-htaccess']);
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
{
$this->_exec('curl.exe -sS http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone-2.45.0.jar > selenium-server-standalone.jar');
}
else
{
$this->taskExec('wget')
->arg('http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone-2.45.0.jar')
->arg('-O selenium-server-standalone.jar')
->printed(false)
->run();
}
}
$this->getComposer();
$seleniumPath = 'selenium-server-standalone.jar';
}
$this->taskComposerInstall()->run();
if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')
{
$seleniumPath = "java -jar $seleniumPath >> selenium.log 2>&1 &";
}
else
{
$seleniumPath = "START java.exe -jar .\\" . $seleniumPath;
}
$this->runSelenium();
// Make sure we have Composer
if (!file_exists('./composer.phar'))
{
$this->_exec('curl' . $this->extension . ' -sS https://getcomposer.org/installer | php');
}
$this->taskComposerUpdate()->run();
// Running Selenium server
$this->_exec($seleniumPath);
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
{
sleep(10);
}
else
{
$this->taskWaitForSeleniumStandaloneServer()
->run()
->stopOnFail();
}
// Loading Symfony Command and running with passed argument
$this->_exec('php' . $this->extension . ' vendor/bin/codecept build');
// Make sure to run the build command to generate AcceptanceTester
$this->_exec($this->isWindows() ? 'vendor\bin\codecept.bat build' : 'php vendor/bin/codecept build');
$this->taskCodecept()
->suite($suite)
->arg('--steps')
->arg('--debug')
->arg('--fail-fast')
->env($opts['env'])
->arg('tests/acceptance/install/')
->run()
->stopOnFail();
// Kill selenium server
// $this->_exec('curl http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer');
$this->taskCodecept()
->arg('--steps')
->arg('--debug')
->arg('--fail-fast')
->env($opts['env'])
->arg('tests/acceptance/administrator/')
->run()
->stopOnFail();
$this->taskCodecept()
->arg('--steps')
->arg('--debug')
->arg('--fail-fast')
->env($opts['env'])
->arg('tests/acceptance/frontend/')
->run()
->stopOnFail();
/*
// Uncomment this lines if you need to debug selenium errors
Uncomment this lines if you need to debug selenium errors
$seleniumErrors = file_get_contents('selenium.log');
if ($seleniumErrors) {
$this->say('Printing Selenium Log files');
@ -133,114 +158,554 @@ class RoboFile extends \Robo\Tasks
/**
* Executes a specific Selenium System Tests in your machine
*
* @param string $seleniumPath Optional path to selenium-standalone-server-x.jar
* @param string $pathToTestFile Optional name of the test to be run
* @param string $suite Optional name of the suite containing the tests, Acceptance by default.
* @param string $pathToTestFile Optional name of the test to be run
* @param string $suite Optional name of the suite containing the tests, Acceptance by default.
*
* @return mixed
* @throws ReflectionException
* @throws \Codeception\Exception\ConfigurationException
*/
public function runTest($seleniumPath = null, $pathToTestFile = null, $suite = 'acceptance')
public function runTest($pathToTestFile = null, $suite = 'acceptance')
{
if (!$seleniumPath)
{
if (!file_exists('selenium-server-standalone.jar'))
{
$this->say('Downloading Selenium Server, this may take a while.');
$this->taskExec('wget')
->arg('http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone-2.45.0.jar')
->arg('-O selenium-server-standalone.jar')
->printed(false)
->run();
}
$this->runSelenium();
$seleniumPath = 'selenium-server-standalone.jar';
}
// Make sure we have Composer
if (!file_exists('./composer.phar'))
{
$this->_exec('curl -sS https://getcomposer.org/installer | php');
}
$this->taskComposerUpdate()->run();
// Running Selenium server
$this->_exec("java -jar $seleniumPath > selenium-errors.log 2>selenium.log &");
$this->taskWaitForSeleniumStandaloneServer()
->run()
->stopOnFail();
// Make sure to Run the Build Command to Generate AcceptanceTester
$this->_exec("php vendor/bin/codecept build");
// Make sure to run the build command to generate AcceptanceTester
$this->_exec($this->isWindows() ? 'vendor\bin\codecept.bat build' : 'php vendor/bin/codecept build');
if (!$pathToTestFile)
{
$tests = array();
$this->say('Available tests in the system:');
$filesInSuite = scandir(getcwd() . '/tests/' . $suite);
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
'tests/' . $suite,
RecursiveDirectoryIterator::SKIP_DOTS
),
RecursiveIteratorIterator::SELF_FIRST
);
$tests = array();
$iterator->rewind();
$i = 1;
foreach ($filesInSuite as $file)
while ($iterator->valid())
{
// Make sure the file is a Test file
if (strripos($file, 'cept.php') || strripos($file, 'cest.php'))
if (strripos($iterator->getSubPathName(), 'cept.php')
|| strripos($iterator->getSubPathName(), 'cest.php'))
{
$tests[$i] = $file;
$this->say('[' . $i . '] ' . $file);
$this->say('[' . $i . '] ' . $iterator->getSubPathName());
$tests[$i] = $iterator->getSubPathName();
$i++;
}
$iterator->next();
}
$this->say('');
$testNumber = $this->ask('Type the number of the test in the list that you want to run...');
$test = $tests[$testNumber];
}
$pathToTestFile = 'tests/' . $suite . '/' . $test;
// Loading the class to display the methods in the class
require 'tests/' . $suite . '/' . $test;
// Logic to fetch the class name from the file name
$fileName = explode("/", $test);
$className = explode(".", $fileName[1]);
// If the selected file is cest only than we will give the option to execute individual methods, we don't need this in cept file
$i = 1;
if (strripos($className[0], 'cest'))
{
$class_methods = get_class_methods($className[0]);
$this->say('[' . $i . '] ' . 'All');
$methods[$i] = 'All';
$i++;
foreach ($class_methods as $method_name)
{
$reflect = new ReflectionMethod($className[0], $method_name);
if (!$reflect->isConstructor())
{
if ($reflect->isPublic())
{
$this->say('[' . $i . '] ' . $method_name);
$methods[$i] = $method_name;
$i++;
}
}
}
$this->say('');
$testNumber = $this->ask('Type the number of the test in the list that you want to run...');
$pathToTestFile = "tests/$suite/" . $tests[$testNumber];
$methodNumber = $this->ask('Please choose the method in the test that you would want to run...');
$method = $methods[$methodNumber];
}
if (isset($method) && $method != 'All')
{
$pathToTestFile = $pathToTestFile . ':' . $method;
}
$this->taskCodecept()
->test($pathToTestFile)
->arg('--steps')
->arg('--debug')
->run()
->stopOnFail();
->test($pathToTestFile)
->arg('--steps')
->arg('--debug')
->run()
->stopOnFail();
}
// Kill selenium server
// $this->_exec('curl http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer');
$this->say('Printing Selenium Log files');
$this->say('------ selenium-errors.log (start) ---------');
$seleniumErrors = file_get_contents('selenium-errors.log');
if ($seleniumErrors)
/**
* Run the specified checker tool. Valid options are phpmd, phpcs, phpcpd
*
* @param string $tool The tool
*
* @return bool
*/
public function runChecker($tool = null)
{
if ($tool === null)
{
$this->say(file_get_contents('selenium-errors.log'));
}
else
{
$this->say('no errors were found');
}
$this->say('------ selenium-errors.log (end) -----------');
$this->say('You have to specify a tool name as argument. Valid tools are phpmd, phpcs, phpcpd.');
/*
// Uncomment if you need to debug issues in selenium
$this->say('');
$this->say('------ selenium.log (start) -----------');
$this->say(file_get_contents('selenium.log'));
$this->say('------ selenium.log (end) -----------');
*/
return false;
}
if (!in_array($tool, array('phpmd', 'phpcs', 'phpcpd')))
{
$this->say('The tool you required is not known. Valid tools are phpmd, phpcs, phpcpd.');
return false;
}
switch ($tool)
{
case 'phpmd':
return $this->runPhpmd();
case 'phpcs':
return $this->runPhpcs();
case 'phpcpd':
return $this->runPhpcpd();
}
}
/**
* Creates a testing Joomla site for running the tests (use it before run:test)
*
* @param bool $use_htaccess (1/0) Rename and enable embedded Joomla .htaccess file
*
* @return bool
*/
public function createTestingSite()
public function createTestingSite($use_htaccess = false)
{
// Get Joomla Clean Testing sites
if (is_dir('tests/joomla-cms3'))
if (!empty($this->configuration->skipClone))
{
$this->taskDeleteDir('tests/joomla-cms3')->run();
$this->say('Reusing Joomla CMS site already present at ' . $this->cmsPath);
return;
}
$this->_exec('git' . $this->extension . ' clone -b staging --single-branch --depth 1 https://github.com/joomla/joomla-cms.git tests/joomla-cms3');
$this->say('Joomla CMS site created at tests/joomla-cms3');
// Caching cloned installations locally
if (!is_dir('tests/cache') || (time() - filemtime('tests/cache') > 60 * 60 * 24))
{
if (file_exists('tests/cache'))
{
$this->taskDeleteDir('tests/cache')->run();
}
$this->_exec($this->buildGitCloneCommand());
}
// Get Joomla Clean Testing sites
if (is_dir($this->cmsPath))
{
try
{
$this->taskDeleteDir($this->cmsPath)->run();
}
catch (Exception $e)
{
// Sorry, we tried :(
$this->say('Sorry, you will have to delete ' . $this->cmsPath . ' manually. ');
exit(1);
}
}
$this->_copyDir('tests/cache', $this->cmsPath);
// Optionally change owner to fix permissions issues
if (!empty($this->configuration->localUser) && !$this->isWindows())
{
$this->_exec('chown -R ' . $this->configuration->localUser . ' ' . $this->cmsPath);
}
// Copy current package
if (!file_exists('dist/pkg-weblinks-current.zip'))
{
$this->build(true);
}
$this->_copy('dist/pkg-weblinks-current.zip', $this->cmsPath . "/pkg-weblinks-current.zip");
$this->say('Joomla CMS site created at ' . $this->cmsPath);
// Optionally uses Joomla default htaccess file. Used by TravisCI
if ($use_htaccess == true)
{
$this->_copy('./tests/joomla/htaccess.txt', './tests/joomla/.htaccess');
$this->_exec('sed -e "s,# RewriteBase /,RewriteBase /tests/joomla/,g" -in-place tests/joomla/.htaccess');
}
}
/**
* Get (optional) configuration from an external file
*
* @return \stdClass|null
*/
public function getConfiguration()
{
$configurationFile = __DIR__ . '/RoboFile.ini';
if (!file_exists($configurationFile))
{
$this->say("No local configuration file");
return null;
}
$configuration = parse_ini_file($configurationFile);
if ($configuration === false)
{
$this->say('Local configuration file is empty or wrong (check is it in correct .ini format');
return null;
}
return json_decode(json_encode($configuration));
}
/**
* Build correct git clone command according to local configuration and OS
*
* @return string
*/
private function buildGitCloneCommand()
{
$branch = empty($this->configuration->branch) ? '3.10-dev' : $this->configuration->branch;
return "git" . $this->executableExtension . " clone -b $branch --single-branch --depth 1 https://github.com/joomla/joomla-cms.git tests/cache";
}
/**
* Check if local OS is Windows
*
* @return bool
*/
private function isWindows()
{
return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
}
/**
* Get the correct CMS root path
*
* @return string
*/
private function getCmsPath()
{
if (empty($this->configuration->cmsPath))
{
return 'tests/joomla';
}
if (!file_exists(dirname($this->configuration->cmsPath)))
{
$this->say("Cms path written in local configuration does not exists or is not readable");
return 'tests/joomla';
}
return $this->configuration->cmsPath;
}
/**
* Runs Selenium Standalone Server.
*
* @return void
* @throws \Codeception\Exception\ConfigurationException
*/
public function runSelenium()
{
if ($this->isWindows())
{
// TODO: Move this logic to the selenium standalone server task in the parent joomla repo
$this->_exec('START java.exe -jar ' . $this->getWebDriver() .
' .\\vendor\\joomla-projects\\selenium-server-standalone\\bin\\selenium-server-standalone.jar ');
sleep(3);
}
else
{
$this->taskSeleniumStandaloneServer()
->setWebdriver($this->getWebdriver())
->runSelenium()
->waitForSelenium()
->run()
->stopOnFail();
}
}
/**
* Downloads Composer
*
* @return void
*/
private function getComposer()
{
// Make sure we have Composer
if (!file_exists('./composer.phar'))
{
$insecure = '';
if (!empty($this->configuration->insecure))
{
$insecure = '--insecure';
}
$this->_exec('curl ' . $insecure . ' --retry 3 --retry-delay 5 -sS https://getcomposer.org/installer | php');
}
}
/**
* Kills the selenium server running
*
* @param string $host Web host of the remote server.
* @param string $port Server port.
*
* @return void
*/
public function killSelenium($host = 'localhost', $port = '4444')
{
$this->say('Trying to kill the selenium server.');
$this->taskSeleniumStandaloneServer()
->setUrl("http://$host:$port")
->killSelenium()
->run()
->stopOnFail();
}
/**
* Run the phpmd tool
*
* @return void
*/
private function runPhpmd()
{
return $this->_exec('phpmd' . $this->extension . ' ' . __DIR__ . '/src xml cleancode,codesize,controversial,design,naming,unusedcode');
}
/**
* Run the phpcs tool
*
* @return void
*/
private function runPhpcs()
{
$this->_exec('phpcs' . $this->extension . ' ' . __DIR__ . '/src');
}
/**
* Run the phpcpd tool
*
* @return void
*/
private function runPhpcpd()
{
$this->_exec('phpcpd' . $this->extension . ' ' . __DIR__ . '/src');
}
/**
* Build the joomla extension package
*
* @param array $params Additional params
*
* @return void
*/
public function build($params = ['dev' => false])
{
if (!file_exists('jorobo.ini'))
{
$this->_copy('jorobo.dist.ini', 'jorobo.ini');
}
$this->taskBuild($params)->run();
}
/**
* Executes all unit tests
*
* @return void
*/
public function runUnit()
{
$this->createTestingSite();
$this->getComposer();
$this->taskComposerInstall()->run();
// Make sure to run the build command to generate AcceptanceTester
$this->_exec($this->isWindows() ? 'vendor\bin\codecept.bat build' : 'php vendor/bin/codecept build');
$this->taskCodecept()
->suite('unit')
->run()
->stopOnFail();
}
/**
* Update copyright headers for this project. (Set the text up in the jorobo.ini)
*
* @return void
*/
public function headers()
{
if (!file_exists('jorobo.ini'))
{
$this->_copy('jorobo.dist.ini', 'jorobo.ini');
}
(new \Joomla\Jorobo\Tasks\CopyrightHeader)->run();
}
/**
* Detect the correct driver for selenium
*
* @return string the webdriver string to use with selenium
*
* @since version
* @throws \Codeception\Exception\ConfigurationException
*/
public function getWebdriver()
{
$suiteConfig = $this->getSuiteConfig();
$codeceptMainConfig = \Codeception\Configuration::config();
$browser = $suiteConfig['modules']['config']['JoomlaBrowser']['browser'];
if ($browser == 'chrome')
{
$driver['type'] = 'webdriver.chrome.driver';
}
elseif ($browser == 'firefox')
{
$driver['type'] = 'webdriver.gecko.driver';
}
elseif ($browser == 'MicrosoftEdge')
{
$driver['type'] = 'webdriver.edge.driver';
// Check if we are using Windows Insider builds
if ($suiteConfig['modules']['config']['AcceptanceHelper']['MicrosoftEdgeInsiders'])
{
$browser = 'MicrosoftEdgeInsiders';
}
}
elseif ($browser == 'internet explorer')
{
$driver['type'] = 'webdriver.ie.driver';
}
// Check if we have a path for this browser and OS in the codeception settings
if (isset($codeceptMainConfig['webdrivers'][$browser][$this->getOs()]))
{
$driverPath = $codeceptMainConfig['webdrivers'][$browser][$this->getOs()];
}
else
{
$this->yell(
print_r($codeceptMainConfig) .
'No driver for your browser. Check your browser in acceptance.suite.yml and the webDrivers in codeception.yml');
// We can't do anything without a driver, exit
exit(1);
}
$driver['path'] = $driverPath;
return '-D' . implode('=', $driver);
}
/**
* Get the suite configuration
*
* @param string $suite The suite
*
* @return array
*/
private function getSuiteConfig($suite = 'acceptance')
{
if (!$this->suiteConfig)
{
$this->suiteConfig = Symfony\Component\Yaml\Yaml::parse(file_get_contents("tests/{$suite}.suite.yml"));
}
return $this->suiteConfig;
}
/**
* Return the os name
*
* @return string
*
* @since version
*/
private function getOs()
{
$os = php_uname('s');
if (strpos(strtolower($os), 'windows') !== false)
{
$os = 'windows';
}
// Who have thought that Mac is actually Darwin???
elseif (strpos(strtolower($os), 'darwin') !== false)
{
$os = 'mac';
}
else
{
$os = 'linux';
}
return $os;
}
/**
* Update Version __DEPLOY_VERSION__ in Weblinks. (Set the version up in the jorobo.ini)
*
* @return void
*/
public function bump()
{
(new \Joomla\Jorobo\Tasks\BumpVersion())->run();
}
/**
* Map into Joomla installation.
*
* @param String $target The target joomla instance
*
* @return void
* @since __DEPLOY_VERSION__
*
*/
public function map($target)
{
(new \Joomla\Jorobo\Tasks\Map($target))->run();
}
}

View File

@ -1,5 +0,0 @@
# The release version for the extension package.
version=3.4.1
# The name of the package.
package=weblinks

115
build.xml
View File

@ -1,115 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="Weblinks" default="make" basedir=".">
<tstamp>
<format property="build.date" pattern="%Y-%m-%d" />
</tstamp>
<property file="build.ini" />
<target name="help">
<echo>Use `$ phing -l` to list the available targets.</echo>
</target>
<target name="make-dev" description="Builds the extension release package for development testing." depends="rebuild-extension-archives">
<echo msg="Deleting old development build." />
<delete quiet="yes" includeemptydirs="true">
<fileset dir="releases">
<include name="pkg_${package}_dev.zip" />
</fileset>
</delete>
<echo msg="Making the development ${package} package ." />
<zip destfile="releases/pkg_${package}_dev.zip">
<fileset dir="build">
<include name="**" />
</fileset>
</zip>
</target>
<target name="make" description="Builds the extension release package for a version." depends="rebuild-extension-archives">
<echo msg="Making the ${package} package for version ${version}." />
<zip destfile="releases/pkg_${package}_${version}.zip">
<fileset dir="build">
<include name="**" />
</fileset>
</zip>
</target>
<target name="rebuild-extension-archives" description="Rebuilds the archive (zip) files for each extension.">
<mkdir dir="build" />
<mkdir dir="releases" />
<echo msg="Cleaning build directory." />
<delete quiet="yes" includeemptydirs="true">
<fileset dir="*">
<include name="build" />
</fileset>
</delete>
<echo msg="Creating extension archives (zip files)." />
<foreach param="extension" target="build-archive">
<fileset dir="src">
<include name="com_*" />
<include name="mod_*" />
<include name="plg_*" />
<include name="tpl_*" />
</fileset>
</foreach>
<copy todir="build" >
<fileset dir="src">
<include name="language/**" />
<include name="pkg_${package}.xml" />
</fileset>
</copy>
</target>
<target name="build-archive" description="Builds an archive for a single extension.">
<zip destfile="build/${extension}.zip" basedir="src/${extension}" />
</target>
<target name="replace-deploy-version" description="Replaces the `__DEPLOY_VERSION__` markers with a designated tag and commits the changes.">
<echo>Replacing "__DEPLOY_VERSION__" with "${version}".</echo>
<reflexive>
<fileset dir=".">
<include pattern="*.md" />
<include pattern="src/**/*.php" />
</fileset>
<filterchain>
<replaceregexp>
<regexp pattern="__DEPLOY_VERSION__" replace="${version}"/>
</replaceregexp>
</filterchain>
</reflexive>
</target>
<target name="tag" description="Tags the repository using git.">
<gitcommit repository="." message="Tagging release `${version}`." allFiles="true" />
<gittag repository="." name="${version}" annotate="true" message="${version}" />
<!--<gitpush repository="." all="true" />-->
<echo>Push tags manually with `$ git push --tags origin`.</echo>
</target>
<target name="set-version" description="Sets the &lt;version&gt; tag in all XML files with the version from the build.ini file.">
<phingcall target="replace-xml">
<property name="tag" value="version" />
<property name="tagValue" value="${version}" />
</phingcall>
</target>
<target name="replace-xml" description="[PRIVATE] Sets an XML tag with a new value.">
<echo message="Replacing '${tag}' tag with '${tagValue}'."/>
<reflexive>
<fileset dir=".">
<include pattern="src/**/*.xml" />
</fileset>
<filterchain>
<replaceregexp>
<regexp pattern="&lt;${tag}&gt;(.*?)&lt;/${tag}&gt;"
replace="&lt;${tag}&gt;${tagValue}&lt;/${tag}&gt;"/>
</replaceregexp>
</filterchain>
</reflexive>
</target>
</project>

View File

@ -8,10 +8,16 @@ settings:
bootstrap: _bootstrap.php
colors: true
memory_limit: 1024M
modules:
config:
Db:
dsn: ''
user: ''
password: ''
dump: tests/_data/dump.sql
webdrivers:
firefox:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\gecko\windows\geckodriver64.exe
mac: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/gecko/mac/geckodriver
linux: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/gecko/linux/geckodriver
chrome:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\chrome\windows\chromedriver.exe
mac: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/chrome/mac/chromedriver
linux: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/chrome/linux/chromedriver
internet explorer:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\internet-explorer32\IEDriverServer.exe
MicrosoftEdge:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\edge\msedgedriver64.exe

View File

@ -1,14 +1,25 @@
{
"name" : "joomla-extensions/weblinks",
"description": "The Open Source PHP Framework for creating complex Joomla extensions",
"license" : "GPL-2.0+",
"license" : "GPL-2.0-or-later",
"config": {
"platform": {
"php": "5.6.0"
}
},
"require" : {
"php": ">=5.3.10"
"php": "^5.3.10|^7.0"
},
"require-dev": {
"codeception/codeception": "2.0.13",
"joomla-projects/joomla-browser": "dev-develop",
"codegyre/robo": "~0.5",
"joomla-projects/robo": "dev-master"
"php": ">=5.6",
"codeception/codeception": "^3",
"phpunit/phpunit": "^5.7.27",
"joomla-projects/joomla-browser": "^3.9",
"consolidation/robo": "^1.0.0",
"joomla-projects/joomla-testing-robo": "~1.0",
"joomla-projects/selenium-server-standalone": "^3.14",
"fzaninotto/faker": "^1.6",
"joomla-projects/jorobo": "~0.7",
"behat/gherkin": "^4.4.1"
}
}

6226
composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

12
docs/README.md Normal file
View File

@ -0,0 +1,12 @@
## How to install the weblinks extension
1. Download the last version of the the weblinks package from: https://github.com/joomla-extensions/weblinks/releases/latest
2. Install the package file over the normal Joomla! installer
3. As we also support the core updater any update will be shown in the updater too.
## I only need some parts of the package
1. Download the last version of the the weblinks package from: https://github.com/joomla-extensions/weblinks/releases/latest
2. Unzip that package
3. Install the parts over the normal Joomla! installer
4. Please note that the updater only work if you instal the complete package.

38
jorobo.dist.ini Normal file
View File

@ -0,0 +1,38 @@
extension = weblinks
version = 3.9.0
source = src
target = package
; Create a pre-release of the extension on GitHub
; Add your personal GitHub access tocken
; and add Release to the target (separated by space) above
[github]
remote = origin
branch = develop
token =
owner = joomla-extensions
repository = weblinks
changelog_source = commits
; Automatic upload of the built extension package to an FTP server
[ftp]
host =
port = 21
user =
password =
ssl = false
target = /
; Adds / replaces copyright headers at the beginning of files in the source folder
[header]
files = php,js
exclude =
text = "
/**
* @package Joomla.Administrator
* @subpackage Weblinks
*
* @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
"

View File

@ -5,13 +5,54 @@
<description>Joomla! CMS Weblinks Package</description>
<element>pkg_weblinks</element>
<type>package</type>
<version>3.4.1</version>
<client>0</client>
<client_id>0</client_id>
<infourl title="Weblinks Extension Package">https://github.com/joomla-extensions/weblinks/releases/tag/3.4.1</infourl>
<version>3.7.0</version>
<client>site</client>
<infourl title="Weblinks Extension Package">https://github.com/joomla-extensions/weblinks/releases/tag/3.7.0</infourl>
<downloads>
<downloadurl type="full" format="zip">https://github.com/joomla-extensions/weblinks/releases/download/3.4.1/pkg_weblinks_3.4.1.zip</downloadurl>
<downloadurl type="full" format="zip">https://downloads.joomla.org/extensions/weblinks/3-7-0/pkg-weblinks-3.7.0.zip</downloadurl>
</downloads>
<targetplatform name="joomla" version="3.4" />
<targetplatform name="joomla" version="3.[678]" />
</update>
<update>
<name>Weblinks Extension Package</name>
<description>Joomla! CMS Weblinks Package</description>
<element>pkg_weblinks</element>
<type>package</type>
<version>3.9.0</version>
<client>site</client>
<infourl title="Weblinks Extension Package">https://github.com/joomla-extensions/weblinks/releases/tag/3.9.0</infourl>
<downloads>
<downloadurl type="full" format="zip">https://downloads.joomla.org/extensions/weblinks/3-9-0/pkg-weblinks-3.9.0.zip</downloadurl>
</downloads>
<sha512>99baa8a622da239b2a0b84414836c494e68b5ff2d1eba2030fccc9d929645a45f7a2459ce2261846a10922f4b77bc6e0f26d34adc1afffb62e51fe45e8f44b53</sha512>
<targetplatform name="joomla" version="((3\.(9|10))|(4\.[01234]))" />
</update>
<update>
<name>Weblinks Extension Package</name>
<description>Joomla! CMS Weblinks Package</description>
<element>pkg_weblinks</element>
<type>package</type>
<version>4.0.1</version>
<client>site</client>
<infourl title="Weblinks Extension Package">https://github.com/joomla-extensions/weblinks/releases/tag/4.0.1</infourl>
<downloads>
<downloadurl type="full" format="zip">https://downloads.joomla.org/extensions/weblinks/4-0-1/pkg-weblinks-4.0.1.zip</downloadurl>
</downloads>
<sha512>8e6ac146d9bf907971a25728f4ed6cfad900ab51d1bf33a157f11b42bfcb8b7dfbc6c21c9eeebfe2cf572220db33f73fa29807f3d350220ed4e73b09866dcdad</sha512>
<targetplatform name="joomla" version="((4\.[01234])|(5\.0))" />
</update>
<update>
<name>Weblinks Extension Package</name>
<description>Joomla! CMS Weblinks Package</description>
<element>pkg_weblinks</element>
<type>package</type>
<version>4.3.1</version>
<client>site</client>
<infourl title="Weblinks Extension Package">https://github.com/joomla-extensions/weblinks/releases/tag/4.3.1</infourl>
<downloads>
<downloadurl type="full" format="zip">https://downloads.joomla.org/extensions/weblinks/4-3-1/pkg-weblinks-4.3.1.zip</downloadurl>
</downloads>
<sha512>cbc02c3a4d915b2a4b69d5b425cb22b93c2dadd72829e1dac8f3cd55c2deb4ab4cb244ca75a956dd335c861daa2a17a769390e7cab90988501c16417afefb72f</sha512>
<targetplatform name="joomla" version="((4\.[34])|(5\.[01234]))" />
</update>
</updates>

18
renovate.json Normal file
View File

@ -0,0 +1,18 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base",
":preserveSemverRanges",
":disableMajorUpdates"
],
"versioning": "semver",
"dependencyDashboard": true,
"lockFileMaintenance": { "enabled": true },
"composerIgnorePlatformReqs": ["ext-*", "lib-*"],
"rangeStrategy": "update-lockfile",
"baseBranches": ["master", "4.0-dev"],
"constraints": {
"composer": "> 2.3",
"npm": "> 8.0"
}
}

View File

@ -9,6 +9,7 @@
<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" />
<action name="core.edit.value" title="JACTION_EDITVALUE" description="JACTION_EDITVALUE_COMPONENT_DESC" />
</section>
<section name="category">
<action name="core.create" title="JACTION_CREATE" description="COM_CATEGORIES_ACCESS_CREATE_DESC" />
@ -17,4 +18,18 @@
<action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" />
</section>
<section name="fieldgroup">
<action name="core.create" title="JACTION_CREATE" description="COM_FIELDS_GROUP_PERMISSION_CREATE_DESC" />
<action name="core.delete" title="JACTION_DELETE" description="COM_FIELDS_GROUP_PERMISSION_DELETE_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="COM_FIELDS_GROUP_PERMISSION_EDIT_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_FIELDS_GROUP_PERMISSION_EDITSTATE_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="COM_FIELDS_GROUP_PERMISSION_EDITOWN_DESC" />
<action name="core.edit.value" title="JACTION_EDITVALUE" description="COM_FIELDS_GROUP_PERMISSION_EDITVALUE_DESC" />
</section>
<section name="field">
<action name="core.delete" title="JACTION_DELETE" description="COM_FIELDS_FIELD_PERMISSION_DELETE_DESC" />
<action name="core.edit" title="JACTION_EDIT" description="COM_FIELDS_FIELD_PERMISSION_EDIT_DESC" />
<action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_FIELDS_FIELD_PERMISSION_EDITSTATE_DESC" />
<action name="core.edit.value" title="JACTION_EDITVALUE" description="COM_FIELDS_FIELD_PERMISSION_EDITVALUE_DESC" />
</section>
</access>

View File

@ -0,0 +1,462 @@
<?xml version="1.0" encoding="utf-8"?>
<config>
<fieldset
name="component"
label="COM_WEBLINKS_COMPONENT_LABEL"
description="COM_WEBLINKS_COMPONENT_DESC"
>
<field
name="captcha"
type="plugins"
label="COM_WEBLINKS_FIELD_CAPTCHA_LABEL"
description="COM_WEBLINKS_FIELD_CAPTCHA_DESC"
default=""
folder="captcha"
filter="cmd"
>
<option value="">JOPTION_USE_DEFAULT</option>
<option value="0">JOPTION_DO_NOT_USE</option>
</field>
<field
name="target"
type="list"
default="0"
description="COM_WEBLINKS_FIELD_TARGET_DESC"
label="COM_WEBLINKS_FIELD_TARGET_LABEL"
>
<option value="0">JBROWSERTARGET_PARENT</option>
<option value="1">JBROWSERTARGET_NEW</option>
<option value="2">JBROWSERTARGET_POPUP</option>
<option value="3">JBROWSERTARGET_MODAL</option>
</field>
<field
name="save_history"
type="radio"
class="btn-group btn-group-yesno"
default="0"
label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL"
description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="history_limit"
type="text"
filter="integer"
label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL"
description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC"
default="5"
showon="save_history:1"
/>
<field
name="count_clicks"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="COM_WEBLINKS_FIELD_COUNTCLICKS_LABEL"
description="COM_WEBLINKS_FIELD_COUNTCLICKS_DESC"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="spacer1"
type="spacer"
hr="true"
/>
<field
name="icons"
type="list"
default="1"
label="COM_WEBLINKS_FIELD_ICON_LABEL"
description="COM_WEBLINKS_FIELD_ICON_DESC"
filter="integer"
>
<option value="0">COM_WEBLINKS_FIELD_ICON_OPTION_TEXT</option>
<option value="1">COM_WEBLINKS_FIELD_ICON_OPTION_ICON</option>
<option value="2">COM_WEBLINKS_FIELD_ICON_OPTION_WEBLINK</option>
</field>
<field
name="link_icons"
type="media"
description="COM_WEBLINKS_FIELD_CONFIG_ICON_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_ICON_LABEL"
/>
<field
name="spacer2"
type="spacer"
hr="true"
/>
<field
name="float_first"
type="list"
label="COM_WEBLINKS_FLOAT_FIRST_LABEL"
description="COM_WEBLINKS_FLOAT_FIRST_DESC"
>
<option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option>
</field>
<field
name="float_second"
type="list"
label="COM_WEBLINKS_FLOAT_SECOND_LABEL"
description="COM_WEBLINKS_FLOAT_SECOND_DESC"
>
<option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option>
</field>
<field
name="spacer3"
type="spacer"
hr="true"
/>
<field
id="show_tags"
name="show_tags"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="COM_WEBLINKS_FIELD_SHOW_TAGS_LABEL"
description="COM_WEBLINKS_FIELD_SHOW_TAGS_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset
name="category"
label="JCATEGORY"
description="COM_WEBLINKS_CATEGORY_DESC"
>
<field
name="category_layout"
type="componentlayout"
label="JGLOBAL_FIELD_LAYOUT_LABEL"
description="JGLOBAL_FIELD_LAYOUT_DESC"
menuitems="true"
extension="com_weblinks"
view="category"
/>
<field
name="show_category_title"
type="radio"
class="btn-group btn-group-yesno"
label="JGLOBAL_SHOW_CATEGORY_TITLE"
description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC"
default="1"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_description"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_description_image"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL"
description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="maxLevel"
type="list"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
default="-1"
>
<option value="0">JNONE</option>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field
name="show_empty_categories"
type="radio"
class="btn-group btn-group-yesno"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
default="0"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_subcat_desc"
type="radio"
class="btn-group btn-group-yesno"
default="1"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_cat_num_links"
type="radio"
class="btn-group btn-group-yesno"
default="1"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_cat_tags"
type="radio"
label="COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_LABEL"
description="COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_DESC"
class="btn-group btn-group-yesno"
default="1"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset
name="categories"
label="JCATEGORIES"
description="COM_WEBLINKS_CATEGORIES_DESC"
>
<field
name="show_base_description"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL"
description="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="maxLevelcat"
type="list"
default="-1"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field
name="show_empty_categories_cat"
type="radio"
class="btn-group btn-group-yesno"
default="0"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_subcat_desc_cat"
type="radio"
class="btn-group btn-group-yesno"
default="1"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_cat_num_links_cat"
type="radio"
class="btn-group btn-group-yesno"
default="1"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset
name="list_layout"
label="JGLOBAL_LIST_LAYOUT_OPTIONS"
description="COM_WEBLINKS_LIST_LAYOUT_DESC"
>
<field
name="filter_field"
type="list"
default="1"
description="JGLOBAL_FILTER_FIELD_DESC"
label="JGLOBAL_FILTER_FIELD_LABEL"
>
<option value="1">JSHOW</option>
<option value="hide">JHIDE</option>
</field>
<field
name="show_pagination_limit"
type="radio"
default="1"
class="btn-group btn-group-yesno"
label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_headings"
type="radio"
default="1"
class="btn-group btn-group-yesno"
description="JGLOBAL_SHOW_HEADINGS_DESC"
label="JGLOBAL_SHOW_HEADINGS_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_link_description"
type="radio"
default="1"
class="btn-group btn-group-yesno"
description="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_link_hits"
type="radio"
class="btn-group btn-group-yesno"
default="1"
description="COM_WEBLINKS_FIELD_CONFIG_HITS_DESC"
label="JGLOBAL_HITS"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="show_pagination"
type="list"
default="2"
label="JGLOBAL_PAGINATION_LABEL"
description="JGLOBAL_PAGINATION_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
<option value="2">JGLOBAL_AUTO</option>
</field>
<field
name="show_pagination_results"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_PAGINATION_RESULTS_LABEL"
description="JGLOBAL_PAGINATION_RESULTS_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset
name="integration"
label="JGLOBAL_INTEGRATION_LABEL"
description="COM_WEBLINKS_CONFIG_INTEGRATION_SETTINGS_DESC"
>
<field
name="show_feed_link"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_SHOW_FEED_LINK_LABEL"
description="JGLOBAL_SHOW_FEED_LINK_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field
name="custom_fields_enable"
type="radio"
label="JGLOBAL_CUSTOM_FIELDS_ENABLE_LABEL"
description="JGLOBAL_CUSTOM_FIELDS_ENABLE_DESC"
default="0"
class="btn-group btn-group-yesno"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
</fieldset>
<fieldset
name="permissions"
description="JCONFIG_PERMISSIONS_DESC"
label="JCONFIG_PERMISSIONS_LABEL"
>
<field
name="rules"
type="rules"
component="com_weblinks"
filter="rules"
validate="rules"
label="JCONFIG_PERMISSIONS_LABEL"
section="component"
/>
</fieldset>
</config>

View File

@ -1,9 +1,9 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -19,14 +19,15 @@ class WeblinksController extends JControllerLegacy
/**
* Method to display a view.
*
* @param boolean $cachable If true, the view output will be cached
* @param array $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}.
* @param boolean $cacheable If true, the view output will be cached
* @param array $urlparams An array of safe url parameters and their variable types,
* for valid values see {@link JFilterInput::clean()}.
*
* @return JControllerLegacy This object to support chaining.
*
* @since 1.5
*/
public function display($cachable = false, $urlparams = false)
public function display($cacheable = false, $urlparams = false)
{
require_once JPATH_COMPONENT . '/helpers/weblinks.php';

View File

@ -1,14 +1,16 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Utilities\ArrayHelper;
/**
* Weblink controller class.
*
@ -27,14 +29,13 @@ class WeblinksControllerWeblink extends JControllerForm
*/
protected function allowAdd($data = array())
{
$user = JFactory::getUser();
$categoryId = JArrayHelper::getValue($data, 'catid', $this->input->getInt('filter_category_id'), 'int');
$categoryId = ArrayHelper::getValue($data, 'catid', $this->input->getInt('filter_category_id'), 'int');
$allow = null;
if ($categoryId)
{
// If the category has been passed in the URL check it.
$allow = $user->authorise('core.create', $this->option . '.category.' . $categoryId);
$allow = JFactory::getUser()->authorise('core.create', $this->option . '.category.' . $categoryId);
}
if ($allow !== null)
@ -59,21 +60,29 @@ class WeblinksControllerWeblink extends JControllerForm
protected function allowEdit($data = array(), $key = 'id')
{
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
$categoryId = 0;
if ($recordId)
// Since there is no asset tracking, fallback to the component permissions.
if (!$recordId)
{
$categoryId = (int) $this->getModel()->getItem($recordId)->catid;
return parent::allowEdit($data, $key);
}
if ($categoryId)
// Get the item.
$item = $this->getModel()->getItem($recordId);
// Since there is no item, return false.
if (empty($item))
{
// The category has been set. Check the category permissions.
return JFactory::getUser()->authorise('core.edit', $this->option . '.category.' . $categoryId);
return false;
}
// Since there is no asset tracking, revert to the component permissions.
return parent::allowEdit($data, $key);
$user = JFactory::getUser();
// Check if can edit own core.edit.own.
$canEditOwn = $user->authorise('core.edit.own', $this->option . '.category.' . (int) $item->catid) && $item->created_by == $user->id;
// Check the category core.edit permissions.
return $canEditOwn || $user->authorise('core.edit', $this->option . '.category.' . (int) $item->catid);
}
/**
@ -104,9 +113,9 @@ class WeblinksControllerWeblink extends JControllerForm
* @param JModelLegacy $model The data model object.
* @param array $validData The validated data.
*
* @return void
* @return void
*
* @since 1.6
* @since 1.6
*/
protected function postSaveHook(JModelLegacy $model, $validData = array())
{

View File

@ -1,9 +1,9 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

View File

@ -0,0 +1,192 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Utilities\ArrayHelper;
JTable::addIncludePath(__DIR__ . '/../tables');
/**
* Content associations helper.
*
* @since __DEPLOY_VERSION__
*/
class WeblinksAssociationsHelper extends JAssociationExtensionHelper
{
/**
* The extension name
*
* @var array $extension
*
* @since __DEPLOY_VERSION__
*/
protected $extension = 'com_weblinks';
/**
* Array of item types
*
* @var array $itemTypes
*
* @since __DEPLOY_VERSION__
*/
protected $itemTypes = array('weblink', 'category');
/**
* Has the extension association support
*
* @var boolean $associationsSupport
*
* @since __DEPLOY_VERSION__
*/
protected $associationsSupport = true;
/**
* Get the associated items for an item
*
* @param string $typeName The item type
* @param int $id The id of item for which we need the associated items
*
* @return array
*
* @since __DEPLOY_VERSION__
*/
public function getAssociations($typeName, $id)
{
$type = $this->getType($typeName);
$context = $this->extension . '.item';
$catidField = 'catid';
if ($typeName === 'category')
{
$context = 'com_categories.item';
$catidField = '';
}
// Get the associations.
$associations = JLanguageAssociations::getAssociations(
$this->extension,
$type['tables']['a'],
$context,
$id,
'id',
'alias',
$catidField
);
return $associations;
}
/**
* Get item information
*
* @param string $typeName The item type
* @param int $id The id of item for which we need the associated items
*
* @return JTable|null
*
* @since __DEPLOY_VERSION__
*/
public function getItem($typeName, $id)
{
if (empty($id))
{
return null;
}
$table = null;
switch ($typeName)
{
case 'weblink':
$table = JTable::getInstance('Weblink', 'WeblinksTable');
break;
case 'category':
$table = JTable::getInstance('Category');
break;
}
if (empty($table))
{
return null;
}
$table->load($id);
return $table;
}
/**
* Get information about the type
*
* @param string $typeName The item type
*
* @return array Array of item types
*
* @since __DEPLOY_VERSION__
*/
public function getType($typeName = '')
{
$fields = $this->getFieldsTemplate();
$tables = array();
$joins = array();
$support = $this->getSupportTemplate();
$title = '';
if (in_array($typeName, $this->itemTypes))
{
switch ($typeName)
{
case 'weblink':
$support['state'] = true;
$support['acl'] = true;
$support['checkout'] = true;
$support['category'] = true;
$support['save2copy'] = true;
$tables = array(
'a' => '#__weblinks'
);
$title = 'weblink';
break;
case 'category':
$fields['created_user_id'] = 'a.created_user_id';
$fields['ordering'] = 'a.lft';
$fields['level'] = 'a.level';
$fields['catid'] = '';
$fields['state'] = 'a.published';
$support['state'] = true;
$support['acl'] = true;
$support['checkout'] = true;
$support['level'] = true;
$tables = array(
'a' => '#__categories'
);
$title = 'category';
break;
}
}
return array(
'fields' => $fields,
'support' => $support,
'tables' => $tables,
'joins' => $joins,
'title' => $title
);
}
}

View File

@ -0,0 +1,94 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Utilities\ArrayHelper;
JLoader::register('WeblinksHelper', JPATH_ADMINISTRATOR . '/components/com_weblinks/helpers/weblinks.php');
/**
* Weblink HTML helper class.
*
* @since __DELPOY_VERSION__
*/
abstract class JHtmlWeblink
{
/**
* Get the associated language flags
*
* @param integer $weblinkid The item id to search associations
*
* @return string The language HTML
*
* @throws Exception
*
* @since ___DEPLOY_VERSION__
*/
public static function association($weblinkid)
{
// Defaults
$html = '';
$associations = JLanguageAssociations::getAssociations('com_weblinks', '#__weblinks', 'com_weblinks.item', $weblinkid);
// Get the associations
if ($associations)
{
foreach ($associations as $tag => $associated)
{
$associations[$tag] = (int) $associated->id;
}
// Get the associated weblinks items
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('c.id, c.title as title')
->select('l.sef as lang_sef, lang_code')
->from('#__weblinks as c')
->select('cat.title as category_title')
->join('LEFT', '#__categories as cat ON cat.id=c.catid')
->where('c.id IN (' . implode(',', array_values($associations)) . ')')
->join('LEFT', '#__languages as l ON c.language=l.lang_code')
->select('l.image')
->select('l.title as language_title');
$db->setQuery($query);
try
{
$items = $db->loadObjectList('id');
}
catch (RuntimeException $e)
{
throw new Exception($e->getMessage(), 500, $e);
}
if ($items)
{
foreach ($items as &$item)
{
$text = strtoupper($item->lang_sef);
$url = JRoute::_('index.php?option=com_weblinks&task=weblink.edit&id=' . (int) $item->id);
$tooltip = htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8') . '<br />' . JText::sprintf('JCATEGORY_SPRINTF', $item->category_title);
$classes = 'hasPopover label label-association label-' . $item->lang_sef;
$item->link = '<a href="' . $url . '" title="' . $item->language_title . '" class="' . $classes
. '" data-content="' . $tooltip . '" data-placement="top">'
. $text . '</a>';
}
}
JHtml::_('bootstrap.popover');
$html = JLayoutHelper::render('joomla.content.associations', $items);
}
return $html;
}
}

View File

@ -0,0 +1,169 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Weblinks helper.
*
* @since 1.6
*/
class WeblinksHelper extends JHelperContent
{
/**
* Configure the Linkbar.
*
* @param string $vName The name of the active view.
*
* @return void
*
* @since 1.6
*/
public static function addSubmenu($vName = 'weblinks')
{
JHtmlSidebar::addEntry(
JText::_('COM_WEBLINKS_SUBMENU_WEBLINKS'),
'index.php?option=com_weblinks&view=weblinks',
$vName == 'weblinks'
);
JHtmlSidebar::addEntry(
JText::_('COM_WEBLINKS_SUBMENU_CATEGORIES'),
'index.php?option=com_categories&extension=com_weblinks',
$vName == 'categories'
);
if (JComponentHelper::isEnabled('com_fields') && JComponentHelper::getParams('com_weblinks')->get('custom_fields_enable', '1'))
{
JHtmlSidebar::addEntry(
JText::_('JGLOBAL_FIELDS'),
'index.php?option=com_fields&context=com_weblinks.weblink',
$vName == 'fields.fields'
);
JHtmlSidebar::addEntry(
JText::_('JGLOBAL_FIELD_GROUPS'),
'index.php?option=com_fields&view=groups&context=com_weblinks.weblink',
$vName == 'fields.groups'
);
}
}
/**
* Adds Count Items for WebLinks Category Manager.
*
* @param stdClass[] &$items The weblinks category objects.
*
* @return stdClass[] The weblinks category objects.
*
* @since 3.6.0
*/
public static function countItems(&$items)
{
$db = JFactory::getDbo();
foreach ($items as $item)
{
$item->count_trashed = 0;
$item->count_archived = 0;
$item->count_unpublished = 0;
$item->count_published = 0;
$query = $db->getQuery(true)
->select('state, COUNT(*) AS count')
->from($db->qn('#__weblinks'))
->where($db->qn('catid') . ' = ' . (int) $item->id)
->group('state');
$db->setQuery($query);
$weblinks = $db->loadObjectList();
foreach ($weblinks as $weblink)
{
if ($weblink->state == 1)
{
$item->count_published = $weblink->count;
}
elseif ($weblink->state == 0)
{
$item->count_unpublished = $weblink->count;
}
elseif ($weblink->state == 2)
{
$item->count_archived = $weblink->count;
}
elseif ($weblink->state == -2)
{
$item->count_trashed = $weblink->count;
}
}
}
return $items;
}
/**
* Adds Count Items for Tag Manager.
*
* @param stdClass[] &$items The weblink tag objects
* @param string $extension The name of the active view.
*
* @return stdClass[]
*
* @since 3.7.0
*/
public static function countTagItems(&$items, $extension)
{
$db = JFactory::getDbo();
foreach ($items as $item)
{
$item->count_trashed = 0;
$item->count_archived = 0;
$item->count_unpublished = 0;
$item->count_published = 0;
$query = $db->getQuery(true);
$query->select('published as state, count(*) AS count')
->from($db->qn('#__contentitem_tag_map') . 'AS ct ')
->where('ct.tag_id = ' . (int) $item->id)
->where('ct.type_alias =' . $db->q($extension))
->join('LEFT', $db->qn('#__categories') . ' AS c ON ct.content_item_id=c.id')
->group('state');
$db->setQuery($query);
$weblinks = $db->loadObjectList();
foreach ($weblinks as $weblink)
{
if ($weblink->state == 1)
{
$item->count_published = $weblink->count;
}
if ($weblink->state == 0)
{
$item->count_unpublished = $weblink->count;
}
if ($weblink->state == 2)
{
$item->count_archived = $weblink->count;
}
if ($weblink->state == -2)
{
$item->count_trashed = $weblink->count;
}
}
}
return $items;
}
}

View File

@ -0,0 +1,266 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('JPATH_BASE') or die;
/**
* Supports a modal weblink picker.
*
* @since __DEPLOY_VERSION__
*/
class JFormFieldModal_Weblink extends JFormField
{
/**
* The form field type.
*
* @var string
* @since __DEPLOY_VERSION__
*/
protected $type = 'Modal_Weblink';
/**
* Method to get the field input markup.
*
* @return string The field input markup.
*
* @since __DEPLOY_VERSION__
*/
protected function getInput()
{
$allowNew = ((string) $this->element['new'] == 'true');
$allowEdit = ((string) $this->element['edit'] == 'true');
$allowClear = ((string) $this->element['clear'] != 'false');
$allowSelect = ((string) $this->element['select'] != 'false');
// Load language
JFactory::getLanguage()->load('com_weblinks', JPATH_ADMINISTRATOR);
// The active weblink id field.
$value = (int) $this->value > 0 ? (int) $this->value : '';
// Create the modal id.
$modalId = 'Weblink_' . $this->id;
// Add the modal field script to the document head.
JHtml::_('jquery.framework');
JHtml::_('script', 'system/modal-fields.js', array('version' => 'auto', 'relative' => true));
// Script to proxy the select modal function to the modal-fields.js file.
if ($allowSelect)
{
static $scriptSelect = null;
if (is_null($scriptSelect))
{
$scriptSelect = array();
}
if (!isset($scriptSelect[$this->id]))
{
JFactory::getDocument()->addScriptDeclaration("
function jSelectWeblink_" . $this->id . "(id, title, catid, object, url, language) {
window.processModalSelect('Weblink', '" . $this->id . "', id, title, catid, object, url, language);
}
"
);
$scriptSelect[$this->id] = true;
}
}
// Setup variables for display.
$linkWeblinks = 'index.php?option=com_weblinks&amp;view=weblinks&amp;layout=modal&amp;tmpl=component&amp;' . JSession::getFormToken() . '=1';
$linkWeblink = 'index.php?option=com_weblinks&amp;view=weblink&amp;layout=modal&amp;tmpl=component&amp;' . JSession::getFormToken() . '=1';
$modalTitle = JText::_('COM_WEBLINKS_CHANGE_WEBLINK');
if (isset($this->element['language']))
{
$linkWeblinks .= '&amp;forcedLanguage=' . $this->element['language'];
$linkWeblink .= '&amp;forcedLanguage=' . $this->element['language'];
$modalTitle .= ' &#8212; ' . $this->element['label'];
}
$urlSelect = $linkWeblinks . '&amp;function=jSelectWeblink_' . $this->id;
$urlEdit = $linkWeblink . '&amp;task=weblink.edit&amp;id=\' + document.getElementById("' . $this->id . '_id").value + \'';
$urlNew = $linkWeblink . '&amp;task=weblink.add';
if ($value)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName('title'))
->from($db->quoteName('#__weblinks'))
->where($db->quoteName('id') . ' = ' . (int) $value);
$db->setQuery($query);
try
{
$title = $db->loadResult();
}
catch (RuntimeException $e)
{
JError::raiseWarning(500, $e->getMessage());
}
}
$title = empty($title) ? JText::_('COM_WEBLINKS_SELECT_A_WEBLINK') : htmlspecialchars($title, ENT_QUOTES, 'UTF-8');
// The current weblink display field.
$html = '<span class="input-append">';
$html .= '<input class="input-medium" id="' . $this->id . '_name" type="text" value="' . $title . '" disabled="disabled" size="35" />';
// Select weblink button
if ($allowSelect)
{
$html .= '<a'
. ' class="btn hasTooltip' . ($value ? ' hidden' : '') . '"'
. ' id="' . $this->id . '_select"'
. ' data-toggle="modal"'
. ' role="button"'
. ' href="#ModalSelect' . $modalId . '"'
. ' title="' . JHtml::tooltipText('COM_WEBLINKS_CHANGE_WEBLINK') . '">'
. '<span class="icon-file" aria-hidden="true"></span> ' . JText::_('JSELECT')
. '</a>';
}
// New weblink button
if ($allowNew)
{
$html .= '<a'
. ' class="btn hasTooltip' . ($value ? ' hidden' : '') . '"'
. ' id="' . $this->id . '_new"'
. ' data-toggle="modal"'
. ' role="button"'
. ' href="#ModalNew' . $modalId . '"'
. ' title="' . JHtml::tooltipText('COM_WEBLINKS_NEW_WEBLINK') . '">'
. '<span class="icon-new" aria-hidden="true"></span> ' . JText::_('JACTION_CREATE')
. '</a>';
}
// Edit weblink button
if ($allowEdit)
{
$html .= '<a'
. ' class="btn hasTooltip' . ($value ? '' : ' hidden') . '"'
. ' id="' . $this->id . '_edit"'
. ' data-toggle="modal"'
. ' role="button"'
. ' href="#ModalEdit' . $modalId . '"'
. ' title="' . JHtml::tooltipText('COM_WEBLINKS_EDIT_WEBLINK') . '">'
. '<span class="icon-edit" aria-hidden="true"></span> ' . JText::_('JACTION_EDIT')
. '</a>';
}
// Clear weblink button
if ($allowClear)
{
$html .= '<a'
. ' class="btn' . ($value ? '' : ' hidden') . '"'
. ' id="' . $this->id . '_clear"'
. ' href="#"'
. ' onclick="window.processModalParent(\'' . $this->id . '\'); return false;">'
. '<span class="icon-remove" aria-hidden="true"></span>' . JText::_('JCLEAR')
. '</a>';
}
$html .= '</span>';
// Select weblink modal
if ($allowSelect)
{
$html .= JHtml::_(
'bootstrap.renderModal',
'ModalSelect' . $modalId,
array(
'title' => $modalTitle,
'url' => $urlSelect,
'height' => '400px',
'width' => '800px',
'bodyHeight' => '70',
'modalWidth' => '80',
'footer' => '<a role="button" class="btn" data-dismiss="modal" aria-hidden="true">' . JText::_('JLIB_HTML_BEHAVIOR_CLOSE') . '</a>',
)
);
}
// New weblink modal
if ($allowNew)
{
$html .= JHtml::_(
'bootstrap.renderModal',
'ModalNew' . $modalId,
array(
'title' => JText::_('COM_WEBLINKS_NEW_WEBLINK'),
'backdrop' => 'static',
'keyboard' => false,
'closeButton' => false,
'url' => $urlNew,
'height' => '400px',
'width' => '800px',
'bodyHeight' => '70',
'modalWidth' => '80',
'footer' => '<a role="button" class="btn" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'add\', \'weblink\', \'cancel\', \'weblink-form\'); return false;">'
. JText::_('JLIB_HTML_BEHAVIOR_CLOSE') . '</a>'
. '<a role="button" class="btn btn-primary" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'add\', \'weblink\', \'save\', \'weblink-form\'); return false;">'
. JText::_('JSAVE') . '</a>'
. '<a role="button" class="btn btn-success" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'add\', \'weblink\', \'apply\', \'weblink-form\'); return false;">'
. JText::_('JAPPLY') . '</a>',
)
);
}
// Edit weblink modal
if ($allowEdit)
{
$html .= JHtml::_(
'bootstrap.renderModal',
'ModalEdit' . $modalId,
array(
'title' => JText::_('COM_WEBLINKS_EDIT_WEBLINK'),
'backdrop' => 'static',
'keyboard' => false,
'closeButton' => false,
'url' => $urlEdit,
'height' => '400px',
'width' => '800px',
'bodyHeight' => '70',
'modalWidth' => '80',
'footer' => '<a role="button" class="btn" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'edit\', \'weblink\', \'cancel\', \'weblink-form\'); return false;">'
. JText::_('JLIB_HTML_BEHAVIOR_CLOSE') . '</a>'
. '<a role="button" class="btn btn-primary" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'edit\', \'weblink\', \'save\', \'weblink-form\'); return false;">'
. JText::_('JSAVE') . '</a>'
. '<a role="button" class="btn btn-success" aria-hidden="true"'
. ' onclick="window.processModalEdit(this, \'' . $this->id . '\', \'edit\', \'weblink\', \'apply\', \'weblink-form\'); return false;">'
. JText::_('JAPPLY') . '</a>',
)
);
}
// Note: class='required' for client side validation.
$class = $this->required ? ' class="required modal-value"' : '';
$html .= '<input type="hidden" id="' . $this->id . '_id" ' . $class . ' data-required="' . (int) $this->required . '" name="' . $this->name
. '" data-text="' . htmlspecialchars(JText::_('COM_WEBLINKS_SELECT_A_WEBLINK', true), ENT_COMPAT, 'UTF-8') . '" value="' . $value . '" />';
return $html;
}
/**
* Method to get the field label markup.
*
* @return string The field label markup.
*
* @since __DEPLOY_VERSION__
*/
protected function getLabel()
{
return str_replace($this->id, $this->id . '_id', parent::getLabel());
}
}

View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fields name="filter">
<field
name="search"
type="text"
label="COM_WEBLINKS_FILTER_SEARCH_LABEL"
description="COM_WEBLINKS_FILTER_SEARCH_DESC"
hint="JSEARCH_FILTER"
/>
<field
name="published"
type="status"
label="JOPTION_FILTER_PUBLISHED"
description="JOPTION_FILTER_PUBLISHED_DESC"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_PUBLISHED</option>
</field>
<field
name="category_id"
type="category"
label="JOPTION_FILTER_CATEGORY"
description="JOPTION_FILTER_CATEGORY_DESC"
extension="com_weblinks"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_CATEGORY</option>
</field>
<field
name="access"
type="accesslevel"
label="JOPTION_FILTER_ACCESS"
description="JOPTION_FILTER_ACCESS_DESC"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_ACCESS</option>
</field>
<field
name="language"
type="contentlanguage"
label="JOPTION_FILTER_LANGUAGE"
description="JOPTION_FILTER_LANGUAGE_DESC"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_LANGUAGE</option>
<option value="*">JALL</option>
</field>
<field
name="tag"
type="tag"
label="JOPTION_FILTER_TAG"
description="JOPTION_FILTER_TAG_DESC"
mode="nested"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_TAG</option>
</field>
<field
name="level"
type="integer"
label="JOPTION_FILTER_LEVEL"
description="JOPTION_FILTER_LEVEL_DESC"
first="1"
last="10"
step="1"
languages="*"
onchange="this.form.submit();"
>
<option value="">JOPTION_SELECT_MAX_LEVELS</option>
</field>
</fields>
<fields name="list">
<field
name="fullordering"
type="list"
onchange="this.form.submit();"
default="a.title ASC"
>
<option value="">JGLOBAL_SORT_BY</option>
<option value="a.ordering ASC">JGRID_HEADING_ORDERING_ASC</option>
<option value="a.ordering DESC">JGRID_HEADING_ORDERING_DESC</option>
<option value="a.state ASC">JSTATUS_ASC</option>
<option value="a.state DESC">JSTATUS_DESC</option>
<option value="a.title ASC">JGLOBAL_TITLE_ASC</option>
<option value="a.title DESC">JGLOBAL_TITLE_DESC</option>
<option value="category_title ASC">JCATEGORY_ASC</option>
<option value="category_title DESC">JCATEGORY_DESC</option>
<option value="access_level ASC">JGRID_HEADING_ACCESS_ASC</option>
<option value="access_level DESC">JGRID_HEADING_ACCESS_DESC</option>
<option value="a.hits ASC">JGLOBAL_HITS_ASC</option>
<option value="a.hits DESC">JGLOBAL_HITS_DESC</option>
<option value="association ASC" requires="associations">JASSOCIATIONS_ASC</option>
<option value="association DESC" requires="associations">JASSOCIATIONS_DESC</option>
<option value="language_title ASC">JGRID_HEADING_LANGUAGE_ASC</option>
<option value="language_title DESC">JGRID_HEADING_LANGUAGE_DESC</option>
<option value="a.id ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id DESC">JGRID_HEADING_ID_DESC</option>
</field>
<field
name="limit"
type="limitbox"
class="input-mini"
default="25"
onchange="this.form.submit();"
/>
</fields>
</form>

View File

@ -0,0 +1,422 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset
addfieldpath="/administrator/components/com_categories/models/fields"
>
<field
name="id"
type="text"
label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
readonly="true"
class="readonly"
default="0"
/>
<field
name="title"
type="text"
label="JGLOBAL_TITLE"
description="COM_WEBLINKS_FIELD_TITLE_DESC"
class="input-xxlarge input-large-text"
size="40"
required="true"
/>
<field
name="alias"
type="text"
label="JFIELD_ALIAS_LABEL"
description="COM_WEBLINKS_FIELD_ALIAS_DESC"
size="40"
hint="JFIELD_ALIAS_PLACEHOLDER"
/>
<field
name="catid"
type="categoryedit"
label="JCATEGORY"
description="COM_WEBLINKS_FIELD_CATEGORY_DESC"
extension="com_weblinks"
addfieldprefix="Joomla\Component\Categories\Administrator\Field"
required="true"
default=""
/>
<field
name="url"
type="url"
label="COM_WEBLINKS_FIELD_URL_LABEL"
description="COM_WEBLINKS_FIELD_URL_DESC"
class="span12"
filter="url"
size="40"
required="true"
/>
<field
name="description"
type="editor"
label="JGLOBAL_DESCRIPTION"
description="COM_WEBLINKS_FIELD_DESCRIPTION_DESC"
buttons="true"
hide="pagebreak,readmore"
filter="JComponentHelper::filterText"
/>
<field
name="hits"
type="text"
label="JGLOBAL_HITS"
description="COM_WEBLINKS_HITS_DESC"
class="readonly"
size="6"
readonly="true"
filter="unset"
/>
<field
name="state"
type="list"
label="JSTATUS"
description="COM_WEBLINKS_FIELD_STATE_DESC"
class="chzn-color-state"
size="1"
default="1"
>
<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
<option value="2">JARCHIVED</option>
<option value="-3">COM_WEBLINKS_FIELD_VALUE_REPORTED</option>
<option value="-2">JTRASHED</option>
</field>
<field
name="ordering"
type="ordering"
label="JFIELD_ORDERING_LABEL"
description="JFIELD_ORDERING_DESC"
content_type="com_weblinks.weblink"
/>
<field
name="access"
type="accesslevel"
label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC"
size="1"
/>
<field
name="language"
type="contentlanguage"
label="JFIELD_LANGUAGE_LABEL"
description="COM_WEBLINKS_FIELD_LANGUAGE_DESC"
>
<option value="*">JALL</option>
</field>
<field
name="tags"
type="tag"
label="JTAG"
description="JTAG_DESC"
multiple="true"
/>
<field
name="version_note"
type="text"
label="JGLOBAL_FIELD_VERSION_NOTE_LABEL"
description="JGLOBAL_FIELD_VERSION_NOTE_DESC"
size="45"
labelclass="control-label"
/>
<field
name="created"
type="calendar"
label="JGLOBAL_FIELD_CREATED_LABEL"
description="JGLOBAL_FIELD_CREATED_DESC"
size="22"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc"
/>
<field
name="created_by"
type="user"
label="JGLOBAL_FIELD_CREATED_BY_LABEL"
description="JGLOBAL_FIELD_CREATED_BY_Desc"
/>
<field
name="created_by_alias"
type="text"
label="JGLOBAL_FIELD_CREATED_BY_ALIAS_LABEL"
description="JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC"
size="20"
/>
<field
name="modified"
type="calendar"
label="JGLOBAL_FIELD_MODIFIED_LABEL"
description="COM_WEBLINKS_FIELD_MODIFIED_DESC"
class="readonly"
size="22"
readonly="true"
format="%Y-%m-%d %H:%M:%S"
filter="user_utc"
/>
<field
name="modified_by"
type="user"
label="JGLOBAL_FIELD_MODIFIED_BY_LABEL"
class="readonly"
readonly="true"
filter="unset"
/>
<field
name="checked_out"
type="hidden"
filter="unset"
/>
<field
name="checked_out_time"
type="hidden"
filter="unset"
/>
<field
name="publish_up"
type="calendar"
label="JGLOBAL_FIELD_PUBLISH_UP_LABEL"
description="JGLOBAL_FIELD_PUBLISH_UP_DESC"
format="%Y-%m-%d %H:%M:%S"
size="22"
filter="user_utc"
/>
<field
name="publish_down"
type="calendar"
label="JGLOBAL_FIELD_PUBLISH_DOWN_LABEL"
description="JGLOBAL_FIELD_PUBLISH_DOWN_DESC"
format="%Y-%m-%d %H:%M:%S"
size="22"
filter="user_utc"
/>
<field
name="version"
type="text"
label="COM_WEBLINKS_FIELD_VERSION_LABEL"
description="COM_WEBLINKS_FIELD_VERSION_DESC"
class="readonly"
size="6"
readonly="true"
filter="unset"
/>
<field
name="metakey"
type="textarea"
label="JFIELD_META_KEYWORDS_LABEL"
description="JFIELD_META_KEYWORDS_DESC"
rows="3"
cols="30"
/>
<field
name="metadesc"
type="textarea"
label="JFIELD_META_DESCRIPTION_LABEL"
description="JFIELD_META_DESCRIPTION_DESC"
rows="3"
cols="30"
/>
<field
name="xreference"
type="text"
label="JFIELD_XREFERENCE_LABEL"
description="JFIELD_XREFERENCE_DESC"
size="20"
/>
</fieldset>
<fields
name="params"
label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"
>
<fieldset
name="jbasic"
label="COM_WEBLINKS_FIELDSET_OPTIONS"
>
<field
name="target"
type="list"
label="COM_WEBLINKS_FIELD_TARGET_LABEL"
description="COM_WEBLINKS_FIELD_TARGET_DESC"
default=""
useglobal="true"
>
<option value="0">JBROWSERTARGET_PARENT</option>
<option value="1">JBROWSERTARGET_NEW</option>
<option value="2">JBROWSERTARGET_POPUP</option>
<option value="3">JBROWSERTARGET_MODAL</option>
</field>
<field
name="width"
type="text"
label="COM_WEBLINKS_FIELD_WIDTH_LABEL"
description="COM_WEBLINKS_FIELD_WIDTH_DESC"
class="validate-numeric"
/>
<field
name="height"
type="text"
label="COM_WEBLINKS_FIELD_HEIGHT_LABEL"
description="COM_WEBLINKS_FIELD_HEIGHT_DESC"
class="validate-numeric"
/>
<field
name="count_clicks"
type="list"
label="COM_WEBLINKS_FIELD_COUNTCLICKS_LABEL"
description="COM_WEBLINKS_FIELD_COUNTCLICKS_DESC"
class="chzn-color"
useglobal="true"
>
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
</fieldset>
</fields>
<fields
name="images"
>
<fieldset
name="images"
label="JGLOBAL_FIELDSET_IMAGE_OPTIONS"
>
<field
name="image_first"
type="media"
label="COM_WEBLINKS_FIELD_FIRST_LABEL"
description="COM_WEBLINKS_FIELD_FIRST_DESC"
/>
<field
name="float_first"
type="list"
label="COM_WEBLINKS_FLOAT_FIRST_LABEL"
description="COM_WEBLINKS_FLOAT_FIRST_DESC"
useglobal="true"
>
<option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option>
</field>
<field
name="image_first_alt"
type="text"
label="COM_WEBLINKS_FIELD_IMAGE_ALT_LABEL"
description="COM_WEBLINKS_FIELD_IMAGE_ALT_DESC"
size="20"
/>
<field
name="image_first_caption"
type="text"
label="COM_WEBLINKS_FIELD_IMAGE_CAPTION_LABEL"
description="COM_WEBLINKS_FIELD_IMAGE_CAPTION_DESC"
size="20"
/>
<field
name="spacer1"
type="spacer"
hr="true"
/>
<field
name="image_second"
type="media"
label="COM_WEBLINKS_FIELD_SECOND_LABEL"
description="COM_WEBLINKS_FIELD_SECOND_DESC"
/>
<field
name="float_second"
type="list"
label="COM_WEBLINKS_FLOAT_SECOND_LABEL"
description="COM_WEBLINKS_FLOAT_SECOND_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option>
</field>
<field
name="image_second_alt"
type="text"
label="COM_WEBLINKS_FIELD_IMAGE_ALT_LABEL"
description="COM_WEBLINKS_FIELD_IMAGE_ALT_DESC"
size="20"
/>
<field
name="image_second_caption"
type="text"
label="COM_WEBLINKS_FIELD_IMAGE_CAPTION_LABEL"
description="COM_WEBLINKS_FIELD_IMAGE_CAPTION_DESC"
size="20"
/>
</fieldset>
</fields>
<fields
name="metadata"
label="JGLOBAL_FIELDSET_METADATA_OPTIONS"
>
<fieldset
name="jmetadata"
label="JGLOBAL_FIELDSET_METADATA_OPTIONS"
>
<field
name="robots"
type="list"
label="JFIELD_METADATA_ROBOTS_LABEL"
description="JFIELD_METADATA_ROBOTS_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="index, follow">JGLOBAL_INDEX_FOLLOW</option>
<option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option>
<option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option>
<option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option>
</field>
<field
name="rights"
type="text"
label="JFIELD_META_RIGHTS_LABEL"
description="JFIELD_META_RIGHTS_DESC"
required="false"
filter="string"
cols="30"
rows="2"
/>
</fieldset>
</fields>
</form>

View File

@ -1,16 +1,17 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Registry\Registry;
use Joomla\String\String;
JLoader::register('WeblinksHelper', JPATH_ADMINISTRATOR . '/components/com_weblinks/helpers/weblinks.php');
/**
* Weblinks model.
@ -27,6 +28,14 @@ class WeblinksModelWeblink extends JModelAdmin
*/
public $typeAlias = 'com_weblinks.weblink';
/**
* The context used for the associations table
*
* @var string
* @since __DEPLOY_VERSION__
*/
protected $associationsContext = 'com_weblinks.item';
/**
* The prefix to use with controller messages.
*
@ -146,6 +155,12 @@ class WeblinksModelWeblink extends JModelAdmin
$form->setFieldAttribute('publish_down', 'filter', 'unset');
}
// Don't allow to change the created_by user if not allowed to access com_users.
if (!JFactory::getUser()->authorise('core.manage', 'com_users'))
{
$form->setFieldAttribute('created_by', 'filter', 'unset');
}
return $form;
}
@ -201,6 +216,24 @@ class WeblinksModelWeblink extends JModelAdmin
$registry->loadString($item->images);
$item->images = $registry->toArray();
// Load associated web links items
$assoc = JLanguageAssociations::isEnabled();
if ($assoc)
{
$item->associations = array();
if ($item->id != null)
{
$associations = JLanguageAssociations::getAssociations('com_weblinks', '#__weblinks', 'com_weblinks.item', $item->id);
foreach ($associations as $tag => $association)
{
$item->associations[$tag] = $association->id;
}
}
}
if (!empty($item->id))
{
$item->tags = new JHelperTags;
@ -293,6 +326,31 @@ class WeblinksModelWeblink extends JModelAdmin
{
$app = JFactory::getApplication();
JLoader::register('CategoriesHelper', JPATH_ADMINISTRATOR . '/components/com_categories/helpers/categories.php');
// Cast catid to integer for comparison
$catid = (int) $data['catid'];
// Check if New Category exists
if ($catid > 0)
{
$catid = CategoriesHelper::validateCategoryId($data['catid'], 'com_weblinks');
}
// Save New Category
if ($catid == 0 && $this->canCreateCategory())
{
$table = array();
$table['title'] = $data['catid'];
$table['parent_id'] = 1;
$table['extension'] = 'com_weblinks';
$table['language'] = $data['language'];
$table['published'] = 1;
// Create new category and get catid back
$data['catid'] = CategoriesHelper::createCategory($table);
}
// Alter the title for save as copy
if ($app->input->get('task') == 'save2copy')
{
@ -325,12 +383,76 @@ class WeblinksModelWeblink extends JModelAdmin
{
if ($name == $table->title)
{
$name = String::increment($name);
$name = JString::increment($name);
}
$alias = String::increment($alias, 'dash');
$alias = JString::increment($alias, 'dash');
}
return array($name, $alias);
}
/**
* Allows preprocessing of the JForm object.
*
* @param JForm $form The form object
* @param array $data The data to be merged into the form object
* @param string $group The plugin group to be executed
*
* @return void
*
* @since 3.6.0
*/
protected function preprocessForm(JForm $form, $data, $group = 'content')
{
if ($this->canCreateCategory())
{
$form->setFieldAttribute('catid', 'allowAdd', 'true');
}
// Association weblinks items
if (JLanguageAssociations::isEnabled())
{
$languages = JLanguageHelper::getContentLanguages(false, true, null, 'ordering', 'asc');
if (count($languages) > 1)
{
$addform = new SimpleXMLElement('<form />');
$fields = $addform->addChild('fields');
$fields->addAttribute('name', 'associations');
$fieldset = $fields->addChild('fieldset');
$fieldset->addAttribute('name', 'item_associations');
foreach ($languages as $language)
{
$field = $fieldset->addChild('field');
$field->addAttribute('name', $language->lang_code);
$field->addAttribute('type', 'modal_weblink');
$field->addAttribute('language', $language->lang_code);
$field->addAttribute('label', $language->title);
$field->addAttribute('translate_label', 'false');
$field->addAttribute('select', 'true');
$field->addAttribute('new', 'true');
$field->addAttribute('edit', 'true');
$field->addAttribute('clear', 'true');
}
$form->load($addform, false);
}
}
parent::preprocessForm($form, $data, $group);
}
/**
* Is the user allowed to create an on the fly category?
*
* @return bool
*
* @since 3.6.0
*/
private function canCreateCategory()
{
return JFactory::getUser()->authorise('core.create', 'com_weblinks');
}
}

View File

@ -0,0 +1,285 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Methods supporting a list of weblink records.
*
* @since 1.6
*/
class WeblinksModelWeblinks extends JModelList
{
/**
* Constructor.
*
* @param array $config An optional associative array of configuration settings.
*
* @see JControllerLegacy
* @since 1.6
*/
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'id', 'a.id',
'title', 'a.title',
'alias', 'a.alias',
'checked_out', 'a.checked_out',
'checked_out_time', 'a.checked_out_time',
'catid', 'a.catid', 'category_id',
'c.title', 'category_title',
'state', 'a.state', 'published',
'access', 'a.access',
'ag.title', 'access_level',
'created', 'a.created',
'created_by', 'a.created_by',
'ordering', 'a.ordering',
'featured', 'a.featured',
'language', 'a.language',
'l.title', 'language_title',
'hits', 'a.hits',
'publish_up', 'a.publish_up',
'publish_down', 'a.publish_down',
'url', 'a.url',
'tag',
'level', 'c.level',
);
$assoc = JLanguageAssociations::isEnabled();
if ($assoc)
{
$config['filter_fields'][] = 'association';
}
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
* @note Calling getState in this method will result in recursion.
* @since 1.6
*/
protected function populateState($ordering = 'a.title', $direction = 'asc')
{
$app = JFactory::getApplication();
$forcedLanguage = $app->input->get('forcedLanguage', '', 'cmd');
// Adjust the context to support modal layouts.
if ($layout = $app->input->get('layout'))
{
$this->context .= '.' . $layout;
}
// Adjust the context to support forced languages.
if ($forcedLanguage)
{
$this->context .= '.' . $forcedLanguage;
}
// Load the filter state.
$this->setState('filter.search', $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search', '', 'string'));
$this->setState('filter.access', $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', '', 'cmd'));
$this->setState('filter.published', $this->getUserStateFromRequest($this->context . '.filter.published', 'filter_published', '', 'string'));
$this->setState('filter.category_id', $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id', '', 'cmd'));
$this->setState('filter.language', $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', '', 'string'));
$this->setState('filter.tag', $this->getUserStateFromRequest($this->context . '.filter.tag', 'filter_tag', '', 'string'));
$this->setState('filter.level', $this->getUserStateFromRequest($this->context . '.filter.level', 'filter_level', '', 'cmd'));
// Load the parameters.
$params = JComponentHelper::getParams('com_weblinks');
$this->setState('params', $params);
// Force a language.
if (!empty($forcedLanguage))
{
$this->setState('filter.language', $forcedLanguage);
}
// List state information.
parent::populateState($ordering, $direction);
}
/**
* Method to get a store id based on model configuration state.
*
* This is necessary because the model is used by the component and
* different modules that might need different sets of data or different
* ordering requirements.
*
* @param string $id A prefix for the store id.
*
* @return string A store id.
*
* @since 1.6
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.access');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.category_id');
$id .= ':' . $this->getState('filter.language');
$id .= ':' . $this->getState('filter.tag');
$id .= ':' . $this->getState('filter.level');
return parent::getStoreId($id);
}
/**
* Build an SQL query to load the list data.
*
* @return JDatabaseQuery
*
* @since 1.6
*/
protected function getListQuery()
{
// Create a new query object.
$db = $this->getDbo();
$query = $db->getQuery(true);
$user = JFactory::getUser();
// Select the required fields from the table.
$query->select(
$this->getState(
'list.select',
'a.id, a.title, a.alias, a.checked_out, a.checked_out_time, a.catid, a.created, a.created_by, ' .
'a.hits, a.state, a.access, a.ordering, a.language, a.publish_up, a.publish_down'
)
);
$query->from($db->quoteName('#__weblinks', 'a'));
// Join over the language
$query->select($db->quoteName('l.title', 'language_title'))
->select($db->quoteName('l.image', 'language_image'))
->join('LEFT', $db->quoteName('#__languages', 'l') . ' ON ' . $db->qn('l.lang_code') . ' = ' . $db->qn('a.language'));
// Join over the users for the checked out user.
$query->select($db->quoteName('uc.name', 'editor'))
->join('LEFT', $db->quoteName('#__users', 'uc') . ' ON ' . $db->qn('uc.id') . ' = ' . $db->qn('a.checked_out'));
// Join over the asset groups.
$query->select($db->quoteName('ag.title', 'access_level'))
->join('LEFT', $db->quoteName('#__viewlevels', 'ag') . ' ON ' . $db->qn('ag.id') . ' = ' . $db->qn('a.access'));
// Join over the categories.
$query->select('c.title AS category_title')
->join('LEFT', $db->quoteName('#__categories', 'c') . ' ON ' . $db->qn('c.id') . ' = ' . $db->qn('a.catid'));
// Join over the associations.
$assoc = JLanguageAssociations::isEnabled();
if ($assoc)
{
$query->select('COUNT(asso2.id)>1 AS association')
->join('LEFT', $db->quoteName('#__associations', 'asso') . ' ON asso.id = a.id AND asso.context = ' . $db->quote('com_weblinks.item'))
->join('LEFT', $db->quoteName('#__associations', 'asso2') . ' ON asso2.key = asso.key')
->group('a.id, l.title, l.image, uc.name, ag.title, c.title');
}
// Filter by access level.
if ($access = $this->getState('filter.access'))
{
$query->where($db->quoteName('a.access') . ' = ' . (int) $access);
}
// Implement View Level Access
if (!$user->authorise('core.admin'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where($db->quoteName('a.access') . ' IN (' . $groups . ')');
}
// Filter by published state
$published = $this->getState('filter.published');
if (is_numeric($published))
{
$query->where($db->quoteName('a.state') . ' = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(' . $db->quoteName('a.state') . ' IN (0, 1))');
}
// Filter by category.
$categoryId = $this->getState('filter.category_id');
if (is_numeric($categoryId))
{
$query->where($db->quoteName('a.catid') . ' = ' . (int) $categoryId);
}
// Filter on the level.
if ($level = $this->getState('filter.level'))
{
$query->where($db->quoteName('c.level') . ' <= ' . (int) $level);
}
// Filter by search in title
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where($db->quoteName('a.id') . ' = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%'));
$query->where('(' . $db->quoteName('a.title') . ' LIKE ' . $search . ' OR ' . $db->quoteName('a.alias') . ' LIKE ' . $search . ')');
}
}
// Filter on the language.
if ($language = $this->getState('filter.language'))
{
$query->where($db->quoteName('a.language') . ' = ' . $db->quote($language));
}
$tagId = $this->getState('filter.tag');
// Filter by a single tag.
if (is_numeric($tagId))
{
$query->where($db->quoteName('tagmap.tag_id') . ' = ' . (int) $tagId)
->join(
'LEFT', $db->quoteName('#__contentitem_tag_map', 'tagmap')
. ' ON ' . $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id')
. ' AND ' . $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote('com_weblinks.weblink')
);
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering', 'a.title');
$orderDirn = $this->state->get('list.direction', 'ASC');
if ($orderCol == 'a.ordering' || $orderCol == 'category_title')
{
$orderCol = 'c.title ' . $orderDirn . ', a.ordering';
}
$query->order($db->escape($orderCol . ' ' . $orderDirn));
return $query;
}
}

View File

@ -1,9 +1,9 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -41,8 +41,14 @@ class Com_WeblinksInstallerScript
$category->access = 1;
$category->params = '{"category_layout":"","image":""}';
$category->metadata = '{"author":"","robots":""}';
$category->metadesc = '';
$category->metakey = '';
$category->language = '*';
$category->checked_out_time = JFactory::getDbo()->getNullDate();
$category->version = 1;
$category->hits = 0;
$category->modified_user_id = 0;
$category->checked_out = 0;
// Set the location in the tree
$category->setLocation(1, 'last-child');
@ -145,11 +151,29 @@ class Com_WeblinksInstallerScript
$query->values(
$db->quote('Weblink') . ', '
. $db->quote('com_weblinks.weblink') . ', '
. $db->quote('{"special":{"dbtable":"#__weblinks","key":"id","type":"Weblink","prefix":"WeblinksTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}') . ', '
. $db->quote(
'{"special":{"dbtable":"#__weblinks","key":"id","type":"Weblink","prefix":"WeblinksTable","config":"array()"},
"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}'
) . ', '
. $db->quote('') . ', '
. $db->quote('{"common":{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"url", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special":{}}') . ', '
. $db->quote(
'{"common":{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias",
"core_created_time":"created","core_modified_time":"modified","core_body":"description", "core_hits":"hits",
"core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params",
"core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"url",
"core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc",
"core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special":{}}'
) . ', '
. $db->quote('WeblinksHelperRoute::getWeblinkRoute') . ', '
. $db->quote('{"formFile":"administrator\\/components\\/com_weblinks\\/models\\/forms\\/weblink.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","featured","images"], "ignoreChanges":["modified_by", "modified", "checked_out", "checked_out_time", "version", "hits"], "convertToInt":["publish_up", "publish_down", "featured", "ordering"], "displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ]}')
. $db->quote(
'{"formFile":"administrator\\/components\\/com_weblinks\\/models\\/forms\\/weblink.xml",
"hideFields":["asset_id","checked_out","checked_out_time","version","featured","images"], "ignoreChanges":["modified_by",
"modified", "checked_out", "checked_out_time", "version", "hits"], "convertToInt":["publish_up", "publish_down", "featured",
"ordering"], "displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},
{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},
{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},
{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ]}'
)
);
$db->setQuery($query);
@ -166,11 +190,32 @@ class Com_WeblinksInstallerScript
$query->values(
$db->quote('Weblinks Category') . ', '
. $db->quote('com_weblinks.category') . ', '
. $db->quote('{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}') . ', '
. $db->quote('
{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},
"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}'
) . ', '
. $db->quote('') . ', '
. $db->quote('{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias","core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description", "core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access", "core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"}, "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}') . ', '
. $db->quote('
{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias",
"core_created_time":"created_time","core_modified_time":"modified_time","core_body":"description",
"core_hits":"hits","core_publish_up":"null","core_publish_down":"null","core_access":"access",
"core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language",
"core_images":"null", "core_urls":"null", "core_version":"version", "core_ordering":"null", "core_metakey":"metakey",
"core_metadesc":"metadesc", "core_catid":"parent_id", "core_xreference":"null", "asset_id":"asset_id"},
"special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}'
) . ', '
. $db->quote('WeblinksHelperRoute::getCategoryRoute') . ', '
. $db->quote('{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}')
. $db->quote('
{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml",
"hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"],
"ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version",
"hits", "path"],"convertToInt":["publish_up", "publish_down"],
"displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id",
"displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id",
"displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id",
"displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id",
"displayColumn":"title"}]}'
)
);
$db->setQuery($query);

View File

@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS `#__weblinks` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`catid` int(11) NOT NULL DEFAULT 0,
`title` varchar(250) NOT NULL DEFAULT '',
`alias` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
`alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '',
`url` varchar(250) NOT NULL DEFAULT '',
`description` text NOT NULL,
`hits` int(11) NOT NULL DEFAULT 0,
@ -48,4 +48,4 @@ CREATE TABLE IF NOT EXISTS `#__weblinks` (
KEY `idx_featured_catid` (`featured`,`catid`),
KEY `idx_language` (`language`),
KEY `idx_xreference` (`xreference`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;

View File

@ -0,0 +1,25 @@
# Conversion to utf8mb4
--
-- Step 1.1: Enlarge columns to avoid data loss on later conversion to utf8mb4
--
ALTER TABLE `#__weblinks` MODIFY `alias` varchar(400) NOT NULL DEFAULT '';
--
-- Step 1.2: Convert table to utf8mb4 chracter set with utf8mb4_unicode_ci collation
--
ALTER TABLE `#__weblinks` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
--
-- Step 1.3: Set collation to utf8mb4_bin for formerly utf8_bin collated columns
--
ALTER TABLE `#__weblinks` MODIFY `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '';
--
-- Step 1.4: Set default character set and collation for all tables
--
ALTER TABLE `#__weblinks` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

View File

@ -1,16 +1,14 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\String\String;
/**
* Weblink Table class
*
@ -40,14 +38,17 @@ class WeblinksTableWeblink extends JTable
// Set the published column alias
$this->setColumnAlias('published', 'state');
JTableObserverTags::createObserver($this, array('typeAlias' => 'com_weblinks.weblink'));
JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_weblinks.weblink'));
if (version_compare(JVERSION, '4.0', '<') == 1)
{
JTableObserverTags::createObserver($this, array('typeAlias' => 'com_weblinks.weblink'));
JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_weblinks.weblink'));
}
}
/**
* Overload the store method for the Weblinks table.
*
* @param boolean Toggle whether null values should be updated.
* @param boolean $updateNulls Toggle whether null values should be updated.
*
* @return boolean True on success, false on failure.
*
@ -93,9 +94,10 @@ class WeblinksTableWeblink extends JTable
}
// Verify that the alias is unique
$table = JTable::getInstance('Weblink', 'WeblinksTable');
$table = JTable::getInstance('Weblink', 'WeblinksTable', array('dbo' => $this->getDbo()));
if ($table->load(array('alias' => $this->alias, 'catid' => $this->catid)) && ($table->id != $this->id || $this->id == 0))
if ($table->load(array('language' => $this->language, 'alias' => $this->alias, 'catid' => $this->catid))
&& ($table->id != $this->id || $this->id == 0))
{
$this->setError(JText::_('COM_WEBLINKS_ERROR_UNIQUE_ALIAS'));
@ -124,10 +126,11 @@ class WeblinksTableWeblink extends JTable
return false;
}
// check for valid name
// Check for valid name
if (trim($this->title) == '')
{
$this->setError(JText::_('COM_WEBLINKS_ERR_TABLES_TITLE'));
return false;
}
@ -138,6 +141,7 @@ class WeblinksTableWeblink extends JTable
->select($db->quoteName('id'))
->from($db->quoteName('#__weblinks'))
->where($db->quoteName('title') . ' = ' . $db->quote($this->title))
->where($db->quoteName('language') . ' = ' . $db->quote($this->language))
->where($db->quoteName('catid') . ' = ' . (int) $this->catid);
$db->setQuery($query);
@ -155,7 +159,7 @@ class WeblinksTableWeblink extends JTable
$this->alias = $this->title;
}
$this->alias = JApplicationHelper::stringURLSafe($this->alias);
$this->alias = JApplicationHelper::stringURLSafe($this->alias, $this->language);
if (trim(str_replace('-', '', $this->alias)) == '')
{
@ -178,7 +182,7 @@ class WeblinksTableWeblink extends JTable
{
// Array of characters to remove
$bad_characters = array("\n", "\r", "\"", "<", ">");
$after_clean = String::str_ireplace($bad_characters, "", $this->metakey);
$after_clean = JString::str_ireplace($bad_characters, "", $this->metakey);
$keys = explode(',', $after_clean);
$clean_keys = array();
@ -195,6 +199,6 @@ class WeblinksTableWeblink extends JTable
$this->metakey = implode(", ", $clean_keys);
}
return true;
return parent::check();
}
}

View File

@ -1,9 +1,9 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -12,7 +12,15 @@ defined('_JEXEC') or die;
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('behavior.formvalidator');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('formbehavior.chosen', 'select', null, array('disable_search_threshold' => 0 ));
$app = JFactory::getApplication();
$input = $app->input;
$assoc = JLanguageAssociations::isEnabled();
// Fieldsets to not automatically render by /layouts/joomla/edit/params.php
$this->ignore_fieldsets = array('details', 'images', 'item_associations', 'jmetadata');
JFactory::getDocument()->addScriptDeclaration("
Joomla.submitbutton = function(task)
@ -23,9 +31,14 @@ JFactory::getDocument()->addScriptDeclaration("
}
};
");
// In case of modal
$isModal = $input->get('layout') == 'modal' ? true : false;
$layout = $isModal ? 'modal' : 'edit';
$tmpl = $isModal || $input->get('tmpl', '', 'cmd') === 'component' ? '&tmpl=component' : '';
?>
<form action="<?php echo JRoute::_('index.php?option=com_weblinks&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="weblink-form" class="form-validate">
<form action="<?php echo JRoute::_('index.php?option=com_weblinks&layout=' . $layout . $tmpl . '&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="weblink-form" class="form-validate">
<?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?>
@ -36,8 +49,8 @@ JFactory::getDocument()->addScriptDeclaration("
<div class="row-fluid">
<div class="span9">
<div class="form-vertical">
<?php echo $this->form->getControlGroup('url'); ?>
<?php echo $this->form->getControlGroup('description'); ?>
<?php echo $this->form->renderField('url'); ?>
<?php echo $this->form->renderField('description'); ?>
</div>
</div>
<div class="span3">
@ -49,9 +62,9 @@ JFactory::getDocument()->addScriptDeclaration("
<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'images', JText::_('JGLOBAL_FIELDSET_IMAGE_OPTIONS', true)); ?>
<div class="row-fluid">
<div class="span6">
<?php echo $this->form->getControlGroup('images'); ?>
<?php echo $this->form->renderField('images'); ?>
<?php foreach ($this->form->getGroup('images') as $field) : ?>
<?php echo $field->getControlGroup(); ?>
<?php echo $field->renderField(); ?>
<?php endforeach; ?>
</div>
</div>
@ -71,10 +84,19 @@ JFactory::getDocument()->addScriptDeclaration("
<?php echo JLayoutHelper::render('joomla.edit.params', $this); ?>
<?php if (!$isModal && $assoc) : ?>
<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'associations', JText::_('JGLOBAL_FIELDSET_ASSOCIATIONS')); ?>
<?php echo $this->loadTemplate('associations'); ?>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php elseif ($isModal && $assoc) : ?>
<div class="hidden"><?php echo $this->loadTemplate('associations'); ?></div>
<?php endif; ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
</div>
<input type="hidden" name="task" value="" />
<input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>" />
<?php echo JHtml::_('form.token'); ?>
</form>

View File

@ -0,0 +1,12 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
echo JLayoutHelper::render('joomla.edit.associations', $this);

View File

@ -0,0 +1,12 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
echo JLayoutHelper::render('joomla.edit.metadata', $this);

View File

@ -0,0 +1,25 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$fieldSets = $this->form->getFieldsets('params'); ?>
<?php foreach ($fieldSets as $name => $fieldSet) : ?>
<div class="tab-pane" id="params-<?php echo $name; ?>">
<?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?>
<?php echo '<p class="alert alert-info">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; ?>
<?php endif; ?>
<?php foreach ($this->form->getFieldset($name) as $field) : ?>
<div class="control-group">
<div class="control-label"><?php echo $field->label; ?></div>
<div class="controls"><?php echo $field->input; ?></div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>

View File

@ -0,0 +1,31 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JHtml::_('bootstrap.tooltip', '.hasTooltip', array('placement' => 'bottom'));
// @deprecated 4.0 the function parameter, the inline js and the buttons are not needed since 3.7.0.
$function = JFactory::getApplication()->input->getCmd('function', 'jEditWeblink_' . (int) $this->item->id);
// Function to update input title when changed
JFactory::getDocument()->addScriptDeclaration('
function jEditWeblinkModal() {
if (window.parent && document.formvalidator.isValid(document.getElementById("weblink-form"))) {
return window.parent.' . $this->escape($function) . '(document.getElementById("jform_title").value);
}
}
');
?>
<button id="applyBtn" type="button" class="hidden" onclick="Joomla.submitbutton('weblink.apply'); jEditWeblinkModal();"></button>
<button id="saveBtn" type="button" class="hidden" onclick="Joomla.submitbutton('weblink.save'); jEditWeblinkModal();"></button>
<button id="closeBtn" type="button" class="hidden" onclick="Joomla.submitbutton('weblink.cancel');"></button>
<div class="container-popup">
<?php $this->setLayout('edit'); ?>
<?php echo $this->loadTemplate(); ?>
</div>

View File

@ -0,0 +1,12 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
echo JLayoutHelper::render('joomla.edit.associations', $this);

View File

@ -3,7 +3,7 @@
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

View File

@ -0,0 +1,25 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$fieldSets = $this->form->getFieldsets('params'); ?>
<?php foreach ($fieldSets as $name => $fieldSet) : ?>
<div class="tab-pane" id="params-<?php echo $name; ?>">
<?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?>
<?php echo '<p class="alert alert-info">' . $this->escape(JText::_($fieldSet->description)) . '</p>'; ?>
<?php endif; ?>
<?php foreach ($this->form->getFieldset($name) as $field) : ?>
<div class="control-group">
<div class="control-label"><?php echo $field->label; ?></div>
<div class="controls"><?php echo $field->input; ?></div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>

View File

@ -1,9 +1,9 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -23,42 +23,64 @@ class WeblinksViewWeblink extends JViewLegacy
protected $form;
/**
* Display the view
* Display the view.
*
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*/
public function display($tpl = null)
{
$this->state = $this->get('State');
$this->item = $this->get('Item');
$this->form = $this->get('Form');
$this->state = $this->get('State');
$this->item = $this->get('Item');
$this->form = $this->get('Form');
// Check for errors.
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode("\n", $errors));
return false;
}
// If we are forcing a language in modal (used for associations).
if ($this->getLayout() === 'modal' && $forcedLanguage = JFactory::getApplication()->input->get('forcedLanguage', '', 'cmd'))
{
// Set the language field to the forcedLanguage and disable changing it.
$this->form->setValue('language', null, $forcedLanguage);
$this->form->setFieldAttribute('language', 'readonly', 'true');
// Only allow to select categories with All language or with the forced language.
$this->form->setFieldAttribute('catid', 'language', '*,' . $forcedLanguage);
// Only allow to select tags with All language or with the forced language.
$this->form->setFieldAttribute('tags', 'language', '*,' . $forcedLanguage);
}
$this->addToolbar();
parent::display($tpl);
}
/**
* Add the page title and toolbar.
*
* @return void
*
* @since 1.6
*/
protected function addToolbar()
{
JFactory::getApplication()->input->set('hidemainmenu', true);
$user = JFactory::getUser();
$isNew = ($this->item->id == 0);
$checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id'));
$user = JFactory::getUser();
$isNew = ($this->item->id == 0);
$checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id'));
// Since we don't track these assets at the item level, use the category id.
$canDo = JHelperContent::getActions('com_weblinks', 'category', $this->item->catid);
$canDo = JHelperContent::getActions('com_weblinks', 'category', $this->item->catid);
JToolbarHelper::title(JText::_('COM_WEBLINKS_MANAGER_WEBLINK'), 'link weblinks');
JToolbarHelper::title($isNew ? JText::_('COM_WEBLINKS_MANAGER_WEBLINK_NEW') : JText::_('COM_WEBLINKS_MANAGER_WEBLINK_EDIT'), 'link weblinks');
// If not checked out, can save the item.
if (!$checkedOut && ($canDo->get('core.edit')||(count($user->getAuthorisedCategories('com_weblinks', 'core.create')))))
@ -66,15 +88,23 @@ class WeblinksViewWeblink extends JViewLegacy
JToolbarHelper::apply('weblink.apply');
JToolbarHelper::save('weblink.save');
}
if (!$checkedOut && (count($user->getAuthorisedCategories('com_weblinks', 'core.create'))))
{
JToolbarHelper::save2new('weblink.save2new');
}
// If an existing item, can save to a copy.
if (!$isNew && (count($user->getAuthorisedCategories('com_weblinks', 'core.create')) > 0))
{
JToolbarHelper::save2copy('weblink.save2copy');
}
if (JLanguageAssociations::isEnabled() && JComponentHelper::isEnabled('com_associations'))
{
JToolbarHelper::custom('weblink.editAssociations', 'contract', 'contract', 'JTOOLBAR_ASSOCIATIONS', false, false);
}
if (empty($this->item->id))
{
JToolbarHelper::cancel('weblink.cancel');

View File

@ -0,0 +1,187 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('bootstrap.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('formbehavior.chosen', 'select');
$user = JFactory::getUser();
$userId = $user->get('id');
$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction'));
$canOrder = $user->authorise('core.edit.state', 'com_weblinks.category');
$saveOrder = $listOrder == 'a.ordering';
$assoc = JLanguageAssociations::isEnabled();
if ($saveOrder)
{
$saveOrderingUrl = 'index.php?option=com_weblinks&task=weblinks.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'weblinkList', 'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo JRoute::_('index.php?option=com_weblinks&view=weblinks'); ?>" method="post" name="adminForm" id="adminForm">
<?php if (!empty($this->sidebar)) : ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif;?>
<?php echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?>
<div class="clearfix"> </div>
<?php if (empty($this->items)) : ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped" id="weblinkList">
<thead>
<tr>
<th width="1%" class="nowrap center hidden-phone">
<?php echo JHtml::_('searchtools.sort', '', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING', 'icon-menu-2'); ?>
</th>
<th width="1%" class="nowrap center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<th width="1%" class="nowrap center">
<?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
</th>
<th class="title">
<?php echo JHtml::_('searchtools.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?>
</th>
<th width="10%" class="nowrap hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ACCESS', 'access_level', $listDirn, $listOrder); ?>
</th>
<th width="5%" class="nowrap center hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?>
</th>
<?php if ($assoc) : ?>
<th width="5%" class="nowrap hidden-phone hidden-tablet">
<?php echo JHtml::_('searchtools.sort', 'COM_WEBLINKS_HEADING_ASSOCIATION', 'association', $listDirn, $listOrder); ?>
</th>
<?php endif; ?>
<th width="10%" class="nowrap hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language_title', $listDirn, $listOrder); ?>
</th>
<th width="1%" class="nowrap center hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="8">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php foreach ($this->items as $i => $item) : ?>
<?php $ordering = ($listOrder == 'a.ordering'); ?>
<?php $item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_weblinks&task=edit&type=other&cid[]=' . $item->catid); ?>
<?php $canCreate = $user->authorise('core.create', 'com_weblinks.category.' . $item->catid); ?>
<?php $canEdit = $user->authorise('core.edit', 'com_weblinks.category.' . $item->catid); ?>
<?php $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->id || $item->checked_out == 0; ?>
<?php $canEditOwn = $user->authorise('core.edit.own', 'com_weblinks.category.' . $item->catid) && $item->created_by == $user->id; ?>
<?php $canChange = $user->authorise('core.edit.state', 'com_weblinks.category.' . $item->catid) && $canCheckin; ?>
<tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid; ?>">
<td class="order nowrap center hidden-phone">
<?php $iconClass = ''; ?>
<?php if (!$canChange) : ?>
<?php $iconClass = ' inactive'; ?>
<?php elseif (!$saveOrder) : ?>
<?php $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); ?>
<?php endif; ?>
<span class="sortable-handler<?php echo $iconClass ?>">
<i class="icon-menu" aria-hidden="true"></i>
</span>
<?php if ($canChange && $saveOrder) : ?>
<input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
<?php endif; ?>
</td>
<td class="center">
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
</td>
<td class="center">
<div class="btn-group">
<?php echo JHtml::_('jgrid.published', $item->state, $i, 'weblinks.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?>
<?php // Create dropdown items and render the dropdown list. ?>
<?php if ($canChange) : ?>
<?php JHtml::_('actionsdropdown.' . ((int) $item->state === 2 ? 'un' : '') . 'archive', 'cb' . $i, 'weblinks'); ?>
<?php JHtml::_('actionsdropdown.' . ((int) $item->state === -2 ? 'un' : '') . 'trash', 'cb' . $i, 'weblinks'); ?>
<?php echo JHtml::_('actionsdropdown.render', $this->escape($item->title)); ?>
<?php endif; ?>
</div>
</td>
<td class="has-context">
<?php if ($item->checked_out) : ?>
<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'weblinks.', $canCheckin); ?>
<?php endif; ?>
<?php if ($canEdit || $canEditOwn) : ?>
<a href="<?php echo JRoute::_('index.php?option=com_weblinks&task=weblink.edit&id=' . (int) $item->id); ?>">
<?php echo $this->escape($item->title); ?></a>
<?php else : ?>
<?php echo $this->escape($item->title); ?>
<?php endif; ?>
<span class="small">
<?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias)); ?>
</span>
<div class="small">
<?php echo JText::_('JCATEGORY') . ': ' . $this->escape($item->category_title); ?>
</div>
</td>
<td class="small hidden-phone">
<?php echo $this->escape($item->access_level); ?>
</td>
<td class="center hidden-phone">
<?php echo $item->hits; ?>
</td>
<?php if ($assoc) : ?>
<td class="hidden-phone hidden-tablet">
<?php if ($item->association) : ?>
<?php echo JHtml::_('weblink.association', $item->id); ?>
<?php endif; ?>
</td>
<?php endif; ?>
<td class="small hidden-phone">
<?php echo JLayoutHelper::render('joomla.content.language', $item); ?>
</td>
<td class="center hidden-phone">
<?php echo (int) $item->id; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php // Load the batch processing form. ?>
<?php if ($user->authorise('core.create', 'com_content')
&& $user->authorise('core.edit', 'com_content')
&& $user->authorise('core.edit.state', 'com_content')) : ?>
<?php echo JHtml::_(
'bootstrap.renderModal',
'collapseModal',
array(
'title' => JText::_('COM_WEBLINKS_BATCH_OPTIONS'),
'footer' => $this->loadTemplate('batch_footer'),
),
$this->loadTemplate('batch_body')
); ?>
<?php endif; ?>
<?php endif; ?>
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<?php echo JHtml::_('form.token'); ?>
</div>
</form>

View File

@ -0,0 +1,40 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$published = $this->state->get('filter.published');
?>
<div class="container-fluid">
<div class="row-fluid">
<div class="control-group span6">
<div class="controls">
<?php echo JHtml::_('batch.language'); ?>
</div>
</div>
<div class="control-group span6">
<div class="controls">
<?php echo JHtml::_('batch.access'); ?>
</div>
</div>
</div>
<div class="row-fluid">
<?php if ($published >= 0) : ?>
<div class="control-group span6">
<div class="controls">
<?php echo JHtml::_('batch.item', 'com_weblinks'); ?>
</div>
</div>
<?php endif; ?>
<div class="control-group span6">
<div class="controls">
<?php echo JHtml::_('batch.tag'); ?>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,17 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
?>
<a class="btn" type="button" onclick="document.getElementById('batch-category-id').value='';document.getElementById('batch-access').value='';document.getElementById('batch-language-id').value='';document.getElementById('batch-user-id').value='';document.getElementById('batch-tag-id').value=''" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</a>
<button class="btn btn-success" type="submit" onclick="Joomla.submitbutton('weblink.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>

View File

@ -0,0 +1,147 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$app = JFactory::getApplication();
if ($app->isClient('site'))
{
JSession::checkToken('get') or die(JText::_('JINVALID_TOKEN'));
}
JLoader::register('WeblinksHelperRoute', JPATH_ROOT . '/components/com_weblinks/helpers/route.php');
// Include the component HTML helpers.
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('behavior.core');
JHtml::_('behavior.polyfill', array('event'), 'lt IE 9');
JHtml::_('script', 'com_weblinks/admin-weblinks-modal.js', array('version' => 'auto', 'relative' => true));
JHtml::_('bootstrap.tooltip', '.hasTooltip', array('placement' => 'bottom'));
JHtml::_('formbehavior.chosen', 'select');
// Special case for the search field tooltip.
$searchFilterDesc = $this->filterForm->getFieldAttribute('search', 'description', null, 'filter');
JHtml::_('bootstrap.tooltip', '#filter_search', array('title' => JText::_($searchFilterDesc), 'placement' => 'bottom'));
$function = $app->input->getCmd('function', 'jSelectWeblink');
$editor = $app->input->getCmd('editor', '');
$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction'));
$onclick = $this->escape($function);
if (!empty($editor))
{
// This view is used also in com_menus. Load the xtd script only if the editor is set!
JFactory::getDocument()->addScriptOptions('xtd-weblinks', array('editor' => $editor));
$onclick = "jSelectWeblink";
}
$iconStates = array(
-2 => 'icon-trash',
0 => 'icon-unpublish',
1 => 'icon-publish',
2 => 'icon-archive',
);
?>
<div class="container-popup">
<form action="<?php echo JRoute::_('index.php?option=com_weblinks&view=weblinks&layout=modal&tmpl=component&function=' . $function . '&' . JSession::getFormToken() . '=1&editor=' . $editor); ?>" method="post" name="adminForm" id="adminForm" class="form-inline">
<?php echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?>
<div class="clearfix"></div>
<?php if (empty($this->items)) : ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped table-condensed">
<thead>
<tr>
<th width="1%" class="center nowrap">
<?php echo JHtml::_('searchtools.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
</th>
<th class="title">
<?php echo JHtml::_('searchtools.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?>
</th>
<th width="10%" class="nowrap hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?>
</th>
<th width="15%" class="nowrap">
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?>
</th>
<th width="5%" class="nowrap hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JDATE', 'a.created', $listDirn, $listOrder); ?>
</th>
<th width="1%" class="nowrap hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="6">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php foreach ($this->items as $i => $item) : ?>
<?php $lang = ''; ?>
<?php if ($item->language && JLanguageMultilang::isEnabled()) : ?>
<?php $tag = strlen($item->language); ?>
<?php if ($tag == 5) : ?>
<?php $lang = substr($item->language, 0, 2); ?>
<?php elseif ($tag == 6) : ?>
<?php $lang = substr($item->language, 0, 3); ?>
<?php endif; ?>
<?php endif; ?>
<tr class="row<?php echo $i % 2; ?>">
<td class="center">
<span class="<?php echo $iconStates[$this->escape($item->state)]; ?>"></span>
</td>
<td>
<?php $attribs = 'data-function="' . $this->escape($onclick) . '"'
. ' data-id="' . $item->id . '"'
. ' data-title="' . $this->escape(addslashes($item->title)) . '"'
. ' data-cat-id="' . $this->escape($item->catid) . '"'
. ' data-uri="' . $this->escape(WeblinksHelperRoute::getWeblinkRoute($item->id, $item->catid, $item->language)) . '"'
. ' data-language="' . $this->escape($lang) . '"';
?>
<a class="select-link" href="javascript:void(0)" <?php echo $attribs; ?>>
<?php echo $this->escape($item->title); ?>
</a>
<div class="small">
<?php echo JText::_('JCATEGORY') . ': ' . $this->escape($item->category_title); ?>
</div>
</td>
<td class="small hidden-phone">
<?php echo $this->escape($item->access_level); ?>
</td>
<td class="small">
<?php echo JLayoutHelper::render('joomla.content.language', $item); ?>
</td>
<td class="nowrap small hidden-phone">
<?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')); ?>
</td>
<td class="nowrap small hidden-phone">
<?php echo (int) $item->id; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php endif; ?>
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="forcedLanguage" value="<?php echo $app->input->get('forcedLanguage', '', 'CMD'); ?>" />
<?php echo JHtml::_('form.token'); ?>
</form>
</div>

View File

@ -1,9 +1,9 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -23,33 +23,66 @@ class WeblinksViewWeblinks extends JViewLegacy
protected $state;
/**
* Display the view
* Display the view.
*
* @return void
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*/
public function display($tpl = null)
{
$this->state = $this->get('State');
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->state = $this->get('State');
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
$this->filterForm = $this->get('FilterForm');
$this->activeFilters = $this->get('ActiveFilters');
WeblinksHelper::addSubmenu('weblinks');
// Modal layout doesn't need the submenu.
if ($this->getLayout() !== 'modal')
{
WeblinksHelper::addSubmenu('weblinks');
}
// Check for errors.
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode("\n", $errors));
return false;
}
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
// We don't need toolbar in the modal layout.
if ($this->getLayout() !== 'modal')
{
$this->addToolbar();
$this->sidebar = JHtmlSidebar::render();
}
else
{
// In article associations modal we need to remove language filter if forcing a language.
// We also need to change the category filter to show show categories with All or the forced language.
if ($forcedLanguage = JFactory::getApplication()->input->get('forcedLanguage', '', 'CMD'))
{
// If the language is forced we can't allow to select the language, so transform the language selector filter into an hidden field.
$languageXml = new SimpleXMLElement('<field name="language" type="hidden" default="' . $forcedLanguage . '" />');
$this->filterForm->setField($languageXml, 'filter', true);
// Also, unset the active language filter so the search tools is not open by default with this filter.
unset($this->activeFilters['language']);
// One last changes needed is to change the category filter to just show categories with All language or with the forced language.
$this->filterForm->setFieldAttribute('category_id', 'language', '*,' . $forcedLanguage, 'filter');
}
}
parent::display($tpl);
}
/**
* Add the page title and toolbar.
*
* @return void
*
* @since 1.6
*/
protected function addToolbar()
@ -61,7 +94,7 @@ class WeblinksViewWeblinks extends JViewLegacy
$user = JFactory::getUser();
// Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar');
$bar = JToolbar::getInstance('toolbar');
JToolbarHelper::title(JText::_('COM_WEBLINKS_MANAGER_WEBLINKS'), 'link weblinks');
@ -70,7 +103,7 @@ class WeblinksViewWeblinks extends JViewLegacy
JToolbarHelper::addNew('weblink.add');
}
if ($canDo->get('core.edit'))
if ($canDo->get('core.edit') || $canDo->get('core.edit.own'))
{
JToolbarHelper::editList('weblink.edit');
}
@ -84,9 +117,9 @@ class WeblinksViewWeblinks extends JViewLegacy
JToolbarHelper::checkin('weblinks.checkin');
}
if ($state->get('filter.state') == -2 && $canDo->get('core.delete'))
if ($state->get('filter.published') == -2 && $canDo->get('core.delete'))
{
JToolbarHelper::deleteList('', 'weblinks.delete', 'JTOOLBAR_EMPTY_TRASH');
JToolbarHelper::deleteList('JGLOBAL_CONFIRM_DELETE', 'weblinks.delete', 'JTOOLBAR_EMPTY_TRASH');
}
elseif ($canDo->get('core.edit.state'))
{
@ -97,7 +130,7 @@ class WeblinksViewWeblinks extends JViewLegacy
if ($user->authorise('core.create', 'com_weblinks') && $user->authorise('core.edit', 'com_weblinks')
&& $user->authorise('core.edit.state', 'com_weblinks'))
{
JHtml::_('bootstrap.modal', 'collapseModal');
JHtml::_('bootstrap.renderModal', 'collapseModal');
$title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button
@ -113,39 +146,6 @@ class WeblinksViewWeblinks extends JViewLegacy
}
JToolbarHelper::help('JHELP_COMPONENTS_WEBLINKS_LINKS');
JHtmlSidebar::setAction('index.php?option=com_weblinks&view=weblinks');
JHtmlSidebar::addFilter(
JText::_('JOPTION_SELECT_PUBLISHED'),
'filter_state',
JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true)
);
JHtmlSidebar::addFilter(
JText::_('JOPTION_SELECT_CATEGORY'),
'filter_category_id',
JHtml::_('select.options', JHtml::_('category.options', 'com_weblinks'), 'value', 'text', $this->state->get('filter.category_id'))
);
JHtmlSidebar::addFilter(
JText::_('JOPTION_SELECT_ACCESS'),
'filter_access',
JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', $this->state->get('filter.access'))
);
JHtmlSidebar::addFilter(
JText::_('JOPTION_SELECT_LANGUAGE'),
'filter_language',
JHtml::_('select.options', JHtml::_('contentlanguage.existing', true, true), 'value', 'text', $this->state->get('filter.language'))
);
JHtmlSidebar::addFilter(
JText::_('JOPTION_SELECT_TAG'),
'filter_tag',
JHtml::_('select.options', JHtml::_('tag.options', true, true), 'value', 'text', $this->state->get('filter.tag'))
);
}
/**

View File

@ -1,9 +1,9 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -12,7 +12,7 @@ JHtml::_('behavior.tabstate');
if (!JFactory::getUser()->authorise('core.manage', 'com_weblinks'))
{
return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
throw new JAccessExceptionNotallowed(JText::_('JERROR_ALERTNOAUTHOR'), 403);
}
$controller = JControllerLegacy::getInstance('Weblinks');

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.1" method="upgrade">
<extension type="component" version="3.5" method="upgrade">
<name>com_weblinks</name>
<author>Joomla! Project</author>
<creationDate>April 2006</creationDate>
<copyright>(C) 2005 - 2015 Open Source Matters. All rights reserved.</copyright>
<creationDate>##DATE##</creationDate>
<copyright>(C) 2005 - ##YEAR## Open Source Matters. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>3.4.1</version>
<version>##VERSION##</version>
<description>COM_WEBLINKS_XML_DESCRIPTION</description>
<scriptfile>script.php</scriptfile>
@ -33,17 +33,16 @@
</schemas>
</update>
<files folder="site">
<filename>weblinks.php</filename>
<filename>controller.php</filename>
<filename>router.php</filename>
<filename>metadata.xml</filename>
<folder>views</folder>
<folder>models</folder>
<folder>controllers</folder>
<folder>helpers</folder>
<folder>language</folder>
<media folder="media/com_weblinks" destination="com_weblinks">
##MEDIA_FILES##
</media>
<files folder="components/com_weblinks">
##FRONTEND_COMPONENT_FILES##
</files>
<languages folder="language">
##FRONTEND_LANGUAGE_FILES##
</languages>
<administration>
<menu img="class:weblinks">com_weblinks</menu>
<submenu>
@ -56,19 +55,12 @@
<menu link="option=com_categories&amp;extension=com_weblinks"
view="categories" img="class:weblinks-cat" alt="Weblinks/Categories">com_weblinks_categories</menu>
</submenu>
<files folder="admin">
<filename>access.xml</filename>
<filename>config.xml</filename>
<filename>controller.php</filename>
<filename>weblinks.php</filename>
<folder>controllers</folder>
<folder>helpers</folder>
<folder>language</folder>
<folder>models</folder>
<folder>sql</folder>
<folder>tables</folder>
<folder>views</folder>
<files folder="administrator/components/com_weblinks">
##BACKEND_COMPONENT_FILES##
</files>
<languages folder="administrator/language">
##BACKEND_LANGUAGE_FILES##
</languages>
</administration>
</extension>

View File

@ -1,14 +1,15 @@
; Joomla! Project
; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.
; Copyright (C) 2005 - 2017 Open Source Matters. All rights reserved.
; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php
; Note : All ini files need to be saved as UTF-8
COM_WEBLINKS="Weblinks"
COM_WEBLINKS="Web Links"
COM_WEBLINKS_ACCESS_HEADING="Access"
COM_WEBLINKS_BATCH_OPTIONS="Batch process the selected links"
COM_WEBLINKS_BATCH_TIP="If a category is selected for move/copy, any actions selected will be applied to the copied or moved links. Otherwise, all actions are applied to the selected links."
COM_WEBLINKS_CATEGORIES_DESC="These settings apply for Web Links Categories Options unless they are changed for a specific menu item."
COM_WEBLINKS_CATEGORY_DESC="These settings apply for Web Links Category Options unless they are changed for a specific menu item."
COM_WEBLINKS_CHANGE_WEBLINK="Select or Change Web Link"
COM_WEBLINKS_COMPONENT_DESC="These settings apply for Web Links unless they are changed for a specific menu item or web link."
COM_WEBLINKS_COMPONENT_LABEL="Web Link"
COM_WEBLINKS_CONFIG_INTEGRATION_SETTINGS_DESC="These settings determine how the Web Links Component will integrate with other extensions."
@ -17,23 +18,25 @@ COM_WEBLINKS_EDIT_WEBLINK="Edit Web Link"
COM_WEBLINKS_ERR_TABLES_NAME="There is already a Web Link with that name in this category. Please try again."
COM_WEBLINKS_ERR_TABLES_PROVIDE_URL="Please provide a valid URL"
COM_WEBLINKS_ERR_TABLES_TITLE="Your web link must contain a title."
COM_WEBLINKS_ERROR_UNIQUE_ALIAS="Another web link from this category has the same alias"
COM_WEBLINKS_ERROR_UNIQUE_ALIAS="Another web link from this category has the same alias (remember it may be a trashed item)."
COM_WEBLINKS_FIELD_ALIAS_DESC="The alias is for internal use only. Leave this blank and Joomla will fill in a default value from the title. It has to be unique for each web link in the same category."
COM_WEBLINKS_FIELD_CATEGORY_DESC="Choose a category for this Web link."
COM_WEBLINKS_FIELD_CATEGORYCHOOSE_DESC="Please choose a Web Links category to display."
COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC="Show/Hide the number of Web Links in each Category."
COM_WEBLINKS_FIELD_CAPTCHA_DESC="Select the captcha plugin that will be used in the web link submit form. You may need to enter required information for your captcha plugin in the Plugin Manager.<br />If 'Use Default' is selected, make sure a captcha plugin is selected in Global Configuration."
COM_WEBLINKS_FIELD_CAPTCHA_LABEL="Allow Captcha on Web Link"
COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC="Show or hide the number of Web Links in each Category."
COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL="# Web Links"
COM_WEBLINKS_FIELD_CONFIG_COUNTCLICKS_DESC="If set to yes, the number of times the link has been clicked will be recorded."
COM_WEBLINKS_FIELD_CONFIG_COUNTCLICKS_LABEL="Count Clicks"
COM_WEBLINKS_FIELD_CONFIG_DESCRIPTION_DESC="Show/Hide the description below."
COM_WEBLINKS_FIELD_CONFIG_HITS_DESC="Show/Hide hits."
COM_WEBLINKS_FIELD_CONFIG_DESCRIPTION_DESC="Show or hide the description below."
COM_WEBLINKS_FIELD_CONFIG_HITS_DESC="Show or hide hits."
COM_WEBLINKS_FIELD_CONFIG_ICON_DESC="If Icon is chosen above, select an icon to display with the Web Links. If none is selected, the default icon will be used."
COM_WEBLINKS_FIELD_CONFIG_ICON_LABEL="Select Icon"
COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC="Show/Hide the links description."
COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC="Show or hide the links description."
COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL="Links Description"
COM_WEBLINKS_FIELD_CONFIG_OTHERCATS_DESC="Show/hide other categories."
COM_WEBLINKS_FIELD_CONFIG_OTHERCATS_DESC="Show or hide other categories."
COM_WEBLINKS_FIELD_CONFIG_OTHERCATS_LABEL="Other Categories"
COM_WEBLINKS_FIELD_CONFIG_SHOWREPORT_DESC="Show/Hide the Report Bad Link option."
COM_WEBLINKS_FIELD_CONFIG_SHOWREPORT_DESC="Show or hide the Report Bad Link option."
COM_WEBLINKS_FIELD_CONFIG_SHOWREPORT_LABEL="Reports"
COM_WEBLINKS_FIELD_COUNTCLICKS_DESC="If set to yes, the number of times the link has been clicked will be recorded."
COM_WEBLINKS_FIELD_COUNTCLICKS_LABEL="Count Clicks"
@ -62,11 +65,11 @@ COM_WEBLINKS_FIELD_SECOND_LABEL="Second Image"
COM_WEBLINKS_FIELD_SELECT_CATEGORY_DESC="Select a web links category to display."
COM_WEBLINKS_FIELD_SELECT_CATEGORY_LABEL="Select a Category"
COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_DESC="Show the tags for a category."
COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_LABEL="Show Tags"
COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_LABEL="Category Tags"
COM_WEBLINKS_FIELD_SHOW_TAGS_DESC="Show the tags for a web link."
COM_WEBLINKS_FIELD_SHOW_TAGS_LABEL="Show Tags"
COM_WEBLINKS_FIELD_SHOW_TAGS_LABEL="Tags"
COM_WEBLINKS_FIELD_STATE_DESC="Set publication status."
COM_WEBLINKS_FIELD_TARGET_DESC="Target browser window when the link is clicked."
COM_WEBLINKS_FIELD_TARGET_DESC="Target browser window when the link is selected."
COM_WEBLINKS_FIELD_TARGET_LABEL="Target"
COM_WEBLINKS_FIELD_TITLE_DESC="Web Link must have a title."
COM_WEBLINKS_FIELD_URL_DESC="You must enter a URL. IDN (International) Links are converted to punycode when they are saved."
@ -79,14 +82,21 @@ COM_WEBLINKS_FIELD_WIDTH_LABEL="Width"
COM_WEBLINKS_FIELDSET_IMAGES="Images"
COM_WEBLINKS_FIELDSET_OPTIONS="Options"
COM_WEBLINKS_FILTER_CATEGORY="Filter Category"
COM_WEBLINKS_FILTER_SEARCH_DESC="Search in web link title and alias. Prefix with ID: to search for a web link ID."
COM_WEBLINKS_FILTER_SEARCH_LABEL="Search Web Links"
COM_WEBLINKS_FILTER_STATE="Filter State"
COM_WEBLINKS_FLOAT_DESC="Controls placement of the image."
COM_WEBLINKS_FLOAT_LABEL="Image Float"
COM_WEBLINKS_FLOAT_FIRST_DESC="Controls placement of the first image."
COM_WEBLINKS_FLOAT_FIRST_LABEL="First Image Float"
COM_WEBLINKS_FLOAT_SECOND_DESC="Controls placement of the second image."
COM_WEBLINKS_FLOAT_SECOND_LABEL="Second Image Float"
COM_WEBLINKS_HEADING_ASSOCIATION="Association"
COM_WEBLINKS_HITS_DESC="Number of hits for this web link."
COM_WEBLINKS_LEFT="Left"
COM_WEBLINKS_LIST_LAYOUT_DESC="These settings apply for Web Links List Layout Options unless they are changed for a specific menu item."
COM_WEBLINKS_MANAGER_WEBLINK="Web Links Manager: Web Link"
COM_WEBLINKS_MANAGER_WEBLINKS="Web Links Manager: Web Links"
COM_WEBLINKS_MANAGER_WEBLINK="Web Links"
COM_WEBLINKS_MANAGER_WEBLINKS="Web Links"
COM_WEBLINKS_MANAGER_WEBLINK_EDIT="Web Link: Edit"
COM_WEBLINKS_MANAGER_WEBLINK_NEW="Web Link: New"
COM_WEBLINKS_N_ITEMS_ARCHIVED="%d web links successfully archived."
COM_WEBLINKS_N_ITEMS_ARCHIVED_1="%d web link successfully archived."
COM_WEBLINKS_N_ITEMS_CHECKED_IN_0="No web link successfully checked in."
@ -110,12 +120,14 @@ COM_WEBLINKS_ORDER_HEADING="Order"
COM_WEBLINKS_RIGHT="Right"
COM_WEBLINKS_SAVE_SUCCESS="Web link successfully saved"
COM_WEBLINKS_SEARCH_IN_TITLE="Search in title"
COM_WEBLINKS_SELECT_A_WEBLINK="Select Web Link"
COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC="If Show, empty categories will display. A category is only empty - if it has no Web links or subcategories."
COM_WEBLINKS_SUBMENU_CATEGORIES="Categories"
COM_WEBLINKS_SUBMENU_WEBLINKS="Web Links"
COM_WEBLINKS_WEBLINKS="Web Links"
COM_WEBLINKS_XML_DESCRIPTION="Component for web links management"
JGLOBAL_NO_ITEM_SELECTED="No web links selected"
JGLOBAL_NEWITEMSLAST_DESC="New Web links default to the last position. Ordering can be changed after this Web link is saved."
JLIB_APPLICATION_ERROR_BATCH_CANNOT_CREATE="You are not allowed to create new web links in this category."
JLIB_APPLICATION_ERROR_BATCH_CANNOT_EDIT="You are not allowed to edit one or more of these web links."
JLIB_RULES_SETTING_NOTES="1. If you change the setting, it will apply to this component. Note that:<br /><em>Inherited</em> means that the permissions from global configuration and parent group will be used.<br /><em>Denied</em> means that no matter what the global configuration or parent group settings are, the group being edited can't take this action on this component.<br /><em>Allowed</em> means that the group being edited will be able to take this action for this component (but if this is in conflict with the global configuration or parent group it will have no impact; a conflict will be indicated by <em>Not Allowed (Locked)</em> under Calculated Settings).<br />2. If you select a new setting, click <em>Save</em> to refresh the calculated settings."
JLIB_RULES_SETTING_NOTES="Changes apply to this component only.<br /><em><strong>Inherited</strong></em> - a Global Configuration setting or higher level setting is applied.<br /><em><strong>Denied</strong></em> always wins - whatever is set at the Global or higher level and applies to all child elements.<br /><em><strong>Allowed</strong></em> will enable the action for this component unless it is overruled by a Global Configuration setting."

View File

@ -1,9 +1,9 @@
; Joomla! Project
; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.
; Copyright (C) 2005 - 2017 Open Source Matters. All rights reserved.
; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php
; Note : All ini files need to be saved as UTF-8
COM_WEBLINKS="Weblinks"
COM_WEBLINKS="Web Links"
COM_WEBLINKS_CATEGORIES="Categories"
COM_WEBLINKS_CATEGORIES_VIEW_DEFAULT_DESC="Show all the web link categories within a category."
COM_WEBLINKS_CATEGORIES_VIEW_DEFAULT_OPTION="Default"
@ -15,9 +15,15 @@ COM_WEBLINKS_CATEGORY_VIEW_DEFAULT_OPTION="Default"
COM_WEBLINKS_CATEGORY_VIEW_DEFAULT_TITLE="List Web Links in a Category"
COM_WEBLINKS_CONTENT_TYPE_WEBLINK="Web Link"
COM_WEBLINKS_CONTENT_TYPE_CATEGORY="Web Links Category"
COM_WEBLINKS_FIELD_SELECT_WEBLINK_DESC="Select the desired Web link from the list."
COM_WEBLINKS_FIELD_SELECT_WEBLINK_LABEL="Select Weblink"
COM_WEBLINKS_FORM_VIEW_DEFAULT_DESC="Display a form to submit a web link in the Frontend."
COM_WEBLINKS_FORM_VIEW_DEFAULT_OPTION="Default"
COM_WEBLINKS_FORM_VIEW_DEFAULT_TITLE="Submit a Web Link"
COM_WEBLINKS_LINKS="Links"
COM_WEBLINKS_TAGS_WEBLINK="Web Link"
COM_WEBLINKS_TAGS_CATEGORY="Web Link Category"
COM_WEBLINKS_WEBLINK_VIEW_DEFAULT_DESC="Display a single Web link"
COM_WEBLINKS_WEBLINK_VIEW_DEFAULT_TITLE="Single Weblink"
COM_WEBLINKS_XML_DESCRIPTION="Component for web links management."

View File

@ -1,24 +1,27 @@
<?xml version="1.0" encoding="UTF-8" ?>
<extension type="package" version="3.0" method="upgrade">
<extension type="package" version="3.6" method="upgrade">
<name>pkg_weblinks</name>
<packagename>weblinks</packagename>
<creationDate>December 2012</creationDate>
<creationDate>##DATE##</creationDate>
<packager>Joomla! Project</packager>
<copyright>(C) 2005 - 2015 Open Source Matters. All rights reserved.</copyright>
<copyright>(C) 2005 - ##YEAR## Open Source Matters. All rights reserved.</copyright>
<packageremail>admin@joomla.org</packageremail>
<packagerurl>www.joomla.org</packagerurl>
<author>Joomla! Project</author>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>3.4.1</version>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>##VERSION##</version>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<description>PKG_WEBLINKS_XML_DESCRIPTION</description>
<scriptfile>script.php</scriptfile>
<files>
<!-- The id for each extension is the element stored in the DB -->
<file type="component" id="com_weblinks">com_weblinks.zip</file>
<file type="module" id="mod_weblinks" client="site">mod_weblinks.zip</file>
<file type="plugin" id="weblinks" group="finder">plg_finder_weblinks.zip</file>
<file type="plugin" id="weblinks" group="search">plg_search_weblinks.zip</file>
<file type="plugin" id="weblinks" group="system">plg_system_weblinks.zip</file>
<file type="plugin" id="weblinks" group="editors-xtd">plg_editors-xtd_weblink.zip</file>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_weblinks.sys.ini</language>

View File

@ -0,0 +1,29 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Installation class to perform additional changes during install/uninstall/update
*
* @since __DEPLOY_VERSION__
*/
class Pkg_WeblinksInstallerScript extends JInstallerScript
{
/**
* Extension script constructor.
*
* @since __DEPLOY_VERSION__
*/
public function __construct()
{
$this->minimumJoomla = '3.6.3';
$this->minimumPhp = JOOMLA_MINIMUM_PHP;
}
}

View File

@ -1,367 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<config>
<fieldset name="component"
label="COM_WEBLINKS_COMPONENT_LABEL"
description="COM_WEBLINKS_COMPONENT_DESC"
>
<field name="target" type="list"
default="0"
description="COM_WEBLINKS_FIELD_TARGET_DESC"
label="COM_WEBLINKS_FIELD_TARGET_LABEL"
>
<option value="0">JBROWSERTARGET_PARENT</option>
<option value="1">JBROWSERTARGET_NEW</option>
<option value="2">JBROWSERTARGET_POPUP</option>
<option value="3">JBROWSERTARGET_MODAL</option>
</field>
<field
name="save_history"
type="radio"
class="btn-group btn-group-yesno"
default="0"
label="JGLOBAL_SAVE_HISTORY_OPTIONS_LABEL"
description="JGLOBAL_SAVE_HISTORY_OPTIONS_DESC"
>
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field
name="history_limit"
type="text"
filter="integer"
label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL"
description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC"
default="5"
/>
<field name="count_clicks" type="radio"
class="btn-group btn-group-yesno"
default="1"
label="COM_WEBLINKS_FIELD_COUNTCLICKS_LABEL"
description="COM_WEBLINKS_FIELD_COUNTCLICKS_DESC">
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field name="icons" type="list"
default="1"
label="COM_WEBLINKS_FIELD_ICON_LABEL"
description="COM_WEBLINKS_FIELD_ICON_DESC"
filter="integer">
<option value="0">COM_WEBLINKS_FIELD_ICON_OPTION_TEXT</option>
<option value="1">COM_WEBLINKS_FIELD_ICON_OPTION_ICON</option>
<option value="2">COM_WEBLINKS_FIELD_ICON_OPTION_WEBLINK</option>
</field>
<field name="link_icons" type="media"
description="COM_WEBLINKS_FIELD_CONFIG_ICON_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_ICON_LABEL"
/>
<field
name="float_first"
type="list"
label="COM_WEBLINKS_FLOAT_LABEL"
description="COM_WEBLINKS_FLOAT_DESC">
<option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option>
</field>
<field
name="float_second"
type="list"
label="COM_WEBLINKS_FLOAT_LABEL"
description="COM_WEBLINKS_FLOAT_DESC">
<option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option>
</field>
<field
id="show_tags"
name="show_tags"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="COM_WEBLINKS_FIELD_SHOW_TAGS_LABEL"
description="COM_WEBLINKS_FIELD_SHOW_TAGS_DESC">
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset name="category"
label="JCATEGORY"
description="COM_WEBLINKS_CATEGORY_DESC"
>
<field
name="category_layout" type="componentlayout"
label="JGLOBAL_FIELD_LAYOUT_LABEL"
description="JGLOBAL_FIELD_LAYOUT_DESC"
menuitems="true"
extension="com_weblinks"
view="category"
/>
<field name="show_category_title" type="radio"
class="btn-group btn-group-yesno"
label="JGLOBAL_SHOW_CATEGORY_TITLE"
description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC"
default="1"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_description"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC">
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_description_image"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL"
description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC">
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="maxLevel" type="list"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
default="-1"
>
<option value="0">JNONE</option>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field name="show_empty_categories" type="radio"
class="btn-group btn-group-yesno"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
default="0"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_subcat_desc" type="radio"
class="btn-group btn-group-yesno"
default="1"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_cat_num_links" type="radio"
class="btn-group btn-group-yesno"
default="1"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_cat_tags" type="radio"
label="COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_LABEL"
description="COM_WEBLINKS_FIELD_SHOW_CAT_TAGS_DESC"
class="btn-group btn-group-yesno"
default="1"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset name="categories"
label="JCATEGORIES"
description="COM_WEBLINKS_CATEGORIES_DESC"
>
<field name="show_base_description" type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL"
description="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="maxLevelcat" type="list"
default="-1"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field name="show_empty_categories_cat" type="radio"
class="btn-group btn-group-yesno"
default="0"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_subcat_desc_cat" type="radio"
class="btn-group btn-group-yesno"
default="1"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_cat_num_links_cat" type="radio"
class="btn-group btn-group-yesno"
default="1"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset name="list_layout"
label="JGLOBAL_LIST_LAYOUT_OPTIONS"
description="COM_WEBLINKS_LIST_LAYOUT_DESC"
>
<field
name="filter_field"
type="list"
default="1"
description="JGLOBAL_FILTER_FIELD_DESC"
label="JGLOBAL_FILTER_FIELD_LABEL"
>
<option value="1">JSHOW</option>
<option value="hide">JHIDE</option>
</field>
<field
name="show_pagination_limit"
type="radio" default="1"
class="btn-group btn-group-yesno"
label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC">
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_headings" type="radio"
default="1"
class="btn-group btn-group-yesno"
description="JGLOBAL_SHOW_HEADINGS_DESC"
label="JGLOBAL_SHOW_HEADINGS_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_link_description" type="radio"
default="1"
class="btn-group btn-group-yesno"
description="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_link_hits" type="radio"
class="btn-group btn-group-yesno"
default="1"
description="COM_WEBLINKS_FIELD_CONFIG_HITS_DESC"
label="JGLOBAL_HITS"
>
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
<field name="show_pagination"
type="list"
default="2"
label="JGLOBAL_PAGINATION_LABEL"
description="JGLOBAL_PAGINATION_DESC">
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
<option value="2">JGLOBAL_AUTO</option>
</field>
<field name="show_pagination_results"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_PAGINATION_RESULTS_LABEL"
description="JGLOBAL_PAGINATION_RESULTS_DESC">
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset
name="integration"
label="JGLOBAL_INTEGRATION_LABEL"
description="COM_WEBLINKS_CONFIG_INTEGRATION_SETTINGS_DESC"
>
<field
name="show_feed_link"
type="radio"
class="btn-group btn-group-yesno"
default="1"
label="JGLOBAL_SHOW_FEED_LINK_LABEL"
description="JGLOBAL_SHOW_FEED_LINK_DESC">
<option value="1">JSHOW</option>
<option value="0">JHIDE</option>
</field>
</fieldset>
<fieldset name="permissions"
description="JCONFIG_PERMISSIONS_DESC"
label="JCONFIG_PERMISSIONS_LABEL"
>
<field name="rules" type="rules"
component="com_weblinks"
filter="rules"
validate="rules"
label="JCONFIG_PERMISSIONS_LABEL"
section="component" />
</fieldset>
</config>

View File

@ -1,42 +0,0 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Weblinks helper.
*
* @since 1.6
*/
class WeblinksHelper extends JHelperContent
{
/**
* Configure the Linkbar.
*
* @param string $vName The name of the active view.
*
* @return void
*
* @since 1.6
*/
public static function addSubmenu($vName = 'weblinks')
{
JHtmlSidebar::addEntry(
JText::_('COM_WEBLINKS_SUBMENU_WEBLINKS'),
'index.php?option=com_weblinks&view=weblinks',
$vName == 'weblinks'
);
JHtmlSidebar::addEntry(
JText::_('COM_WEBLINKS_SUBMENU_CATEGORIES'),
'index.php?option=com_categories&extension=com_weblinks',
$vName == 'categories'
);
}
}

View File

@ -1,265 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset
addfieldpath="/administrator/components/com_categories/models/fields"
>
<field name="id" type="text" default="0" label="JGLOBAL_FIELD_ID_LABEL"
readonly="true" class="readonly"
description="JGLOBAL_FIELD_ID_DESC"/>
<field name="title" type="text"
class="input-xxlarge input-large-text"
size="40" label="JGLOBAL_TITLE"
description="COM_WEBLINKS_FIELD_TITLE_DESC" required="true" />
<field name="alias" type="text"
size="40" label="JFIELD_ALIAS_LABEL"
description="COM_WEBLINKS_FIELD_ALIAS_DESC"
hint="JFIELD_ALIAS_PLACEHOLDER" />
<field name="catid" type="categoryedit" extension="com_weblinks"
label="JCATEGORY" description="COM_WEBLINKS_FIELD_CATEGORY_DESC"
>
</field>
<field name="url" type="url"
class="span12"
filter="url"
size="40" label="COM_WEBLINKS_FIELD_URL_LABEL"
description="COM_WEBLINKS_FIELD_URL_DESC" required="true" />
<field name="description" type="editor" buttons="true" hide="pagebreak,readmore"
filter="JComponentHelper::filterText"
label="JGLOBAL_DESCRIPTION" description="COM_WEBLINKS_FIELD_DESCRIPTION_DESC" />
<field name="hits"
type="text"
class="readonly"
size="6" label="JGLOBAL_HITS"
description="COM_WEBLINKS_HITS_DESC"
readonly="true"
filter="unset" />
<field
name="state"
type="list"
label="JSTATUS"
description="COM_WEBLINKS_FIELD_STATE_DESC"
class="chzn-color-state"
size="1"
default="1">
<option
value="1">JPUBLISHED</option>
<option
value="0">JUNPUBLISHED</option>
<option
value="2">JARCHIVED</option>
<option
value="-3">COM_WEBLINKS_FIELD_VALUE_REPORTED</option>
<option
value="-2">JTRASHED</option>
</field>
<field name="ordering" type="ordering"
label="JFIELD_ORDERING_LABEL"
description="JFIELD_ORDERING_DESC"
content_type="com_weblinks.weblink"
/>
<field name="access" type="accesslevel" label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC" size="1" />
<field
name="language"
type="contentlanguage"
label="JFIELD_LANGUAGE_LABEL"
description="COM_WEBLINKS_FIELD_LANGUAGE_DESC"
>
<option value="*">JALL</option>
</field>
<field name="tags"
type="tag"
label="JTAG"
description="JTAG_DESC"
multiple="true"
>
</field>
<field name="version_note"
type="text"
label="JGLOBAL_FIELD_VERSION_NOTE_LABEL"
description="JGLOBAL_FIELD_VERSION_NOTE_DESC"
size="45"
labelclass="control-label"
/>
<field name="created" type="calendar"
label="JGLOBAL_FIELD_CREATED_LABEL" description="JGLOBAL_FIELD_CREATED_DESC"
size="22" format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<field name="created_by" type="user"
label="JGLOBAL_FIELD_CREATED_BY_LABEL" description="JGLOBAL_FIELD_CREATED_BY_Desc" />
<field name="created_by_alias" type="text"
label="JGLOBAL_FIELD_CREATED_BY_ALIAS_LABEL" description="JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC"
size="20" />
<field name="modified" type="calendar" class="readonly"
label="JGLOBAL_FIELD_MODIFIED_LABEL" description="COM_WEBLINKS_FIELD_MODIFIED_DESC"
size="22" readonly="true" format="%Y-%m-%d %H:%M:%S"
filter="user_utc" />
<field name="modified_by" type="user"
label="JGLOBAL_FIELD_MODIFIED_BY_LABEL"
class="readonly"
readonly="true"
filter="unset" />
<field name="checked_out" type="hidden" filter="unset" />
<field name="checked_out_time" type="hidden" filter="unset" />
<field name="publish_up" type="calendar"
label="JGLOBAL_FIELD_PUBLISH_UP_LABEL" description="JGLOBAL_FIELD_PUBLISH_UP_DESC"
format="%Y-%m-%d %H:%M:%S" size="22"
filter="user_utc" />
<field name="publish_down" type="calendar"
label="JGLOBAL_FIELD_PUBLISH_DOWN_LABEL" description="JGLOBAL_FIELD_PUBLISH_DOWN_DESC"
format="%Y-%m-%d %H:%M:%S" size="22"
filter="user_utc" />
<field name="version" type="text" class="readonly"
label="COM_WEBLINKS_FIELD_VERSION_LABEL" size="6" description="COM_WEBLINKS_FIELD_VERSION_DESC"
readonly="true" filter="unset" />
<field name="metakey" type="textarea"
label="JFIELD_META_KEYWORDS_LABEL" description="JFIELD_META_KEYWORDS_DESC"
rows="3" cols="30" />
<field name="metadesc" type="textarea"
label="JFIELD_META_DESCRIPTION_LABEL" description="JFIELD_META_DESCRIPTION_DESC"
rows="3" cols="30" />
<field name="xreference" type="text"
label="JFIELD_XREFERENCE_LABEL" description="JFIELD_XREFERENCE_DESC"
size="20" />
</fieldset>
<fields name="params" label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS">
<fieldset name="jbasic" label="COM_WEBLINKS_FIELDSET_OPTIONS">
<field name="target" type="list" default=""
label="COM_WEBLINKS_FIELD_TARGET_LABEL" description="COM_WEBLINKS_FIELD_TARGET_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JBROWSERTARGET_PARENT</option>
<option value="1">JBROWSERTARGET_NEW</option>
<option value="2">JBROWSERTARGET_POPUP</option>
<option value="3">JBROWSERTARGET_MODAL</option>
</field>
<field name="width" type="text"
class="validate-numeric" label="COM_WEBLINKS_FIELD_WIDTH_LABEL"
description="COM_WEBLINKS_FIELD_WIDTH_DESC" />
<field name="height" type="text"
class="validate-numeric" label="COM_WEBLINKS_FIELD_HEIGHT_LABEL"
description="COM_WEBLINKS_FIELD_HEIGHT_DESC" />
<field name="count_clicks" type="list"
class="chzn-color"
label="COM_WEBLINKS_FIELD_COUNTCLICKS_LABEL"
description="COM_WEBLINKS_FIELD_COUNTCLICKS_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
</fieldset>
</fields>
<fields name="images">
<fieldset name="images" label="JGLOBAL_FIELDSET_IMAGE_OPTIONS">
<field
name="image_first"
type="media"
label="COM_WEBLINKS_FIELD_FIRST_LABEL"
description="COM_WEBLINKS_FIELD_FIRST_DESC" />
<field
name="float_first"
type="list"
label="COM_WEBLINKS_FLOAT_LABEL"
description="COM_WEBLINKS_FLOAT_DESC">
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option>
</field>
<field name="image_first_alt"
type="text"
label="COM_WEBLINKS_FIELD_IMAGE_ALT_LABEL"
description="COM_WEBLINKS_FIELD_IMAGE_ALT_DESC"
size="20" />
<field name="image_first_caption"
type="text"
label="COM_WEBLINKS_FIELD_IMAGE_CAPTION_LABEL"
description="COM_WEBLINKS_FIELD_IMAGE_CAPTION_DESC"
size="20" />
<field name="spacer1"
type="spacer"
hr="true" />
<field
name="image_second"
type="media"
label="COM_WEBLINKS_FIELD_SECOND_LABEL"
description="COM_WEBLINKS_FIELD_SECOND_DESC" />
<field
name="float_second"
type="list"
label="COM_WEBLINKS_FLOAT_LABEL"
description="COM_WEBLINKS_FLOAT_DESC">
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option>
</field>
<field name="image_second_alt"
type="text"
label="COM_WEBLINKS_FIELD_IMAGE_ALT_LABEL"
description="COM_WEBLINKS_FIELD_IMAGE_ALT_DESC"
size="20" />
<field name="image_second_caption"
type="text"
label="COM_WEBLINKS_FIELD_IMAGE_CAPTION_LABEL"
description="COM_WEBLINKS_FIELD_IMAGE_CAPTION_DESC"
size="20" />
</fieldset>
</fields>
<fields name="metadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS">
<fieldset name="jmetadata" label="JGLOBAL_FIELDSET_METADATA_OPTIONS">
<field name="robots"
type="list"
label="JFIELD_METADATA_ROBOTS_LABEL"
description="JFIELD_METADATA_ROBOTS_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="index, follow">JGLOBAL_INDEX_FOLLOW</option>
<option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option>
<option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option>
<option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option>
</field>
<field name="rights" type="text"
label="JFIELD_META_RIGHTS_LABEL" description="JFIELD_META_RIGHTS_DESC"
required="false" filter="string" cols="30" rows="2" />
</fieldset>
</fields>
</form>

View File

@ -1,238 +0,0 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Methods supporting a list of weblink records.
*
* @since 1.6
*/
class WeblinksModelWeblinks extends JModelList
{
/**
* Constructor.
*
* @param array An optional associative array of configuration settings.
*
* @see JControllerLegacy
* @since 1.6
*/
public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'id', 'a.id',
'title', 'a.title',
'alias', 'a.alias',
'checked_out', 'a.checked_out',
'checked_out_time', 'a.checked_out_time',
'catid', 'a.catid', 'category_title',
'state', 'a.state',
'access', 'a.access', 'access_level',
'created', 'a.created',
'created_by', 'a.created_by',
'ordering', 'a.ordering',
'featured', 'a.featured',
'language', 'a.language',
'hits', 'a.hits',
'publish_up', 'a.publish_up',
'publish_down', 'a.publish_down',
'url', 'a.url',
);
}
parent::__construct($config);
}
/**
* Method to auto-populate the model state.
*
* @return void
*
* @note Calling getState in this method will result in recursion.
* @since 1.6
*/
protected function populateState($ordering = null, $direction = null)
{
// Load the filter state.
$search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search');
$this->setState('filter.search', $search);
$accessId = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', null, 'int');
$this->setState('filter.access', $accessId);
$published = $this->getUserStateFromRequest($this->context . '.filter.state', 'filter_state', '', 'string');
$this->setState('filter.state', $published);
$categoryId = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id', '');
$this->setState('filter.category_id', $categoryId);
$language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', '');
$this->setState('filter.language', $language);
$tag = $this->getUserStateFromRequest($this->context . '.filter.tag', 'filter_tag', '');
$this->setState('filter.tag', $tag);
// Load the parameters.
$params = JComponentHelper::getParams('com_weblinks');
$this->setState('params', $params);
// List state information.
parent::populateState('a.title', 'asc');
}
/**
* Method to get a store id based on model configuration state.
*
* This is necessary because the model is used by the component and
* different modules that might need different sets of data or different
* ordering requirements.
*
* @param string $id A prefix for the store id.
*
* @return string A store id.
*
* @since 1.6
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':' . $this->getState('filter.search');
$id .= ':' . $this->getState('filter.access');
$id .= ':' . $this->getState('filter.state');
$id .= ':' . $this->getState('filter.category_id');
$id .= ':' . $this->getState('filter.language');
return parent::getStoreId($id);
}
/**
* Build an SQL query to load the list data.
*
* @return JDatabaseQuery
*
* @since 1.6
*/
protected function getListQuery()
{
// Create a new query object.
$db = $this->getDbo();
$query = $db->getQuery(true);
$user = JFactory::getUser();
// Select the required fields from the table.
$query->select(
$this->getState(
'list.select',
'a.id, a.title, a.alias, a.checked_out, a.checked_out_time, a.catid,' .
'a.hits, a.state, a.access, a.ordering, a.language, a.publish_up, a.publish_down'
)
);
$query->from($db->quoteName('#__weblinks') . ' AS a');
// Join over the language
$query->select('l.title AS language_title')
->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language');
// Join over the users for the checked out user.
$query->select('uc.name AS editor')
->join('LEFT', '#__users AS uc ON uc.id=a.checked_out');
// Join over the asset groups.
$query->select('ag.title AS access_level')
->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access');
// Join over the categories.
$query->select('c.title AS category_title')
->join('LEFT', '#__categories AS c ON c.id = a.catid');
// Filter by access level.
if ($access = $this->getState('filter.access'))
{
$query->where('a.access = ' . (int) $access);
}
// Implement View Level Access
if (!$user->authorise('core.admin'))
{
$groups = implode(',', $user->getAuthorisedViewLevels());
$query->where('a.access IN (' . $groups . ')');
}
// Filter by published state
$published = $this->getState('filter.state');
if (is_numeric($published))
{
$query->where('a.state = ' . (int) $published);
}
elseif ($published === '')
{
$query->where('(a.state IN (0, 1))');
}
// Filter by category.
$categoryId = $this->getState('filter.category_id');
if (is_numeric($categoryId))
{
$query->where('a.catid = ' . (int) $categoryId);
}
// Filter by search in title
$search = $this->getState('filter.search');
if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%'));
$query->where('(a.title LIKE ' . $search . ' OR a.alias LIKE ' . $search . ')');
}
}
// Filter on the language.
if ($language = $this->getState('filter.language'))
{
$query->where('a.language = ' . $db->quote($language));
}
$tagId = $this->getState('filter.tag');
// Filter by a single tag.
if (is_numeric($tagId))
{
$query->where($db->quoteName('tagmap.tag_id') . ' = ' . (int) $tagId)
->join(
'LEFT', $db->quoteName('#__contentitem_tag_map', 'tagmap')
. ' ON ' . $db->quoteName('tagmap.content_item_id') . ' = ' . $db->quoteName('a.id')
. ' AND ' . $db->quoteName('tagmap.type_alias') . ' = ' . $db->quote('com_weblinks.weblink')
);
}
// Add the list ordering clause.
$orderCol = $this->state->get('list.ordering');
$orderDirn = $this->state->get('list.direction');
if ($orderCol == 'a.ordering' || $orderCol == 'category_title')
{
$orderCol = 'c.title ' . $orderDirn . ', a.ordering';
}
$query->order($db->escape($orderCol . ' ' . $orderDirn));
return $query;
}
}

View File

@ -1,28 +0,0 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$fieldSets = $this->form->getFieldsets('params');
foreach ($fieldSets as $name => $fieldSet) :
?>
<div class="tab-pane" id="params-<?php echo $name;?>">
<?php
if (isset($fieldSet->description) && trim($fieldSet->description)) :
echo '<p class="alert alert-info">'.$this->escape(JText::_($fieldSet->description)).'</p>';
endif;
?>
<?php foreach ($this->form->getFieldset($name) as $field) : ?>
<div class="control-group">
<div class="control-label"><?php echo $field->label; ?></div>
<div class="controls"><?php echo $field->input; ?></div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>

View File

@ -1,212 +0,0 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
JHtml::_('bootstrap.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('formbehavior.chosen', 'select');
$user = JFactory::getUser();
$userId = $user->get('id');
$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction'));
$canOrder = $user->authorise('core.edit.state', 'com_weblinks.category');
$saveOrder = $listOrder == 'a.ordering';
if ($saveOrder)
{
$saveOrderingUrl = 'index.php?option=com_weblinks&task=weblinks.saveOrderAjax&tmpl=component';
JHtml::_('sortablelist.sortable', 'weblinkList', 'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
$sortFields = $this->getSortFields();
JFactory::getDocument()->addScriptDeclaration('
Joomla.orderTable = function()
{
table = document.getElementById("sortTable");
direction = document.getElementById("directionTable");
order = table.options[table.selectedIndex].value;
if (order != "' . $listOrder . '")
{
dirn = "asc";
}
else
{
dirn = direction.options[direction.selectedIndex].value;
}
Joomla.tableOrdering(order, dirn, "");
};
');
?>
<form action="<?php echo JRoute::_('index.php?option=com_weblinks&view=weblinks'); ?>" method="post" name="adminForm" id="adminForm">
<?php if (!empty( $this->sidebar)) : ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif;?>
<div id="filter-bar" class="btn-toolbar">
<div class="filter-search btn-group pull-left">
<label for="filter_search" class="element-invisible"><?php echo JText::_('COM_WEBLINKS_SEARCH_IN_TITLE');?></label>
<input type="text" name="filter_search" id="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" class="hasTooltip" title="<?php echo JHtml::tooltipText('COM_WEBLINKS_SEARCH_IN_TITLE'); ?>" />
</div>
<div class="btn-group pull-left">
<button type="submit" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_SUBMIT'); ?>"><i class="icon-search"></i></button>
<button type="button" class="btn hasTooltip" title="<?php echo JHtml::tooltipText('JSEARCH_FILTER_CLEAR'); ?>" onclick="document.id('filter_search').value='';this.form.submit();"><i class="icon-remove"></i></button>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<div class="btn-group pull-right hidden-phone">
<label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC');?></label>
<select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo JText::_('JFIELD_ORDERING_DESC');?></option>
<option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING');?></option>
<option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING');?></option>
</select>
</div>
<div class="btn-group pull-right">
<label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY');?></label>
<select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()">
<option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option>
<?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder);?>
</select>
</div>
</div>
<div class="clearfix"> </div>
<?php if (empty($this->items)) : ?>
<div class="alert alert-no-items">
<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table table-striped" id="weblinkList">
<thead>
<tr>
<th width="1%" class="nowrap center hidden-phone">
<?php echo JHtml::_('grid.sort', '<i class="icon-menu-2"></i>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?>
</th>
<th width="1%" class="hidden-phone center">
<?php echo JHtml::_('grid.checkall'); ?>
</th>
<th width="1%" style="min-width:55px" class="nowrap center">
<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
</th>
<th class="title">
<?php echo JHtml::_('grid.sort', 'JGLOBAL_TITLE', 'a.title', $listDirn, $listOrder); ?>
</th>
<th width="5%" class="nowrap hidden-phone">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'a.access', $listDirn, $listOrder); ?>
</th>
<th width="5%" class="nowrap center hidden-phone">
<?php echo JHtml::_('grid.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?>
</th>
<th width="5%" class="nowrap hidden-phone">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'a.language', $listDirn, $listOrder); ?>
</th>
<th width="1%" class="nowrap center hidden-phone">
<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="10">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php foreach ($this->items as $i => $item) :
$ordering = ($listOrder == 'a.ordering');
$item->cat_link = JRoute::_('index.php?option=com_categories&extension=com_weblinks&task=edit&type=other&cid[]='. $item->catid);
$canCreate = $user->authorise('core.create', 'com_weblinks.category.' . $item->catid);
$canEdit = $user->authorise('core.edit', 'com_weblinks.category.' . $item->catid);
$canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0;
$canChange = $user->authorise('core.edit.state', 'com_weblinks.category.' . $item->catid) && $canCheckin;
?>
<tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid?>">
<td class="order nowrap center hidden-phone">
<?php
$iconClass = '';
if (!$canChange)
{
$iconClass = ' inactive';
}
elseif (!$saveOrder)
{
$iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED');
}
?>
<span class="sortable-handler<?php echo $iconClass ?>">
<i class="icon-menu"></i>
</span>
<?php if ($canChange && $saveOrder) : ?>
<input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering;?>" class="width-20 text-area-order " />
<?php endif; ?>
</td>
<td class="center hidden-phone">
<?php echo JHtml::_('grid.id', $i, $item->id); ?>
</td>
<td class="center">
<?php echo JHtml::_('jgrid.published', $item->state, $i, 'weblinks.', $canChange, 'cb', $item->publish_up, $item->publish_down); ?>
</td>
<td class="nowrap has-context">
<?php if ($item->checked_out) : ?>
<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'weblinks.', $canCheckin); ?>
<?php endif; ?>
<?php if ($canEdit) : ?>
<a href="<?php echo JRoute::_('index.php?option=com_weblinks&task=weblink.edit&id='.(int) $item->id); ?>">
<?php echo $this->escape($item->title); ?></a>
<?php else : ?>
<?php echo $this->escape($item->title); ?>
<?php endif; ?>
<span class="small">
<?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->alias));?>
</span>
<div class="small">
<?php echo $this->escape($item->category_title); ?>
</div>
</td>
<td class="small hidden-phone">
<?php echo $this->escape($item->access_level); ?>
</td>
<td class="center hidden-phone">
<?php echo $item->hits; ?>
</td>
<td class="small nowrap hidden-phone">
<?php if ($item->language == '*'):?>
<?php echo JText::alt('JALL', 'language'); ?>
<?php else:?>
<?php echo $item->language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?>
<?php endif;?>
</td>
<td class="center hidden-phone">
<?php echo (int) $item->id; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php endif; ?>
<?php //Load the batch processing form. ?>
<?php echo $this->loadTemplate('batch'); ?>
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
<?php echo JHtml::_('form.token'); ?>
</div>
</form>

View File

@ -1,56 +0,0 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
$published = $this->state->get('filter.state');
?>
<div class="modal hide fade" id="collapseModal">
<div class="modal-header">
<button type="button" role="presentation" class="close" data-dismiss="modal">&#215;</button>
<h3><?php echo JText::_('COM_WEBLINKS_BATCH_OPTIONS'); ?></h3>
</div>
<div class="modal-body modal-batch">
<p><?php echo JText::_('COM_WEBLINKS_BATCH_TIP'); ?></p>
<div class="row-fluid">
<div class="control-group span6">
<div class="controls">
<?php echo JHtml::_('batch.tag'); ?>
</div>
</div>
<div class="control-group span6">
<div class="controls">
<?php echo JHtml::_('batch.language'); ?>
</div>
</div>
</div>
<div class="row-fluid">
<div class="control-group span6">
<div class="controls">
<?php echo JHtml::_('batch.access'); ?>
</div>
</div>
<?php if ($published >= 0) : ?>
<div class="control-group span6">
<div class="controls">
<?php echo JHtml::_('batch.item', 'com_weblinks'); ?>
</div>
</div>
<?php endif; ?>
</div>
</div>
<div class="modal-footer">
<button class="btn" type="button" onclick="document.id('batch-category-id').value='';document.id('batch-access').value='';document.id('batch-language-id').value='';document.id('batch-tag-id)').value=''" data-dismiss="modal">
<?php echo JText::_('JCANCEL'); ?>
</button>
<button class="btn btn-primary" type="submit" onclick="Joomla.submitbutton('weblink.batch');">
<?php echo JText::_('JGLOBAL_BATCH_PROCESS'); ?>
</button>
</div>
</div>

View File

@ -1,140 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset addfieldpath="/administrator/components/com_categories/models/fields">
<field name="id" type="hidden"
label="WEBLINK_ID_LABEL"
readonly="true"
required="true"
size="10"
default="0"
/>
<field
id="contenthistory"
name="contenthistory"
type="contenthistory"
data-typeAlias="com_weblinks.weblink"
label="JTOOLBAR_VERSIONS" />
<field name="title" type="text"
description="COM_WEBLINKS_FIELD_TITLE_DESC"
label="JGLOBAL_TITLE"
required="true"
size="30"
/>
<field name="alias" type="text"
description="COM_WEBLINKS_FIELD_ALIAS_DESC"
label="JFIELD_ALIAS_LABEL"
hint="JFIELD_ALIAS_PLACEHOLDER"
size="45"
/>
<field name="description" type="editor"
buttons="true"
hide="pagebreak,readmore"
description="COM_WEBLINKS_FIELD_DESCRIPTION_DESC"
filter="safehtml"
label="JGLOBAL_DESCRIPTION"
asset_id="com_weblinks"
/>
<field name="state" type="list"
default="1"
description="JFIELD_PUBLISHED_DESC"
label="JSTATUS"
size="1"
>
<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
</field>
<field name="catid" type="categoryedit"
description="COM_WEBLINKS_FIELD_CATEGORY_DESC"
extension="com_weblinks"
label="JCATEGORY"
required="true"
/>
<field name="url" type="url"
filter="url"
description="COM_WEBLINKS_FIELD_URL_DESC"
label="COM_WEBLINKS_FIELD_URL_LABEL"
required="true"
size="45"
/>
<field
name="language"
type="contentlanguage"
label="JFIELD_LANGUAGE_LABEL"
description="JFIELD_LANGUAGE_DESC"
class="inputbox">
<option value="*">JALL</option>
</field>
<field name="tags"
type="tag"
label="JTAG"
description="JTAG_DESC"
class="inputbox"
multiple="true" />
<field
name="version_note"
type="text"
label="JGLOBAL_FIELD_VERSION_NOTE_LABEL"
description="JGLOBAL_FIELD_VERSION_NOTE_DESC"
class="inputbox"
size="45"
labelclass="control-label" />
</fieldset>
<fields name="metadata">
<fieldset name="jmetadata"
label="JGLOBAL_FIELDSET_METADATA_OPTIONS">
<field name="robots"
type="hidden"
filter="unset"
label="JFIELD_METADATA_ROBOTS_LABEL"
description="JFIELD_METADATA_ROBOTS_DESC"
labelclass="control-label"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="index, follow">JGLOBAL_INDEX_FOLLOW</option>
<option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option>
<option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option>
<option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option>
</field>
<field name="author"
type="hidden"
filter="unset"
label="JAUTHOR"
description="JFIELD_METADATA_AUTHOR_DESC"
size="20"
labelclass="control-label"
/>
<field name="rights"
type="hidden"
label="JFIELD_META_RIGHTS_LABEL"
filter="unset"
description="JFIELD_META_RIGHTS_DESC"
required="false"
labelclass="control-label"
/>
<field name="xreference"
type="hidden"
filter="unset"
label="COM_CONTENT_FIELD_XREFERENCE_LABEL"
description="COM_CONTENT_FIELD_XREFERENCE_DESC"
class="inputbox"
size="20"
labelclass="control-label" />
</fieldset>
</fields>
</form>

View File

@ -1,128 +0,0 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/tables');
/**
* Weblinks Component Model for a Weblink record
*
* @since 1.5
*/
class WeblinksModelWeblink extends JModelItem
{
/**
* Model context string.
*
* @var string
*/
protected $_context = 'com_weblinks.weblink';
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @since 1.6
*/
protected function populateState()
{
$app = JFactory::getApplication();
$params = $app->getParams();
// Load the object state.
$id = $app->input->getInt('id');
$this->setState('weblink.id', $id);
// Load the parameters.
$this->setState('params', $params);
}
/**
* Method to get an object.
*
* @param integer The id of the object to get.
*
* @return mixed Object on success, false on failure.
*/
public function getItem($id = null)
{
if ($this->_item === null)
{
$this->_item = false;
if (empty($id))
{
$id = $this->getState('weblink.id');
}
// Get a level row instance.
$table = JTable::getInstance('Weblink', 'WeblinksTable');
// Attempt to load the row.
if ($table->load($id))
{
// Check published state.
if ($published = $this->getState('filter.published'))
{
if ($table->state != $published)
{
return $this->_item;
}
}
// Convert the JTable to a clean JObject.
$properties = $table->getProperties(1);
$this->_item = JArrayHelper::toObject($properties, 'JObject');
}
elseif ($error = $table->getError())
{
$this->setError($error);
}
}
return $this->_item;
}
/**
* Returns a reference to the a Table object, always creating it.
*
* @param type The table type to instantiate
* @param string A prefix for the table class name. Optional.
* @param array Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'Weblink', $prefix = 'WeblinksTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to increment the hit counter for the weblink
*
* @param integer $id Optional ID of the weblink.
*
* @return boolean True on success
*/
public function hit($id = null)
{
if (empty($id))
{
$id = $this->getState('weblink.id');
}
$weblink = $this->getTable('Weblink', 'WeblinksTable');
return $weblink->hit($id);
}
}

View File

@ -1,243 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="com_weblinks_categories_view_default_title" option="com_weblinks_categories_view_default_option">
<help
key="JHELP_MENUS_MENU_ITEM_WEBLINK_CATEGORIES"
/>
<message>
<![CDATA[com_weblinks_categories_view_default_desc]]>
</message>
</layout>
<!-- Add fields to the request variables for the layout. -->
<fields name="request">
<fieldset name="request"
>
<field name="id" type="category"
description="JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_DESC"
extension="com_weblinks"
label="JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_LABEL"
show_root="true"
required="true"
/>
</fieldset>
</fields>
<!-- Add fields to the parameters object for the layout. -->
<fields name="params">
<fieldset name="basic" label="JGLOBAL_CATEGORIES_OPTIONS">
<field name="show_base_description" type="list"
label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL"
description="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="categories_description" type="textarea"
description="JGLOBAL_FIELD_CATEGORIES_DESC_DESC"
label="JGLOBAL_FIELD_CATEGORIES_DESC_LABEL"
cols="25"
rows="5"
/>
<field name="maxLevelcat" type="list"
default="-1"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field name="show_empty_categories_cat" type="list"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_subcat_desc_cat" type="list"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_cat_num_links_cat" type="list"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="category" label="JGLOBAL_CATEGORY_OPTIONS">
<field name="spacer1" type="spacer" class="text"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
/>
<field name="show_category_title" type="list"
label="JGLOBAL_SHOW_CATEGORY_TITLE"
description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_description" type="list"
description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_description_image" type="list"
description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC"
label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="maxLevel" type="list"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JNONE</option>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field name="show_empty_categories" type="list"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_subcat_desc" type="list"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_cat_num_links" type="list"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="advanced" label="JGLOBAL_LIST_LAYOUT_OPTIONS">
<field name="spacer2" type="spacer" class="text"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
/>
<field
name="filter_field"
type="list"
default=""
description="JGLOBAL_FILTER_FIELD_DESC"
label="JGLOBAL_FILTER_FIELD_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="hide">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_pagination_limit" type="list"
label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC">
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_headings" type="list"
description="JGLOBAL_SHOW_HEADINGS_DESC"
label="JGLOBAL_SHOW_HEADINGS_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_link_description" type="list"
description="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_link_hits" type="list"
description="COM_WEBLINKS_FIELD_CONFIG_HITS_DESC"
label="JGLOBAL_HITS"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_pagination" type="list"
description="JGLOBAL_PAGINATION_DESC"
label="JGLOBAL_PAGINATION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
<option value="2">JGLOBAL_AUTO</option>
</field>
<field name="show_pagination_results" type="list"
label="JGLOBAL_PAGINATION_RESULTS_LABEL"
description="JGLOBAL_PAGINATION_RESULTS_DESC">
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
</fields>
</metadata>

View File

@ -1,195 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="com_weblinks_category_view_default_title" option="com_weblinks_category_view_default_option">
<help
key="JHELP_MENUS_MENU_ITEM_WEBLINK_CATEGORY"
/>
<message>
<![CDATA[com_weblinks_category_view_default_desc]]>
</message>
</layout>
<!-- Add fields to the request variables for the layout. -->
<fields name="request">
<fieldset name="request">
<field name="id" type="category"
default="0"
description="COM_WEBLINKS_FIELD_SELECT_CATEGORY_DESC"
extension="com_weblinks"
label="COM_WEBLINKS_FIELD_SELECT_CATEGORY_LABEL"
required="true"
/>
</fieldset>
</fields>
<!-- Add fields to the parameters object for the layout. -->
<fields name="params">
<fieldset name="basic" label="JGLOBAL_CATEGORY_OPTIONS">
<field name="spacer1" type="spacer" class="text"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
/>
<field name="show_category_title" type="list"
label="JGLOBAL_SHOW_CATEGORY_TITLE"
description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_description" type="list"
description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_description_image" type="list"
description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC"
label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="maxLevel" type="list"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JNONE</option>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field name="show_empty_categories" type="list"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_subcat_desc" type="list"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_cat_num_links" type="list"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="advanced" label="JGLOBAL_LIST_LAYOUT_OPTIONS">
<field name="spacer2" type="spacer" class="text"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
/>
<field
name="filter_field"
type="list"
default=""
description="JGLOBAL_FILTER_FIELD_DESC"
label="JGLOBAL_FILTER_FIELD_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="hide">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_pagination_limit" type="list"
label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC">
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_headings" type="list"
description="JGLOBAL_SHOW_HEADINGS_DESC"
label="JGLOBAL_SHOW_HEADINGS_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_link_description" type="list"
description="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC"
label="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_link_hits" type="list"
description="COM_WEBLINKS_FIELD_CONFIG_HITS_DESC"
label="JGLOBAL_HITS"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_pagination" type="list"
description="JGLOBAL_PAGINATION_DESC"
label="JGLOBAL_PAGINATION_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
<option value="2">JGLOBAL_AUTO</option>
</field>
<field name="show_pagination_results" type="list"
label="JGLOBAL_PAGINATION_RESULTS_LABEL"
description="JGLOBAL_PAGINATION_RESULTS_DESC">
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="integration"
>
<field name="show_feed_link" type="list"
description="JGLOBAL_SHOW_FEED_LINK_DESC"
label="JGLOBAL_SHOW_FEED_LINK_LABEL"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
</fields>
</metadata>

View File

@ -1,179 +0,0 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('behavior.framework');
// Create a shortcut for params.
$params = &$this->item->params;
// Get the user object.
$user = JFactory::getUser();
// Check if user is allowed to add/edit based on weblinks permissinos.
$canEdit = $user->authorise('core.edit', 'com_weblinks.category.' . $this->category->id);
$canCreate = $user->authorise('core.create', 'com_weblinks');
$canEditState = $user->authorise('core.edit.state', 'com_weblinks');
$n = count($this->items);
$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction'));
?>
<?php if (empty($this->items)) : ?>
<p> <?php echo JText::_('COM_WEBLINKS_NO_WEBLINKS'); ?></p>
<?php else : ?>
<form action="<?php echo htmlspecialchars(JUri::getInstance()->toString()); ?>" method="post" name="adminForm" id="adminForm">
<?php if ($this->params->get('filter_field') != 'hide' || $this->params->get('show_pagination_limit')) :?>
<fieldset class="filters btn-toolbar">
<?php if ($this->params->get('filter_field') != 'hide') :?>
<div class="btn-group">
<label class="filter-search-lbl element-invisible" for="filter-search"><span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span><?php echo JText::_('COM_WEBLINKS_FILTER_LABEL') . '&#160;'; ?></label>
<input type="text" name="filter-search" id="filter-search" value="<?php echo $this->escape($this->state->get('list.filter')); ?>" class="inputbox" onchange="document.adminForm.submit();" title="<?php echo JText::_('COM_WEBLINKS_FILTER_SEARCH_DESC'); ?>" placeholder="<?php echo JText::_('COM_WEBLINKS_FILTER_SEARCH_DESC'); ?>" />
</div>
<?php endif; ?>
<?php if ($this->params->get('show_pagination_limit')) : ?>
<div class="btn-group pull-right">
<label for="limit" class="element-invisible">
<?php echo JText::_('JGLOBAL_DISPLAY_NUM'); ?>
</label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<?php endif; ?>
</fieldset>
<?php endif; ?>
<ul class="category list-striped list-condensed">
<?php foreach ($this->items as $i => $item) : ?>
<?php if (in_array($item->access, $this->user->getAuthorisedViewLevels())) : ?>
<?php if ($this->items[$i]->state == 0) : ?>
<li class="system-unpublished cat-list-row<?php echo $i % 2; ?>">
<?php else: ?>
<li class="cat-list-row<?php echo $i % 2; ?>" >
<?php endif; ?>
<?php if ($this->params->get('show_link_hits', 1)) : ?>
<span class="list-hits badge badge-info pull-right">
<?php echo JText::sprintf('JGLOBAL_HITS_COUNT', $item->hits); ?>
</span>
<?php endif; ?>
<?php if ($canEdit) : ?>
<span class="list-edit pull-left width-50">
<?php echo JHtml::_('icon.edit', $item, $params); ?>
</span>
<?php endif; ?>
<div class="list-title">
<?php if ($this->params->get('icons', 1) == 0) : ?>
<?php echo JText::_('COM_WEBLINKS_LINK'); ?>
<?php elseif ($this->params->get('icons', 1) == 1) : ?>
<?php if (!$this->params->get('link_icons')) : ?>
<?php echo JHtml::_('image', 'system/weblink.png', JText::_('COM_WEBLINKS_LINK'), null, true); ?>
<?php else: ?>
<?php echo '<img src="' . $this->params->get('link_icons') . '" alt="' . JText::_('COM_WEBLINKS_LINK') . '" />'; ?>
<?php endif; ?>
<?php endif; ?>
<?php
// Compute the correct link
$menuclass = 'category' . $this->pageclass_sfx;
$link = $item->link;
$width = $item->params->get('width');
$height = $item->params->get('height');
if ($width == null || $height == null)
{
$width = 600;
$height = 500;
}
if ($this->items[$i]->state == 0) : ?>
<span class="label label-warning">Unpublished</span>
<?php endif; ?>
<?php switch ($item->params->get('target', $this->params->get('target')))
{
case 1:
// Open in a new window
echo '<a href="' . $link . '" target="_blank" class="' . $menuclass . '" rel="nofollow">' .
$this->escape($item->title) . '</a>';
break;
case 2:
// Open in a popup window
$attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' . $this->escape($width) . ',height=' . $this->escape($height) . '';
echo "<a href=\"$link\" onclick=\"window.open(this.href, 'targetWindow', '" . $attribs . "'); return false;\">" .
$this->escape($item->title) . '</a>';
break;
case 3:
// Open in a modal window
JHtml::_('behavior.modal', 'a.modal');
echo '<a class="modal" href="' . $link . '" rel="{handler: \'iframe\', size: {x:' . $this->escape($width) . ', y:' . $this->escape($height) . '}}">' .
$this->escape($item->title) . ' </a>';
break;
default:
// Open in parent window
echo '<a href="' . $link . '" class="' . $menuclass . '" rel="nofollow">' .
$this->escape($item->title) . ' </a>';
break;
}
?>
</div>
<?php $tagsData = $item->tags->getItemTags('com_weblinks.weblink', $item->id); ?>
<?php if ($this->params->get('show_tags', 1)) : ?>
<?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>
<?php echo $this->item->tagLayout->render($tagsData); ?>
<?php endif; ?>
<?php if (($this->params->get('show_link_description')) and ($item->description != '')) : ?>
<?php $images = json_decode($item->images); ?>
<?php if (isset($images->image_first) and !empty($images->image_first)) : ?>
<?php $imgfloat = (empty($images->float_first)) ? $this->params->get('float_first') : $images->float_first; ?>
<div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>"> <img
<?php if ($images->image_first_caption):
echo 'class="caption"'.' title="' .htmlspecialchars($images->image_first_caption) .'"';
endif; ?>
src="<?php echo htmlspecialchars($images->image_first); ?>" alt="<?php echo htmlspecialchars($images->image_first_alt); ?>"/> </div>
<?php endif; ?>
<?php if (isset($images->image_second) and !empty($images->image_second)) : ?>
<?php $imgfloat = (empty($images->float_second)) ? $this->params->get('float_second') : $images->float_second; ?>
<div class="pull-<?php echo htmlspecialchars($imgfloat); ?> item-image"> <img
<?php if ($images->image_second_caption):
echo 'class="caption"'.' title="' .htmlspecialchars($images->image_second_caption) .'"';
endif; ?>
src="<?php echo htmlspecialchars($images->image_second); ?>" alt="<?php echo htmlspecialchars($images->image_second_alt); ?>"/> </div>
<?php endif; ?>
<?php echo $item->description; ?>
<?php endif; ?>
</li>
<?php endif;?>
<?php endforeach; ?>
</ul>
<?php // Code to add a link to submit a weblink. ?>
<?php /* if ($canCreate) : // TODO This is not working due to some problem in the router, I think. Ref issue #23685 ?>
<?php echo JHtml::_('icon.create', $item, $item->params); ?>
<?php endif; */ ?>
<?php if ($this->params->get('show_pagination')) : ?>
<div class="pagination">
<?php if ($this->params->def('show_pagination_results', 1)) : ?>
<p class="counter">
<?php echo $this->pagination->getPagesCounter(); ?>
</p>
<?php endif; ?>
<?php echo $this->pagination->getPagesLinks(); ?>
</div>
<?php endif; ?>
</form>
<?php endif; ?>

View File

@ -1,45 +0,0 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* HTML View class for the WebLinks component
*
* @since 1.5
*/
class WeblinksViewWeblink extends JViewLegacy
{
protected $state;
protected $item;
public function display($tpl = null)
{
// Get some data from the models
$item = $this->get('Item');
if ($this->getLayout() == 'edit')
{
$this->_displayEdit($tpl);
return;
}
if ($item->url)
{
// redirects to url if matching id found
JFactory::getApplication()->redirect($item->url);
}
else
{
//TODO create proper error handling
JFactory::getApplication()->redirect(JRoute::_('index.php'), JText::_('COM_WEBLINKS_ERROR_WEBLINK_NOT_FOUND'), 'notice');
}
}
}

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -19,7 +19,7 @@ class WeblinksController extends JControllerLegacy
/**
* Method to display a view.
*
* @param boolean $cachable If true, the view output will be cached
* @param boolean $cacheable If true, the view output will be cached
* @param array $urlparams An array of safe url parameters and their variable types,
* for valid values see {@link JFilterInput::clean()}.
*
@ -27,30 +27,32 @@ class WeblinksController extends JControllerLegacy
*
* @since 1.5
*/
public function display($cachable = false, $urlparams = false)
public function display($cacheable = false, $urlparams = false)
{
$cachable = true; // Huh? Why not just put that in the constructor?
$user = JFactory::getUser();
// Huh? Why not just put that in the constructor?
$cacheable = true;
// Set the default view name and format from the Request.
// Note we are using w_id to avoid collisions with the router and the return page.
// Frontend is a bit messier than the backend.
/**
* Set the default view name and format from the Request.
* Note we are using w_id to avoid collisions with the router and the return page.
* Frontend is a bit messier than the backend.
*/
$id = $this->input->getInt('w_id');
$vName = $this->input->get('view', 'categories');
$this->input->set('view', $vName);
if (JFactory::getUser()->id ||($this->input->getMethod() == 'POST' && $vName = 'categories'))
if (JFactory::getUser()->id ||($this->input->getMethod() == 'POST' && $vName == 'categories'))
{
$cachable = false;
$cacheable = false;
}
$safeurlparams = array(
'id' => 'INT',
'limit' => 'UINT',
'limitstart' => 'UINT',
'filter_order' => 'CMD',
'filter_order_Dir' => 'CMD',
'lang' => 'CMD'
'id' => 'INT',
'limit' => 'UINT',
'limitstart' => 'UINT',
'filter_order' => 'CMD',
'filter_order_Dir' => 'CMD',
'lang' => 'CMD'
);
// Check for edit form.
@ -60,6 +62,6 @@ class WeblinksController extends JControllerLegacy
return JError::raiseError(403, JText::sprintf('JLIB_APPLICATION_ERROR_UNHELD_ID', $id));
}
return parent::display($cachable, $safeurlparams);
return parent::display($cacheable, $safeurlparams);
}
}

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -69,7 +69,7 @@ class WeblinksControllerWeblink extends JControllerForm
*/
protected function allowAdd($data = array())
{
$categoryId = ArrayHelper::getValue($data, 'catid', $this->input->getInt('id'), 'int');
$categoryId = ArrayHelper::getValue($data, 'catid', $this->input->getInt('id'), 'int');
$allow = null;
if ($categoryId)
@ -180,8 +180,8 @@ class WeblinksControllerWeblink extends JControllerForm
protected function getRedirectToItemAppend($recordId = null, $urlVar = null)
{
$append = parent::getRedirectToItemAppend($recordId, $urlVar);
$itemId = $this->input->getInt('Itemid');
$return = $this->getReturnPage();
$itemId = $this->input->getInt('Itemid');
$return = $this->getReturnPage();
if ($itemId)
{
@ -227,11 +227,21 @@ class WeblinksControllerWeblink extends JControllerForm
*/
public function save($key = null, $urlVar = 'w_id')
{
// Get the application
$app = JFactory::getApplication();
// Get the data from POST
$data = $this->input->post->get('jform', array(), 'array');
// Save the data in the session.
$app->setUserState('com_weblinks.edit.weblink.data', $data);
$result = parent::save($key, $urlVar);
// If ok, redirect to the return page.
if ($result)
{
// Flush the data from the session
$app->setUserState('com_weblinks.edit.weblink.data', null);
$this->setRedirect($this->getReturnPage());
}
@ -264,7 +274,7 @@ class WeblinksControllerWeblink extends JControllerForm
}
// Check whether item access level allows access.
$groups = JFactory::getUser()->getAuthorisedViewLevels();
$groups = JFactory::getUser()->getAuthorisedViewLevels();
if (!in_array($link->access, $groups))
{
@ -295,7 +305,7 @@ class WeblinksControllerWeblink extends JControllerForm
if ($link->url)
{
$modelLink->hit($id);
JFactory::getApplication()->redirect($link->url);
JFactory::getApplication()->redirect($link->url, 301);
}
return JError::raiseWarning(404, JText::_('COM_WEBLINKS_ERROR_WEBLINK_URL_INVALID'));

View File

@ -3,13 +3,14 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JLoader::register('WeblinksHelper', JPATH_ADMINISTRATOR . '/components/com_weblinks/helpers/weblinks.php');
JLoader::register('WeblinksHelperRoute', JPATH_SITE . '/components/com_weblinks/helpers/route.php');
JLoader::register('CategoryHelperAssociation', JPATH_ADMINISTRATOR . '/components/com_categories/helpers/association.php');
/**
@ -31,11 +32,26 @@ abstract class WeblinksHelperAssociation extends CategoryHelperAssociation
*/
public static function getAssociations($id = 0, $view = null)
{
jimport('helper.route', JPATH_COMPONENT_SITE);
$jinput = JFactory::getApplication()->input;
$view = is_null($view) ? $jinput->get('view') : $view;
$id = empty($id) ? $jinput->getInt('id') : $id;
$view = is_null($view) ? $jinput->get('view') : $view;
$id = empty($id) ? $jinput->getInt('id') : $id;
if ($view === 'weblink')
{
if ($id)
{
$associations = JLanguageAssociations::getAssociations('com_weblinks', '#__weblinks', 'com_weblinks.item', $id);
$return = array();
foreach ($associations as $tag => $item)
{
$return[$tag] = WeblinksHelperRoute::getWeblinkRoute($item->id, (int) $item->catid, $item->language);
}
return $return;
}
}
if ($view == 'category' || $view == 'categories')
{

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -63,7 +63,7 @@ class JHtmlIcon
$url = WeblinksHelperRoute::getFormRoute($weblink->id, base64_encode($uri));
$icon = $weblink->state ? 'edit.png' : 'edit_unpublished.png';
$text = JHtml::_('image', 'system/'.$icon, JText::_('JGLOBAL_EDIT'), null, true);
$text = JHtml::_('image', 'system/' . $icon, JText::_('JGLOBAL_EDIT'), null, true);
if ($weblink->state == 0)
{

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -21,18 +21,20 @@ abstract class WeblinksHelperRoute
protected static $lang_lookup = array();
/**
* @param integer The route of the weblink
* Get the route of the weblink
*
* @param integer $id Web link ID
* @param integer $catid Category ID
* @param string $language Language
*
* @return string
*/
public static function getWeblinkRoute($id, $catid, $language = 0)
{
$needles = array(
'weblink' => array((int) $id)
);
$needles = array('weblink' => array((int) $id));
// Create the link
$link = 'index.php?option=com_weblinks&view=weblink&id='. $id;
$link = 'index.php?option=com_weblinks&view=weblink&id=' . $id;
if ($catid > 1)
{
@ -43,7 +45,7 @@ abstract class WeblinksHelperRoute
{
$needles['category'] = array_reverse($category->getPath());
$needles['categories'] = $needles['category'];
$link .= '&catid='.$catid;
$link .= '&catid=' . $catid;
}
}
@ -60,13 +62,15 @@ abstract class WeblinksHelperRoute
if ($item = self::_findItem($needles))
{
$link .= '&Itemid='.$item;
$link .= '&Itemid=' . $item;
}
return $link;
}
/**
* Ge the form route
*
* @param integer $id The id of the weblink.
* @param string $return The return page variable.
*
@ -77,7 +81,7 @@ abstract class WeblinksHelperRoute
// Create the link.
if ($id)
{
$link = 'index.php?option=com_weblinks&task=weblink.edit&w_id='. $id;
$link = 'index.php?option=com_weblinks&task=weblink.edit&w_id=' . $id;
}
else
{
@ -86,13 +90,15 @@ abstract class WeblinksHelperRoute
if ($return)
{
$link .= '&return='.$return;
$link .= '&return=' . $return;
}
return $link;
}
/**
* Get the Category Route
*
* @param JCategoryNode|string|integer $catid JCategoryNode object or category ID
* @param integer $language Language code
*
@ -120,7 +126,7 @@ abstract class WeblinksHelperRoute
$needles = array();
// Create the link
$link = 'index.php?option=com_weblinks&view=category&id='.$id;
$link = 'index.php?option=com_weblinks&view=category&id=' . $id;
$catids = array_reverse($category->getPath());
$needles['category'] = $catids;
@ -139,7 +145,7 @@ abstract class WeblinksHelperRoute
if ($item = self::_findItem($needles))
{
$link .= '&Itemid='.$item;
$link .= '&Itemid=' . $item;
}
}
@ -147,7 +153,9 @@ abstract class WeblinksHelperRoute
}
/**
* @return void
* Do a language lookup
*
* @return void
*/
protected static function buildLanguageLookup()
{
@ -169,6 +177,13 @@ abstract class WeblinksHelperRoute
}
}
/**
* Find items per given $needles
*
* @param array $needles A given array of needles to find
*
* @return void
*/
protected static function _findItem($needles = null)
{
$app = JFactory::getApplication();
@ -180,7 +195,7 @@ abstract class WeblinksHelperRoute
{
self::$lookup[$language] = array();
$component = JComponentHelper::getComponent('com_weblinks');
$component = JComponentHelper::getComponent('com_weblinks');
$attributes = array('component_id');
$values = array($component->id);
@ -208,9 +223,11 @@ abstract class WeblinksHelperRoute
if (isset($item->query['id']))
{
// here it will become a bit tricky
// language != * can override existing entries
// language == * cannot override existing entries
/**
* Here it will become a bit tricky
* language != * can override existing entries
* language == * cannot override existing entries
*/
if (!isset(self::$lookup[$language][$view][$item->query['id']]) || $item->language != '*')
{
self::$lookup[$language][$view][$item->query['id']] = $item->id;

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -40,6 +40,11 @@ class WeblinksModelCategories extends JModelList
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
* @since 1.6
*/
protected function populateState($ordering = null, $direction = null)
@ -54,8 +59,8 @@ class WeblinksModelCategories extends JModelList
$params = $app->getParams();
$this->setState('params', $params);
$this->setState('filter.published', 1);
$this->setState('filter.access', true);
$this->setState('filter.published', 1);
$this->setState('filter.access', true);
}
/**
@ -65,29 +70,29 @@ class WeblinksModelCategories extends JModelList
* different modules that might need different sets of data or different
* ordering requirements.
*
* @param string $id A prefix for the store id.
* @param string $id A prefix for the store id.
*
* @return string A store id.
*/
protected function getStoreId($id = '')
{
// Compile the store id.
$id .= ':'.$this->getState('filter.extension');
$id .= ':'.$this->getState('filter.published');
$id .= ':'.$this->getState('filter.access');
$id .= ':'.$this->getState('filter.parentId');
$id .= ':' . $this->getState('filter.extension');
$id .= ':' . $this->getState('filter.published');
$id .= ':' . $this->getState('filter.access');
$id .= ':' . $this->getState('filter.parentId');
return parent::getStoreId($id);
}
/**
* redefine the function an add some properties to make the styling more easy
* Redefine the function and add some properties to make the styling more easy
*
* @return mixed An array of data items on success, false on failure.
* @return mixed An array of data items on success, false on failure.
*/
public function getItems()
{
if (!count($this->_items))
if ($this->_items === null)
{
$app = JFactory::getApplication();
$menu = $app->getMenu();
@ -117,12 +122,18 @@ class WeblinksModelCategories extends JModelList
return $this->_items;
}
/**
* Get the parent
*
* @return mixed An array of data items on success, false on failure.
*/
public function getParent()
{
if (!is_object($this->_parent))
{
$this->getItems();
}
return $this->_parent;
}
}

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -36,7 +36,7 @@ class WeblinksModelCategory extends JModelList
/**
* Constructor.
*
* @param array An optional associative array of configuration settings.
* @param array $config An optional associative array of configuration settings.
*
* @see JControllerLegacy
* @since 1.6
@ -121,9 +121,20 @@ class WeblinksModelCategory extends JModelList
// Filter by category.
if ($categoryId = $this->getState('category.id'))
{
$query->where('a.catid = ' . (int) $categoryId)
->join('LEFT', '#__categories AS c ON c.id = a.catid')
->where('c.access IN (' . $groups . ')');
// Group by subcategory
if ($this->getState('category.group', 0))
{
$query->select('c.title AS category_title')
->where('c.parent_id = ' . (int) $categoryId)
->join('LEFT', '#__categories AS c ON c.id = a.catid')
->where('c.access IN (' . $groups . ')');
}
else
{
$query->where('a.catid = ' . (int) $categoryId)
->join('LEFT', '#__categories AS c ON c.id = a.catid')
->where('c.access IN (' . $groups . ')');
}
// Filter by published category
$cpublished = $this->getState('filter.c.published');
@ -141,7 +152,6 @@ class WeblinksModelCategory extends JModelList
->join('LEFT', '#__users AS uam ON uam.id = a.modified_by');
// Filter by state
$state = $this->getState('filter.state');
if (is_numeric($state))
@ -149,7 +159,7 @@ class WeblinksModelCategory extends JModelList
$query->where('a.state = ' . (int) $state);
}
// do not show trashed links on the front-end
// Do not show trashed links on the front-end
$query->where('a.state != -2');
// Filter by start and end dates.
@ -177,11 +187,19 @@ class WeblinksModelCategory extends JModelList
$query->where('(a.title LIKE ' . $search . ')');
}
// If grouping by subcategory, add the subcategory list ordering clause.
if ($this->getState('category.group', 0))
{
$query->order(
$db->escape($this->getState('category.ordering', 'c.lft')) . ' ' .
$db->escape($this->getState('category.direction', 'ASC'))
);
}
// Add the list ordering clause.
$query->order(
$db->escape(
$this->getState('list.ordering', 'a.ordering')) . ' ' . $db->escape($this->getState('list.direction', 'ASC')
)
$db->escape($this->getState('list.ordering', 'a.ordering')) . ' ' .
$db->escape($this->getState('list.direction', 'ASC'))
);
return $query;
@ -192,6 +210,11 @@ class WeblinksModelCategory extends JModelList
*
* Note. Calling getState in this method will result in recursion.
*
* @param string $ordering An optional ordering field.
* @param string $direction An optional direction (asc|desc).
*
* @return void
*
* @since 1.6
*/
protected function populateState($ordering = null, $direction = null)
@ -234,7 +257,7 @@ class WeblinksModelCategory extends JModelList
if ((!$user->authorise('core.edit.state', 'com_weblinks')) && (!$user->authorise('core.edit', 'com_weblinks')))
{
// limit to published for people who can't edit or edit.state.
// Limit to published for people who can't edit or edit.state.
$this->setState('filter.state', 1);
// Filter by start and end dates.
@ -301,8 +324,6 @@ class WeblinksModelCategory extends JModelList
/**
* Get the parent category
*
* @param integer An optional category id. If not supplied, the model state 'category.id' will be used.
*
* @return mixed An array of categories or false if an error occurs.
*/
public function getParent()
@ -311,40 +332,46 @@ class WeblinksModelCategory extends JModelList
{
$this->getCategory();
}
return $this->_parent;
}
/**
* Get the sibling (adjacent) categories.
* Get the leftsibling (adjacent) categories.
*
* @return mixed An array of categories or false if an error occurs.
*/
function &getLeftSibling()
public function &getLeftSibling()
{
if (!is_object($this->_item))
{
$this->getCategory();
}
return $this->_leftsibling;
}
function &getRightSibling()
/**
* Get the rightsibling (adjacent) categories.
*
* @return mixed An array of categories or false if an error occurs.
*/
public function &getRightSibling()
{
if (!is_object($this->_item))
{
$this->getCategory();
}
return $this->_rightsibling;
}
/**
* Get the child categories.
*
* @param integer An optional category id. If not supplied, the model state 'category.id' will be used.
*
* @return mixed An array of categories or false if an error occurs.
*/
function &getChildren()
public function &getChildren()
{
if (!is_object($this->_item))
{

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -43,6 +43,8 @@ class WeblinksModelForm extends WeblinksModelWeblink
*
* Note. Calling getState in this method will result in recursion.
*
* @return void
*
* @since 1.6
*/
protected function populateState()
@ -74,4 +76,28 @@ class WeblinksModelForm extends WeblinksModelWeblink
$this->setState('layout', $app->input->getString('layout'));
}
/**
* Abstract method for getting the form from the model.
*
* @param array $data Data for the form.
* @param boolean $loadData True if the form is to load its own data (default case), false if not.
*
* @return mixed A JForm object on success, false on failure
*
* @since __DEPLOY_VERSION__
*/
public function getForm($data = array(), $loadData = true)
{
$form = $this->loadForm('com_weblinks.form', 'weblink', array('control' => 'jform', 'load_data' => $loadData));
// Disable the buttons and just allow editor none for not authenticated users
if (JFactory::getUser()->guest)
{
$form->setFieldAttribute('description', 'editor', 'none');
$form->setFieldAttribute('description', 'buttons', 'no');
}
return $form;
}
}

View File

@ -0,0 +1,173 @@
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset addfieldpath="/administrator/components/com_categories/models/fields">
<field
name="id"
type="hidden"
label="WEBLINK_ID_LABEL"
readonly="true"
required="true"
size="10"
default="0"
/>
<field
id="contenthistory"
name="contenthistory"
type="contenthistory"
data-typeAlias="com_weblinks.weblink"
label="JTOOLBAR_VERSIONS"
/>
<field
name="title"
type="text"
label="JGLOBAL_TITLE"
description="COM_WEBLINKS_FIELD_TITLE_DESC"
required="true"
size="30"
/>
<field
name="alias"
type="text"
label="JFIELD_ALIAS_LABEL"
description="COM_WEBLINKS_FIELD_ALIAS_DESC"
hint="JFIELD_ALIAS_PLACEHOLDER"
size="45"
/>
<field
name="description"
type="editor"
label="JGLOBAL_DESCRIPTION"
description="COM_WEBLINKS_FIELD_DESCRIPTION_DESC"
buttons="true"
hide="pagebreak,readmore"
filter="safehtml"
asset_id="com_weblinks"
/>
<field
name="state"
type="list"
label="JSTATUS"
description="JFIELD_PUBLISHED_DESC"
default="1"
size="1"
>
<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
</field>
<field
name="catid"
type="categoryedit"
label="JCATEGORY"
description="COM_WEBLINKS_FIELD_CATEGORY_DESC"
extension="com_weblinks"
required="true"
/>
<field
name="url"
type="url"
label="COM_WEBLINKS_FIELD_URL_LABEL"
description="COM_WEBLINKS_FIELD_URL_DESC"
filter="url"
required="true"
size="45"
/>
<field
name="language"
type="contentlanguage"
label="JFIELD_LANGUAGE_LABEL"
description="JFIELD_LANGUAGE_DESC"
class="inputbox"
>
<option value="*">JALL</option>
</field>
<field
name="tags"
type="tag"
label="JTAG"
description="JTAG_DESC"
class="inputbox"
multiple="true"
/>
<field
name="version_note"
type="text"
label="JGLOBAL_FIELD_VERSION_NOTE_LABEL"
description="JGLOBAL_FIELD_VERSION_NOTE_DESC"
class="inputbox"
size="45"
labelclass="control-label"
/>
<field
name="captcha"
type="captcha"
label="COM_WEBLINKS_CAPTCHA_LABEL"
description="COM_WEBLINKS_CAPTCHA_DESC"
validate="captcha"
namespace="weblink"
/>
</fieldset>
<fields name="metadata">
<fieldset
name="jmetadata"
label="JGLOBAL_FIELDSET_METADATA_OPTIONS"
>
<field
name="robots"
type="hidden"
label="JFIELD_METADATA_ROBOTS_LABEL"
description="JFIELD_METADATA_ROBOTS_DESC"
filter="unset"
labelclass="control-label"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="index, follow">JGLOBAL_INDEX_FOLLOW</option>
<option value="noindex, follow">JGLOBAL_NOINDEX_FOLLOW</option>
<option value="index, nofollow">JGLOBAL_INDEX_NOFOLLOW</option>
<option value="noindex, nofollow">JGLOBAL_NOINDEX_NOFOLLOW</option>
</field>
<field
name="author"
type="hidden"
label="JAUTHOR"
description="JFIELD_METADATA_AUTHOR_DESC"
filter="unset"
size="20"
labelclass="control-label"
/>
<field
name="rights"
type="hidden"
label="JFIELD_META_RIGHTS_LABEL"
description="JFIELD_META_RIGHTS_DESC"
filter="unset"
required="false"
labelclass="control-label"
/>
<field
name="xreference"
type="hidden"
label="COM_CONTENT_FIELD_XREFERENCE_LABEL"
description="COM_CONTENT_FIELD_XREFERENCE_DESC"
filter="unset"
class="inputbox"
size="20"
labelclass="control-label"
/>
</fieldset>
</fields>
</form>

View File

@ -0,0 +1,207 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\Utilities\ArrayHelper;
use Joomla\Registry\Registry;
JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/tables');
/**
* Weblinks Component Model for a Weblink record
*
* @since 1.5
*/
class WeblinksModelWeblink extends JModelItem
{
/**
* Model context string.
*
* @var string
*/
protected $_context = 'com_weblinks.weblink';
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @return void
*
* @since 1.6
*/
protected function populateState()
{
$app = JFactory::getApplication('site');
// Load the object state.
$pk = $app->input->getInt('id');
$this->setState('weblink.id', $pk);
// Load the parameters.
$params = $app->getParams();
$this->setState('params', $params);
$user = JFactory::getUser();
if ((!$user->authorise('core.edit.state', 'com_weblinks')) && (!$user->authorise('core.edit', 'com_weblinks')))
{
$this->setState('filter.published', 1);
$this->setState('filter.archived', 2);
}
$this->setState('filter.language', JLanguageMultilang::isEnabled());
}
/**
* Method to get an object.
*
* @param integer $pk The id of the object to get.
*
* @return mixed Object on success, false on failure.
*/
public function getItem($pk = null)
{
$user = JFactory::getUser();
$pk = (!empty($pk)) ? $pk : (int) $this->getState('weblink.id');
if ($this->_item === null)
{
$this->_item = array();
}
if (!isset($this->_item[$pk]))
{
try
{
$db = $this->getDbo();
$query = $db->getQuery(true)
->select($this->getState('item.select', 'a.*'))
->from('#__weblinks AS a')
->where('a.id = ' . (int) $pk);
// Join on category table.
$query->select('c.title AS category_title, c.alias AS category_alias, c.access AS category_access')
->innerJoin('#__categories AS c on c.id = a.catid')
->where('c.published > 0');
// Join on user table.
$query->select('u.name AS author')
->join('LEFT', '#__users AS u on u.id = a.created_by');
// Filter by language
if ($this->getState('filter.language'))
{
$query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
}
// Join over the categories to get parent category titles
$query->select('parent.title as parent_title, parent.id as parent_id, parent.path as parent_route, parent.alias as parent_alias')
->join('LEFT', '#__categories as parent ON parent.id = c.parent_id');
if ((!$user->authorise('core.edit.state', 'com_weblinks')) && (!$user->authorise('core.edit', 'com_weblinks')))
{
// Filter by start and end dates.
$nullDate = $db->quote($db->getNullDate());
$date = JFactory::getDate();
$nowDate = $db->quote($date->toSql());
$query->where('(a.publish_up = ' . $nullDate . ' OR a.publish_up <= ' . $nowDate . ')')
->where('(a.publish_down = ' . $nullDate . ' OR a.publish_down >= ' . $nowDate . ')');
}
// Filter by published state.
$published = $this->getState('filter.published');
$archived = $this->getState('filter.archived');
if (is_numeric($published))
{
$query->where('(a.state = ' . (int) $published . ' OR a.state =' . (int) $archived . ')');
}
$db->setQuery($query);
$data = $db->loadObject();
if (empty($data))
{
JError::raiseError(404, JText::_('COM_WEBLINKS_ERROR_WEBLINK_NOT_FOUND'));
}
// Check for published state if filter set.
if ((is_numeric($published) || is_numeric($archived)) && (($data->state != $published) && ($data->state != $archived)))
{
JError::raiseError(404, JText::_('COM_WEBLINKS_ERROR_WEBLINK_NOT_FOUND'));
}
// Convert parameter fields to objects.
$data->params = new Registry($data->params);
$data->metadata = new Registry($data->metadata);
// Compute access permissions.
if ($access = $this->getState('filter.access'))
{
// If the access filter has been set, we already know this user can view.
$data->params->set('access-view', true);
}
else
{
// If no access filter is set, the layout takes some responsibility for display of limited information.
$groups = $user->getAuthorisedViewLevels();
$data->params->set('access-view', in_array($data->access, $groups) && in_array($data->category_access, $groups));
}
$this->_item[$pk] = $data;
}
catch (Exception $e)
{
$this->setError($e);
$this->_item[$pk] = false;
}
}
return $this->_item[$pk];
}
/**
* Returns a reference to the a Table object, always creating it.
*
* @param string $type The table type to instantiate
* @param string $prefix A prefix for the table class name. Optional.
* @param array $config Configuration array for model. Optional.
*
* @return JTable A database object
*
* @since 1.6
*/
public function getTable($type = 'Weblink', $prefix = 'WeblinksTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to increment the hit counter for the weblink
*
* @param integer $pk Optional ID of the weblink.
*
* @return boolean True on success
*/
public function hit($pk = null)
{
if (empty($pk))
{
$pk = $this->getState('weblink.id');
}
return $this->getTable('Weblink', 'WeblinksTable')->hit($pk);
}
}

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -65,7 +65,7 @@ class WeblinksRouter extends JComponentRouterBase
}
// Are we dealing with an weblink that is attached to a menu item?
if (isset($query['view']) && ($mView == $query['view']) and (isset($query['id'])) and ($mId == (int) $query['id']))
if (isset($query['view']) && ($mView == $query['view']) && isset($query['id']) && ($mId == (int) $query['id']))
{
unset($query['view']);
unset($query['catid']);
@ -74,7 +74,7 @@ class WeblinksRouter extends JComponentRouterBase
return $segments;
}
if (isset($view) and ($view == 'category' or $view == 'weblink'))
if (isset($view) && ($view == 'category' || $view == 'weblink'))
{
if ($mId != (int) $query['id'] || $mView != $view)
{
@ -259,7 +259,11 @@ class WeblinksRouter extends JComponentRouterBase
/**
* Weblinks router functions
*
* These functions are proxys for the new router interface
* @param array &$query An array of URL arguments
*
* @return array The URL arguments to use to assemble the subsequent URL.
*
* Note. These functions are proxies for the new router interface
* for old SEF extensions.
*
* @deprecated 4.0 Use Class based routers instead
@ -271,6 +275,18 @@ function WeblinksBuildRoute(&$query)
return $router->build($query);
}
/**
* Weblinks router functions
*
* @param array $segments The segments of the URL to parse.
*
* @return array The URL attributes to be used by the application.
*
* Note. These functions are proxies for the new router interface
* for old SEF extensions.
*
* @deprecated 4.0 Use Class based routers instead
*/
function WeblinksParseRoute($segments)
{
$router = new WeblinksRouter;

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

View File

@ -0,0 +1,282 @@
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="com_weblinks_categories_view_default_title" option="com_weblinks_categories_view_default_option">
<help
key="JHELP_MENUS_MENU_ITEM_WEBLINK_CATEGORIES"
/>
<message>
<![CDATA[com_weblinks_categories_view_default_desc]]>
</message>
</layout>
<!-- Add fields to the request variables for the layout. -->
<fields name="request">
<fieldset name="request"
>
<field
name="id"
type="category"
label="JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_LABEL"
description="JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_DESC"
extension="com_weblinks"
show_root="true"
required="true"
/>
</fieldset>
</fields>
<!-- Add fields to the parameters object for the layout. -->
<fields name="params">
<fieldset name="basic" label="JGLOBAL_CATEGORIES_OPTIONS">
<field
name="show_base_description"
type="list"
label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL"
description="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="categories_description"
type="textarea"
label="JGLOBAL_FIELD_CATEGORIES_DESC_LABEL"
description="JGLOBAL_FIELD_CATEGORIES_DESC_DESC"
cols="25"
rows="5"
/>
<field
name="maxLevelcat"
type="list"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
useglobal="true"
>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field
name="show_empty_categories_cat"
type="list"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_subcat_desc_cat"
type="list"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_cat_num_links_cat"
type="list"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="category" label="JGLOBAL_CATEGORY_OPTIONS">
<field
name="spacer1"
type="spacer"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
class="text"
/>
<field
name="show_category_title"
type="list"
label="JGLOBAL_SHOW_CATEGORY_TITLE"
description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_description"
type="list"
label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_description_image"
type="list"
label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL"
description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="maxLevel"
type="list"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
useglobal="true"
>
<option value="0">JNONE</option>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field
name="show_empty_categories"
type="list"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_subcat_desc"
type="list"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_cat_num_links"
type="list"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="advanced" label="JGLOBAL_LIST_LAYOUT_OPTIONS">
<field
name="spacer2"
type="spacer"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
class="text"
/>
<field
name="filter_field"
type="list"
label="JGLOBAL_FILTER_FIELD_LABEL"
description="JGLOBAL_FILTER_FIELD_DESC"
default=""
useglobal="true"
>
<option value="hide">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_pagination_limit"
type="list"
label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_headings"
type="list"
label="JGLOBAL_SHOW_HEADINGS_LABEL"
description="JGLOBAL_SHOW_HEADINGS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_link_description"
type="list"
label="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL"
description="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_link_hits"
type="list"
label="JGLOBAL_HITS"
description="COM_WEBLINKS_FIELD_CONFIG_HITS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_pagination"
type="list"
label="JGLOBAL_PAGINATION_LABEL"
description="JGLOBAL_PAGINATION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
<option value="2">JGLOBAL_AUTO</option>
</field>
<field
name="show_pagination_results"
type="list"
label="JGLOBAL_PAGINATION_RESULTS_LABEL"
description="JGLOBAL_PAGINATION_RESULTS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
</fields>
</metadata>

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -53,6 +53,7 @@ class WeblinksViewCategories extends JViewCategories
if (count($errors = $this->get('Errors')))
{
JError::raiseWarning(500, implode("\n", $errors));
return false;
}

View File

@ -3,12 +3,12 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers');
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
$this->subtemplatename = 'items';
echo JLayoutHelper::render('joomla.content.category_default', $this);

View File

@ -0,0 +1,223 @@
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="com_weblinks_category_view_default_title" option="com_weblinks_category_view_default_option">
<help
key="JHELP_MENUS_MENU_ITEM_WEBLINK_CATEGORY"
/>
<message>
<![CDATA[com_weblinks_category_view_default_desc]]>
</message>
</layout>
<!-- Add fields to the request variables for the layout. -->
<fields name="request">
<fieldset name="request">
<field
name="id"
type="category"
label="COM_WEBLINKS_FIELD_SELECT_CATEGORY_LABEL"
description="COM_WEBLINKS_FIELD_SELECT_CATEGORY_DESC"
default="0"
extension="com_weblinks"
required="true"
/>
</fieldset>
</fields>
<!-- Add fields to the parameters object for the layout. -->
<fields name="params">
<fieldset name="basic" label="JGLOBAL_CATEGORY_OPTIONS">
<field
name="spacer1"
type="spacer"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
class="text"
/>
<field
name="show_category_title"
type="list"
label="JGLOBAL_SHOW_CATEGORY_TITLE"
description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_description"
type="list"
label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_description_image"
type="list"
label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL"
description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="maxLevel"
type="list"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
useglobal="true"
>
<option value="0">JNONE</option>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field
name="show_empty_categories"
type="list"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_subcat_desc"
type="list"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_cat_num_links"
type="list"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="advanced" label="JGLOBAL_LIST_LAYOUT_OPTIONS">
<field
name="spacer2"
type="spacer"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
class="text"
/>
<field
name="filter_field"
type="list"
label="JGLOBAL_FILTER_FIELD_LABEL"
description="JGLOBAL_FILTER_FIELD_DESC"
default=""
useglobal="true"
>
<option value="hide">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_pagination_limit"
type="list"
label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_headings"
type="list"
label="JGLOBAL_SHOW_HEADINGS_LABEL"
description="JGLOBAL_SHOW_HEADINGS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_link_description"
type="list"
label="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL"
description="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_link_hits"
type="list"
label="JGLOBAL_HITS"
description="COM_WEBLINKS_FIELD_CONFIG_HITS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field
name="show_pagination"
type="list"
label="JGLOBAL_PAGINATION_LABEL"
description="JGLOBAL_PAGINATION_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
<option value="2">JGLOBAL_AUTO</option>
</field>
<field
name="show_pagination_results"
type="list"
label="JGLOBAL_PAGINATION_RESULTS_LABEL"
description="JGLOBAL_PAGINATION_RESULTS_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="integration">
<field
name="show_feed_link"
type="list"
label="JGLOBAL_SHOW_FEED_LINK_LABEL"
description="JGLOBAL_SHOW_FEED_LINK_DESC"
useglobal="true"
>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
</fields>
</metadata>

View File

@ -3,7 +3,7 @@
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -33,9 +33,9 @@ if (count($this->children[$this->category->id]) > 0 && $this->maxLevel != 0) :
<?php echo JHtml::_('content.prepare', $child->description, '', 'com_weblinks.category'); ?>
</div>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<?php if ($this->params->get('show_cat_num_links') == 1) :?>
<?php if ($this->params->get('show_cat_num_links') == 1) :?>
<dl class="weblink-count"><dt>
<?php echo JText::_('COM_WEBLINKS_NUM'); ?></dt>
<dd><?php echo $child->numitems; ?></dd>

View File

@ -0,0 +1,169 @@
<?php
/**
* @package Joomla.Site
* @subpackage com_weblinks
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('behavior.framework');
// Get the user object.
$user = JFactory::getUser();
// Check if user is allowed to add/edit based on weblinks permissinos.
$canEdit = $user->authorise('core.edit', 'com_weblinks.category.' . $this->category->id);
$canCreate = $user->authorise('core.create', 'com_weblinks');
$canEditState = $user->authorise('core.edit.state', 'com_weblinks');
$n = count($this->items);
$listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction'));
?>
<form action="<?php echo htmlspecialchars(JUri::getInstance()->toString()); ?>" method="post" name="adminForm" id="adminForm">
<?php if ($this->params->get('filter_field') != 'hide' || $this->params->get('show_pagination_limit')) : ?>
<fieldset class="filters btn-toolbar">
<?php if ($this->params->get('filter_field') != 'hide') : ?>
<div class="btn-group">
<label class="filter-search-lbl element-invisible" for="filter-search"><?php echo JText::_('COM_WEBLINKS_FILTER_LABEL') . '&#160;'; ?></label>
<input type="text" name="filter-search" id="filter-search" value="<?php echo $this->escape($this->state->get('list.filter')); ?>" class="inputbox" onchange="document.adminForm.submit();" title="<?php echo JText::_('COM_WEBLINKS_FILTER_SEARCH_DESC'); ?>" placeholder="<?php echo JText::_('COM_WEBLINKS_FILTER_SEARCH_DESC'); ?>" />
</div>
<?php endif; ?>
<?php if ($this->params->get('show_pagination_limit')) : ?>
<div class="btn-group pull-right">
<label for="limit" class="element-invisible">
<?php echo JText::_('JGLOBAL_DISPLAY_NUM'); ?>
</label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
<?php endif; ?>
</fieldset>
<?php endif; ?>
<?php if (empty($this->items)) : ?>
<p><?php echo JText::_('COM_WEBLINKS_NO_WEBLINKS'); ?></p>
<?php else : ?>
<ul class="category list-striped list-condensed">
<?php foreach ($this->items as $i => $item) : ?>
<?php if (in_array($item->access, $this->user->getAuthorisedViewLevels())) : ?>
<?php if ($this->items[$i]->state == 0) : ?>
<li class="system-unpublished cat-list-row<?php echo $i % 2; ?>">
<?php else : ?>
<li class="cat-list-row<?php echo $i % 2; ?>">
<?php endif; ?>
<?php if ($this->params->get('show_link_hits', 1)) : ?>
<span class="list-hits badge badge-info pull-right">
<?php echo JText::sprintf('JGLOBAL_HITS_COUNT', $item->hits); ?>
</span>
<?php endif; ?>
<?php if ($canEdit) : ?>
<span class="list-edit pull-left width-50">
<?php echo JHtml::_('icon.edit', $item, $item->params); ?>
</span>
<?php endif; ?>
<div class="list-title">
<?php if ($this->params->get('icons', 1) == 0) : ?>
<?php echo JText::_('COM_WEBLINKS_LINK'); ?>
<?php elseif ($this->params->get('icons', 1) == 1) : ?>
<?php if (!$this->params->get('link_icons')) : ?>
<?php echo JHtml::_('image', 'system/weblink.png', JText::_('COM_WEBLINKS_LINK'), null, true); ?>
<?php else: ?>
<?php echo '<img src="' . $this->params->get('link_icons') . '" alt="' . JText::_('COM_WEBLINKS_LINK') . '" />'; ?>
<?php endif; ?>
<?php endif; ?>
<?php // Compute the correct link ?>
<?php $menuclass = 'category' . $this->pageclass_sfx; ?>
<?php $link = $item->link; ?>
<?php $width = $item->params->get('width', 600); ?>
<?php $height = $item->params->get('height', 500); ?>
<?php if ($this->items[$i]->state == 0) : ?>
<span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span>
<?php endif; ?>
<?php
switch ($item->params->get('target', $this->params->get('target')))
{
case 1:
// Open in a new window
echo '<a href="' . $link . '" target="_blank" class="' . $menuclass . '" rel="nofollow">' .
$this->escape($item->title) . '</a>';
break;
case 2:
// Open in a popup window
$attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' . $this->escape($width) . ',height=' . $this->escape($height) . '';
echo '<a href="'. $link .'" onclick="window.open(this.href, \'targetWindow\', \'' . $attribs . '\'); return false;">' .
$this->escape($item->title) . '</a>';
break;
case 3:
// Open in a modal window
JHtml::_('behavior.modal', 'a.modal');
echo '<a class="modal" href="' . $link . '" rel="{handler: \'iframe\', size: {x:' . $this->escape($width) . ', y:' . $this->escape($height) . '}}">' .
$this->escape($item->title) . '</a>';
break;
default:
// Open in parent window
echo '<a href="' . $link . '" class="' . $menuclass . '" rel="nofollow">' .
$this->escape($item->title) . '</a>';
break;
}
?>
</div>
<?php if ($this->params->get('show_tags', 1) && !empty($item->tags->itemTags)) : ?>
<?php echo JLayoutHelper::render('joomla.content.tags', $item->tags->itemTags); ?>
<?php endif; ?>
<?php if (($this->params->get('show_link_description')) && ($item->description != '')) : ?>
<?php $images = json_decode($item->images); ?>
<?php if (isset($images->image_first) && !empty($images->image_first)) : ?>
<?php $imgfloat = $images->float_first ?: $this->params->get('float_first'); ?>
<div class="pull-<?php echo htmlspecialchars($imgfloat, ENT_COMPAT, 'UTF-8'); ?> item-image">
<img
<?php if ($images->image_first_caption) : ?>
<?php echo 'class="caption" title="' . htmlspecialchars($images->image_first_caption) . '"'; ?>
<?php endif; ?>
src="<?php echo htmlspecialchars($images->image_first); ?>"
alt="<?php echo htmlspecialchars($images->image_first_alt); ?>"
/>
</div>
<?php endif; ?>
<?php if (isset($images->image_second) && !empty($images->image_second)) : ?>
<?php $imgfloat = $images->float_second ?: $this->params->get('float_second'); ?>
<div class="pull-<?php echo htmlspecialchars($imgfloat, ENT_COMPAT, 'UTF-8'); ?> item-image">
<img
<?php if ($images->image_second_caption) : ?>
<?php echo 'class="caption" title="' . htmlspecialchars($images->image_second_caption) . '"'; ?>
<?php endif; ?>
src="<?php echo htmlspecialchars($images->image_second); ?>"
alt="<?php echo htmlspecialchars($images->image_second_alt); ?>"
/>
</div>
<?php endif; ?>
<?php echo $item->description; ?>
<?php endif; ?>
</li>
<?php endif;?>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php if ($this->params->get('show_pagination')) : ?>
<div class="pagination">
<?php if ($this->params->def('show_pagination_results', 1)) : ?>
<p class="counter">
<?php echo $this->pagination->getPagesCounter(); ?>
</p>
<?php endif; ?>
<?php echo $this->pagination->getPagesLinks(); ?>
</div>
<?php endif; ?>
</form>

Some files were not shown because too many files have changed in this diff Show More