30
1
mirror of https://github.com/joomla-extensions/weblinks.git synced 2024-06-01 14:00:51 +00:00

Compare commits

...

140 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
d4a03c2d55 default should be off 2017-02-25 13:04:33 +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
95 changed files with 5882 additions and 2436 deletions

View File

@ -1,20 +1,51 @@
cache: ---
mount: kind: pipeline
- vendor name: default
- .git
build: steps:
image: yveshoppe/joomla-systemtests:latest - name: weblinks-codeception-tests
commands: image: joomlaprojects/docker-systemtests:latest
- chmod a+x .drone/build.sh commands:
- ./.drone/build.sh - composer install
- apache2ctl start - chmod a+x .drone/build.sh
- service mysql start - ./.drone/build.sh
- cd /tests/www - apache2ctl start
- export DISPLAY=:0 - service mysql start
- Xvfb -screen 0 1024x768x24 -ac +extension GLX +render -noreset > /dev/null 2>&1 & - cd /tests/www
- sleep 3 - export DISPLAY=:0
- fluxbox > /dev/null 2>&1 & - Xvfb -screen 0 1024x768x24 -ac +extension GLX +render -noreset > /dev/null 2>&1 &
- vendor/bin/robo run:tests - sleep 3
clone: - fluxbox > /dev/null 2>&1 &
depth: 1 - vendor/bin/robo run:tests
path: repo
- 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
...

View File

@ -1,5 +1,7 @@
sudo: true sudo: true
language: php language: php
services:
- xvfb
env: env:
global: global:
@ -8,29 +10,15 @@ env:
matrix: matrix:
fast_finish: true fast_finish: true
include: include:
- php: 5.5
- php: 5.6 - php: 5.6
env: RUN_PHPCS="yes" env: RUN_PHPCS="yes"
- php: 7.0 - php: 7.0
sudo: true sudo: true
addons: addons:
firefox: "47.0.1" firefox: 'latest-esr'
- php: 7.1 - php: 7.1
- php: hhvm - php: 7.2
sudo: true - php: 7.3
dist: trusty
group: edge # Until the next stable image update sometime after 2016-12-01
addons:
apt:
packages:
- mysql-server-5.6
- mysql-client-core-5.6
- mysql-client-5.6
services:
- mysql
- postgresql
allow_failures:
- php: hhvm
before_script: before_script:
# Forcing localhost in hosts file # Forcing localhost in hosts file
@ -48,10 +36,6 @@ before_script:
- sudo sed -e "s?%PHPVERSION%?${TRAVIS_PHP_VERSION:0:1}?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 - git submodule update --init --recursive
- sudo service apache2 restart - sudo service apache2 restart
# Xvfb
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- sleep 3 # give xvfb some time to start
# Fluxbox # Fluxbox
- sudo apt-get install fluxbox -y --force-yes - sudo apt-get install fluxbox -y --force-yes
- fluxbox & - fluxbox &

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*

View File

@ -1,10 +1,12 @@
# Weblinks for Joomla! Travis: # Weblinks for Joomla!
Travis: [![Travis Build Status](https://travis-ci.org/joomla-extensions/weblinks.svg?branch=master)](https://travis-ci.org/joomla-extensions/weblinks) Build Status
---------------------
| Drone-CI |
| ------------- |
| [![Build Status](https://ci.joomla.org/api/badges/joomla-extensions/weblinks/status.svg)](https://ci.joomla.org/joomla-extensions/weblinks) |
Drone: [![Drone Build Status](http://213.160.72.75/api/badges/joomla-extensions/weblinks/status.svg)](http://213.160.72.75/joomla-extensions/weblinks) Weblinks for Joomla! provides a component and accompanying extensions to create a directory of weblinks.
This repo is meant to hold the decoupled com_weblinks component and related code.
# How to test a PR # How to test a PR
@ -221,7 +223,7 @@ skipClone = false
cmsPath = tests/joomla-cms3 cmsPath = tests/joomla-cms3
; If you want to clone a different branch, you can set it here ; If you want to clone a different branch, you can set it here
branch = staging 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. ; (Linux / Mac only) If you want to set a different owner for the CMS root folder, you can set it here.
localUser = localUser =
@ -258,13 +260,13 @@ The tests in Weblinks Extension use Codeception Testing Framework, if you want t
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. 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 skipClone = true
cmsPath = tests/joomla-cms3 cmsPath = tests/joomla
The currently available options are as follows: 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. * `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`. * `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 `staging`. * `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 ## Additional options

View File

@ -7,7 +7,7 @@ skipClone = false
cmsPath = tests/joomla cmsPath = tests/joomla
; If you want to clone a different branch, you can set it here ; If you want to clone a different branch, you can set it here
branch = staging 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. ; (Linux / Mac only) If you want to set a different owner for the CMS root folder, you can set it here.
localUser = www-data localUser = www-data

View File

@ -12,6 +12,10 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt * @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'; require_once 'vendor/autoload.php';
if (!defined('JPATH_BASE')) if (!defined('JPATH_BASE'))
@ -26,11 +30,11 @@ if (!defined('JPATH_BASE'))
* *
* @since 1.0 * @since 1.0
*/ */
class RoboFile extends \Robo\Tasks class RoboFile extends Tasks
{ {
// Load tasks from composer, see composer.json // Load tasks from composer, see composer.json
use \joomla_projects\robo\loadTasks; use loadTestingTasks;
use \Joomla\Jorobo\Tasks\loadTasks; use loadReleaseTasks;
/** /**
* File extension for executables * File extension for executables
@ -77,22 +81,13 @@ class RoboFile extends \Robo\Tasks
/** /**
* Get the executable extension according to Operating System * Get the executable extension according to Operating System
* *
* @return void * @return string
*/ */
private function getExecutableExtension() private function getExecutableExtension()
{ {
if ($this->isWindows()) if ($this->isWindows())
{ {
// Check wehter git.exe or git as command should be used, return '.exe';
// As on window both is possible
if (!$this->_exec('git.exe --version')->getMessage())
{
return '';
}
else
{
return '.exe';
}
} }
return ''; return '';
@ -102,10 +97,11 @@ class RoboFile extends \Robo\Tasks
* Executes all the Selenium System Tests in a suite on your machine * Executes all the Selenium System Tests in a suite on your machine
* *
* @param array $opts Array of configuration options: * @param array $opts Array of configuration options:
* - 'use-htaccess': renames and enable embedded Joomla .htaccess file * - 'use-htaccess': renames and enable embedded Joomla .htaccess file
* - 'env': set a specific environment to get configuration from * - 'env': set a specific environment to get configuration from
* *
* @return mixed * @return mixed
* @throws \Codeception\Exception\ConfigurationException
*/ */
public function runTests($opts = ['use-htaccess' => false, 'env' => 'desktop']) public function runTests($opts = ['use-htaccess' => false, 'env' => 'desktop'])
{ {
@ -166,6 +162,8 @@ class RoboFile extends \Robo\Tasks
* @param string $suite Optional name of the suite containing the tests, Acceptance by default. * @param string $suite Optional name of the suite containing the tests, Acceptance by default.
* *
* @return mixed * @return mixed
* @throws ReflectionException
* @throws \Codeception\Exception\ConfigurationException
*/ */
public function runTest($pathToTestFile = null, $suite = 'acceptance') public function runTest($pathToTestFile = null, $suite = 'acceptance')
{ {
@ -205,8 +203,8 @@ class RoboFile extends \Robo\Tasks
} }
$this->say(''); $this->say('');
$testNumber = $this->ask('Type the number of the test in the list that you want to run...'); $testNumber = $this->ask('Type the number of the test in the list that you want to run...');
$test = $tests[$testNumber]; $test = $tests[$testNumber];
} }
$pathToTestFile = 'tests/' . $suite . '/' . $test; $pathToTestFile = 'tests/' . $suite . '/' . $test;
@ -215,7 +213,7 @@ class RoboFile extends \Robo\Tasks
require 'tests/' . $suite . '/' . $test; require 'tests/' . $suite . '/' . $test;
// Logic to fetch the class name from the file name // Logic to fetch the class name from the file name
$fileName = explode("/", $test); $fileName = explode("/", $test);
$className = explode(".", $fileName[1]); $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 // 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
@ -245,7 +243,7 @@ class RoboFile extends \Robo\Tasks
$this->say(''); $this->say('');
$methodNumber = $this->ask('Please choose the method in the test that you would want to run...'); $methodNumber = $this->ask('Please choose the method in the test that you would want to run...');
$method = $methods[$methodNumber]; $method = $methods[$methodNumber];
} }
if (isset($method) && $method != 'All') if (isset($method) && $method != 'All')
@ -400,7 +398,7 @@ class RoboFile extends \Robo\Tasks
*/ */
private function buildGitCloneCommand() private function buildGitCloneCommand()
{ {
$branch = empty($this->configuration->branch) ? 'staging' : $this->configuration->branch; $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"; return "git" . $this->executableExtension . " clone -b $branch --single-branch --depth 1 https://github.com/joomla/joomla-cms.git tests/cache";
} }
@ -441,26 +439,23 @@ class RoboFile extends \Robo\Tasks
* Runs Selenium Standalone Server. * Runs Selenium Standalone Server.
* *
* @return void * @return void
* @throws \Codeception\Exception\ConfigurationException
*/ */
public function runSelenium() public function runSelenium()
{ {
if (!$this->isWindows())
{
$this->_exec("vendor/bin/selenium-server-standalone " . $this->getWebDriver() . ' >> selenium.log 2>&1 &');
}
else
{
$this->_exec('START java.exe -jar' . $this->getWebDriver() .
' vendor\joomla-projects\selenium-server-standalone\bin\selenium-server-standalone.jar ');
}
if ($this->isWindows()) 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); sleep(3);
} }
else else
{ {
$this->taskWaitForSeleniumStandaloneServer() $this->taskSeleniumStandaloneServer()
->setWebdriver($this->getWebdriver())
->runSelenium()
->waitForSelenium()
->run() ->run()
->stopOnFail(); ->stopOnFail();
} }
@ -498,7 +493,12 @@ class RoboFile extends \Robo\Tasks
public function killSelenium($host = 'localhost', $port = '4444') public function killSelenium($host = 'localhost', $port = '4444')
{ {
$this->say('Trying to kill the selenium server.'); $this->say('Trying to kill the selenium server.');
$this->_exec("curl http://$host:$port/selenium-server/driver/?cmd=shutDownSeleniumServer");
$this->taskSeleniumStandaloneServer()
->setUrl("http://$host:$port")
->killSelenium()
->run()
->stopOnFail();
} }
/** /**
@ -589,6 +589,7 @@ class RoboFile extends \Robo\Tasks
* @return string the webdriver string to use with selenium * @return string the webdriver string to use with selenium
* *
* @since version * @since version
* @throws \Codeception\Exception\ConfigurationException
*/ */
public function getWebdriver() public function getWebdriver()
{ {
@ -627,8 +628,8 @@ class RoboFile extends \Robo\Tasks
else else
{ {
$this->yell( $this->yell(
print_r($codeceptMainConfig) . print_r($codeceptMainConfig) .
'No driver for your browser. Check your browser in acceptance.suite.yml and the webDrivers in codeception.yml'); '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 // We can't do anything without a driver, exit
exit(1); exit(1);
@ -693,4 +694,18 @@ class RoboFile extends \Robo\Tasks
{ {
(new \Joomla\Jorobo\Tasks\BumpVersion())->run(); (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

@ -10,16 +10,14 @@ settings:
memory_limit: 1024M memory_limit: 1024M
webdrivers: webdrivers:
firefox: firefox:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\gecko\geckodriver64.exe windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\gecko\windows\geckodriver64.exe
mac: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/gecko/geckodriver_mac mac: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/gecko/mac/geckodriver
linux: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/gecko/geckodriver_linux_64 linux: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/gecko/linux/geckodriver
chrome: chrome:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\chrome\chromedriver.exe windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\chrome\windows\chromedriver.exe
mac: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/chrome/chromedriver_mac mac: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/chrome/mac/chromedriver
linux: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/chrome/chromedriver_linux_64 linux: vendor/joomla-projects/selenium-server-standalone/bin/webdrivers/chrome/linux/chromedriver
internet explorer: internet explorer:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\internet-explorer32\IEDriverServer.exe windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\internet-explorer32\IEDriverServer.exe
MicrosoftEdge: MicrosoftEdge:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\edge\MicrosoftWebDriver.exe windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\edge\msedgedriver64.exe
MicrosoftEdgeInsiders:
windows: vendor\joomla-projects\selenium-server-standalone\bin\webdrivers\edge-insiders\MicrosoftWebDriver.exe

View File

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

5143
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<jedupdate version="1">
<core_body>The Web Links Manager allows you to add, edit and remove links to other web sites on your Joomla! web site, and organize them into categories. You can then display these links on your site, and optionally let visitors add new links.</core_body>
<!-- valid links only or leave blank -->
<homepage_link>https://github.com/joomla-extensions/weblinks</homepage_link>
<download_link>https://github.com/joomla-extensions/weblinks/releases</download_link>
<documentation_link>https://docs.joomla.org/Help33:Components_Weblinks_Links</documentation_link>
<support_link>https://forum.joomla.org/</support_link>
<license_link>http://opensourcematters.org/legal/license-copyright/gnu-general-public-license-v2.html</license_link>
<version>3.6.0</version>
<compatibility>
<version>36</version>
<version>37</version>
</compatibility>
</jedupdate>

View File

@ -1,5 +1,5 @@
extension = weblinks extension = weblinks
version = 3.7.0 version = 3.9.0
source = src source = src
target = package target = package
@ -32,7 +32,7 @@ text = "
* @package Joomla.Administrator * @package Joomla.Administrator
* @subpackage Weblinks * @subpackage Weblinks
* *
* @copyright Copyright (C) 2005 - ##YEAR## Open Source Matters, Inc. All rights reserved. * @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
" "

View File

@ -5,12 +5,54 @@
<description>Joomla! CMS Weblinks Package</description> <description>Joomla! CMS Weblinks Package</description>
<element>pkg_weblinks</element> <element>pkg_weblinks</element>
<type>package</type> <type>package</type>
<version>3.6.0</version> <version>3.7.0</version>
<client>site</client> <client>site</client>
<infourl title="Weblinks Extension Package">https://github.com/joomla-extensions/weblinks/releases/tag/3.6.0</infourl> <infourl title="Weblinks Extension Package">https://github.com/joomla-extensions/weblinks/releases/tag/3.7.0</infourl>
<downloads> <downloads>
<downloadurl type="full" format="zip">https://github.com/joomla-extensions/weblinks/releases/download/3.6.0/pkg-weblinks-3.6.0.zip</downloadurl> <downloadurl type="full" format="zip">https://downloads.joomla.org/extensions/weblinks/3-7-0/pkg-weblinks-3.7.0.zip</downloadurl>
</downloads> </downloads>
<targetplatform name="joomla" version="3.[6789]" /> <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> </update>
</updates> </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" 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.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.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" />
<action name="core.edit.value" title="JACTION_EDITVALUE" description="JACTION_EDITVALUE_COMPONENT_DESC" />
</section> </section>
<section name="category"> <section name="category">
<action name="core.create" title="JACTION_CREATE" description="COM_CATEGORIES_ACCESS_CREATE_DESC" /> <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.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" />
<action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" /> <action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" />
</section> </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> </access>

View File

@ -50,6 +50,7 @@
label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL" label="JGLOBAL_HISTORY_LIMIT_OPTIONS_LABEL"
description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC" description="JGLOBAL_HISTORY_LIMIT_OPTIONS_DESC"
default="5" default="5"
showon="save_history:1"
/> />
<field <field
@ -64,6 +65,12 @@
<option value="0">JNO</option> <option value="0">JNO</option>
</field> </field>
<field
name="spacer1"
type="spacer"
hr="true"
/>
<field <field
name="icons" name="icons"
type="list" type="list"
@ -84,11 +91,17 @@
label="COM_WEBLINKS_FIELD_CONFIG_ICON_LABEL" label="COM_WEBLINKS_FIELD_CONFIG_ICON_LABEL"
/> />
<field
name="spacer2"
type="spacer"
hr="true"
/>
<field <field
name="float_first" name="float_first"
type="list" type="list"
label="COM_WEBLINKS_FLOAT_LABEL" label="COM_WEBLINKS_FLOAT_FIRST_LABEL"
description="COM_WEBLINKS_FLOAT_DESC" description="COM_WEBLINKS_FLOAT_FIRST_DESC"
> >
<option value="right">COM_WEBLINKS_RIGHT</option> <option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option> <option value="left">COM_WEBLINKS_LEFT</option>
@ -98,14 +111,20 @@
<field <field
name="float_second" name="float_second"
type="list" type="list"
label="COM_WEBLINKS_FLOAT_LABEL" label="COM_WEBLINKS_FLOAT_SECOND_LABEL"
description="COM_WEBLINKS_FLOAT_DESC" description="COM_WEBLINKS_FLOAT_SECOND_DESC"
> >
<option value="right">COM_WEBLINKS_RIGHT</option> <option value="right">COM_WEBLINKS_RIGHT</option>
<option value="left">COM_WEBLINKS_LEFT</option> <option value="left">COM_WEBLINKS_LEFT</option>
<option value="none">COM_WEBLINKS_NONE</option> <option value="none">COM_WEBLINKS_NONE</option>
</field> </field>
<field
name="spacer3"
type="spacer"
hr="true"
/>
<field <field
id="show_tags" id="show_tags"
name="show_tags" name="show_tags"
@ -411,6 +430,18 @@
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
</field> </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>
<fieldset <fieldset

View File

@ -36,7 +36,7 @@ class WeblinksAssociationsHelper extends JAssociationExtensionHelper
* *
* @since __DEPLOY_VERSION__ * @since __DEPLOY_VERSION__
*/ */
protected $itemTypes = array('category'); protected $itemTypes = array('weblink', 'category');
/** /**
* Has the extension association support * Has the extension association support
@ -105,6 +105,10 @@ class WeblinksAssociationsHelper extends JAssociationExtensionHelper
switch ($typeName) switch ($typeName)
{ {
case 'weblink':
$table = JTable::getInstance('Weblink', 'WeblinksTable');
break;
case 'category': case 'category':
$table = JTable::getInstance('Category'); $table = JTable::getInstance('Category');
break; break;
@ -141,6 +145,21 @@ class WeblinksAssociationsHelper extends JAssociationExtensionHelper
{ {
switch ($typeName) 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': case 'category':
$fields['created_user_id'] = 'a.created_user_id'; $fields['created_user_id'] = 'a.created_user_id';
$fields['ordering'] = 'a.lft'; $fields['ordering'] = 'a.lft';

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

@ -38,6 +38,21 @@ class WeblinksHelper extends JHelperContent
'index.php?option=com_categories&extension=com_weblinks', 'index.php?option=com_categories&extension=com_weblinks',
$vName == 'categories' $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'
);
}
} }
/** /**
@ -131,14 +146,17 @@ class WeblinksHelper extends JHelperContent
{ {
$item->count_published = $weblink->count; $item->count_published = $weblink->count;
} }
if ($weblink->state == 0) if ($weblink->state == 0)
{ {
$item->count_unpublished = $weblink->count; $item->count_unpublished = $weblink->count;
} }
if ($weblink->state == 2) if ($weblink->state == 2)
{ {
$item->count_archived = $weblink->count; $item->count_archived = $weblink->count;
} }
if ($weblink->state == -2) if ($weblink->state == -2)
{ {
$item->count_trashed = $weblink->count; $item->count_trashed = $weblink->count;

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

@ -8,7 +8,6 @@
description="COM_WEBLINKS_FILTER_SEARCH_DESC" description="COM_WEBLINKS_FILTER_SEARCH_DESC"
hint="JSEARCH_FILTER" hint="JSEARCH_FILTER"
/> />
<field <field
name="published" name="published"
type="status" type="status"
@ -18,7 +17,6 @@
> >
<option value="">JOPTION_SELECT_PUBLISHED</option> <option value="">JOPTION_SELECT_PUBLISHED</option>
</field> </field>
<field <field
name="category_id" name="category_id"
type="category" type="category"
@ -29,7 +27,6 @@
> >
<option value="">JOPTION_SELECT_CATEGORY</option> <option value="">JOPTION_SELECT_CATEGORY</option>
</field> </field>
<field <field
name="access" name="access"
type="accesslevel" type="accesslevel"
@ -39,7 +36,6 @@
> >
<option value="">JOPTION_SELECT_ACCESS</option> <option value="">JOPTION_SELECT_ACCESS</option>
</field> </field>
<field <field
name="language" name="language"
type="contentlanguage" type="contentlanguage"
@ -50,7 +46,6 @@
<option value="">JOPTION_SELECT_LANGUAGE</option> <option value="">JOPTION_SELECT_LANGUAGE</option>
<option value="*">JALL</option> <option value="*">JALL</option>
</field> </field>
<field <field
name="tag" name="tag"
type="tag" type="tag"
@ -61,7 +56,6 @@
> >
<option value="">JOPTION_SELECT_TAG</option> <option value="">JOPTION_SELECT_TAG</option>
</field> </field>
<field <field
name="level" name="level"
type="integer" type="integer"
@ -76,7 +70,6 @@
<option value="">JOPTION_SELECT_MAX_LEVELS</option> <option value="">JOPTION_SELECT_MAX_LEVELS</option>
</field> </field>
</fields> </fields>
<fields name="list"> <fields name="list">
<field <field
name="fullordering" name="fullordering"
@ -97,12 +90,13 @@
<option value="access_level DESC">JGRID_HEADING_ACCESS_DESC</option> <option value="access_level DESC">JGRID_HEADING_ACCESS_DESC</option>
<option value="a.hits ASC">JGLOBAL_HITS_ASC</option> <option value="a.hits ASC">JGLOBAL_HITS_ASC</option>
<option value="a.hits DESC">JGLOBAL_HITS_DESC</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 ASC">JGRID_HEADING_LANGUAGE_ASC</option>
<option value="language_title DESC">JGRID_HEADING_LANGUAGE_DESC</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 ASC">JGRID_HEADING_ID_ASC</option>
<option value="a.id DESC">JGRID_HEADING_ID_DESC</option> <option value="a.id DESC">JGRID_HEADING_ID_DESC</option>
</field> </field>
<field <field
name="limit" name="limit"
type="limitbox" type="limitbox"

View File

@ -6,38 +6,39 @@
<field <field
name="id" name="id"
type="text" type="text"
default="0"
label="JGLOBAL_FIELD_ID_LABEL" label="JGLOBAL_FIELD_ID_LABEL"
description="JGLOBAL_FIELD_ID_DESC"
readonly="true" readonly="true"
class="readonly" class="readonly"
description="JGLOBAL_FIELD_ID_DESC" default="0"
/> />
<field <field
name="title" name="title"
type="text" type="text"
class="input-xxlarge input-large-text"
size="40"
label="JGLOBAL_TITLE" label="JGLOBAL_TITLE"
description="COM_WEBLINKS_FIELD_TITLE_DESC" description="COM_WEBLINKS_FIELD_TITLE_DESC"
class="input-xxlarge input-large-text"
size="40"
required="true" required="true"
/> />
<field <field
name="alias" name="alias"
type="text" type="text"
size="40"
label="JFIELD_ALIAS_LABEL" label="JFIELD_ALIAS_LABEL"
description="COM_WEBLINKS_FIELD_ALIAS_DESC" description="COM_WEBLINKS_FIELD_ALIAS_DESC"
size="40"
hint="JFIELD_ALIAS_PLACEHOLDER" hint="JFIELD_ALIAS_PLACEHOLDER"
/> />
<field <field
name="catid" name="catid"
type="categoryedit" type="categoryedit"
extension="com_weblinks"
label="JCATEGORY" label="JCATEGORY"
description="COM_WEBLINKS_FIELD_CATEGORY_DESC" description="COM_WEBLINKS_FIELD_CATEGORY_DESC"
extension="com_weblinks"
addfieldprefix="Joomla\Component\Categories\Administrator\Field"
required="true" required="true"
default="" default=""
/> />
@ -45,31 +46,31 @@
<field <field
name="url" name="url"
type="url" type="url"
label="COM_WEBLINKS_FIELD_URL_LABEL"
description="COM_WEBLINKS_FIELD_URL_DESC"
class="span12" class="span12"
filter="url" filter="url"
size="40" size="40"
label="COM_WEBLINKS_FIELD_URL_LABEL"
description="COM_WEBLINKS_FIELD_URL_DESC"
required="true" required="true"
/> />
<field <field
name="description" name="description"
type="editor" type="editor"
label="JGLOBAL_DESCRIPTION"
description="COM_WEBLINKS_FIELD_DESCRIPTION_DESC"
buttons="true" buttons="true"
hide="pagebreak,readmore" hide="pagebreak,readmore"
filter="JComponentHelper::filterText" filter="JComponentHelper::filterText"
label="JGLOBAL_DESCRIPTION"
description="COM_WEBLINKS_FIELD_DESCRIPTION_DESC"
/> />
<field <field
name="hits" name="hits"
type="text" type="text"
class="readonly"
size="6"
label="JGLOBAL_HITS" label="JGLOBAL_HITS"
description="COM_WEBLINKS_HITS_DESC" description="COM_WEBLINKS_HITS_DESC"
class="readonly"
size="6"
readonly="true" readonly="true"
filter="unset" filter="unset"
/> />
@ -160,9 +161,9 @@
<field <field
name="modified" name="modified"
type="calendar" type="calendar"
class="readonly"
label="JGLOBAL_FIELD_MODIFIED_LABEL" label="JGLOBAL_FIELD_MODIFIED_LABEL"
description="COM_WEBLINKS_FIELD_MODIFIED_DESC" description="COM_WEBLINKS_FIELD_MODIFIED_DESC"
class="readonly"
size="22" size="22"
readonly="true" readonly="true"
format="%Y-%m-%d %H:%M:%S" format="%Y-%m-%d %H:%M:%S"
@ -213,10 +214,10 @@
<field <field
name="version" name="version"
type="text" type="text"
class="readonly"
label="COM_WEBLINKS_FIELD_VERSION_LABEL" label="COM_WEBLINKS_FIELD_VERSION_LABEL"
size="6"
description="COM_WEBLINKS_FIELD_VERSION_DESC" description="COM_WEBLINKS_FIELD_VERSION_DESC"
class="readonly"
size="6"
readonly="true" readonly="true"
filter="unset" filter="unset"
/> />
@ -259,9 +260,9 @@
<field <field
name="target" name="target"
type="list" type="list"
default=""
label="COM_WEBLINKS_FIELD_TARGET_LABEL" label="COM_WEBLINKS_FIELD_TARGET_LABEL"
description="COM_WEBLINKS_FIELD_TARGET_DESC" description="COM_WEBLINKS_FIELD_TARGET_DESC"
default=""
useglobal="true" useglobal="true"
> >
<option value="0">JBROWSERTARGET_PARENT</option> <option value="0">JBROWSERTARGET_PARENT</option>
@ -273,25 +274,25 @@
<field <field
name="width" name="width"
type="text" type="text"
class="validate-numeric"
label="COM_WEBLINKS_FIELD_WIDTH_LABEL" label="COM_WEBLINKS_FIELD_WIDTH_LABEL"
description="COM_WEBLINKS_FIELD_WIDTH_DESC" description="COM_WEBLINKS_FIELD_WIDTH_DESC"
class="validate-numeric"
/> />
<field <field
name="height" name="height"
type="text" type="text"
class="validate-numeric"
label="COM_WEBLINKS_FIELD_HEIGHT_LABEL" label="COM_WEBLINKS_FIELD_HEIGHT_LABEL"
description="COM_WEBLINKS_FIELD_HEIGHT_DESC" description="COM_WEBLINKS_FIELD_HEIGHT_DESC"
class="validate-numeric"
/> />
<field <field
name="count_clicks" name="count_clicks"
type="list" type="list"
class="chzn-color"
label="COM_WEBLINKS_FIELD_COUNTCLICKS_LABEL" label="COM_WEBLINKS_FIELD_COUNTCLICKS_LABEL"
description="COM_WEBLINKS_FIELD_COUNTCLICKS_DESC" description="COM_WEBLINKS_FIELD_COUNTCLICKS_DESC"
class="chzn-color"
useglobal="true" useglobal="true"
> >
<option value="0">JNO</option> <option value="0">JNO</option>
@ -317,8 +318,8 @@
<field <field
name="float_first" name="float_first"
type="list" type="list"
label="COM_WEBLINKS_FLOAT_LABEL" label="COM_WEBLINKS_FLOAT_FIRST_LABEL"
description="COM_WEBLINKS_FLOAT_DESC" description="COM_WEBLINKS_FLOAT_FIRST_DESC"
useglobal="true" useglobal="true"
> >
<option value="right">COM_WEBLINKS_RIGHT</option> <option value="right">COM_WEBLINKS_RIGHT</option>
@ -358,8 +359,8 @@
<field <field
name="float_second" name="float_second"
type="list" type="list"
label="COM_WEBLINKS_FLOAT_LABEL" label="COM_WEBLINKS_FLOAT_SECOND_LABEL"
description="COM_WEBLINKS_FLOAT_DESC" description="COM_WEBLINKS_FLOAT_SECOND_DESC"
> >
<option value="">JGLOBAL_USE_GLOBAL</option> <option value="">JGLOBAL_USE_GLOBAL</option>
<option value="right">COM_WEBLINKS_RIGHT</option> <option value="right">COM_WEBLINKS_RIGHT</option>

View File

@ -11,6 +11,8 @@ defined('_JEXEC') or die;
use Joomla\Registry\Registry; use Joomla\Registry\Registry;
JLoader::register('WeblinksHelper', JPATH_ADMINISTRATOR . '/components/com_weblinks/helpers/weblinks.php');
/** /**
* Weblinks model. * Weblinks model.
* *
@ -26,6 +28,14 @@ class WeblinksModelWeblink extends JModelAdmin
*/ */
public $typeAlias = 'com_weblinks.weblink'; 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. * The prefix to use with controller messages.
* *
@ -145,6 +155,12 @@ class WeblinksModelWeblink extends JModelAdmin
$form->setFieldAttribute('publish_down', 'filter', 'unset'); $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; return $form;
} }
@ -200,6 +216,24 @@ class WeblinksModelWeblink extends JModelAdmin
$registry->loadString($item->images); $registry->loadString($item->images);
$item->images = $registry->toArray(); $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)) if (!empty($item->id))
{ {
$item->tags = new JHelperTags; $item->tags = new JHelperTags;
@ -296,7 +330,7 @@ class WeblinksModelWeblink extends JModelAdmin
// Cast catid to integer for comparison // Cast catid to integer for comparison
$catid = (int) $data['catid']; $catid = (int) $data['catid'];
// Check if New Category exists // Check if New Category exists
if ($catid > 0) if ($catid > 0)
{ {
@ -376,6 +410,37 @@ class WeblinksModelWeblink extends JModelAdmin
$form->setFieldAttribute('catid', 'allowAdd', 'true'); $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); parent::preprocessForm($form, $data, $group);
} }

View File

@ -52,6 +52,13 @@ class WeblinksModelWeblinks extends JModelList
'tag', 'tag',
'level', 'c.level', 'level', 'c.level',
); );
$assoc = JLanguageAssociations::isEnabled();
if ($assoc)
{
$config['filter_fields'][] = 'association';
}
} }
parent::__construct($config); parent::__construct($config);
@ -70,6 +77,22 @@ class WeblinksModelWeblinks extends JModelList
*/ */
protected function populateState($ordering = 'a.title', $direction = 'asc') 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. // Load the filter state.
$this->setState('filter.search', $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search', '', 'string')); $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.access', $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access', '', 'cmd'));
@ -83,6 +106,12 @@ class WeblinksModelWeblinks extends JModelList
$params = JComponentHelper::getParams('com_weblinks'); $params = JComponentHelper::getParams('com_weblinks');
$this->setState('params', $params); $this->setState('params', $params);
// Force a language.
if (!empty($forcedLanguage))
{
$this->setState('filter.language', $forcedLanguage);
}
// List state information. // List state information.
parent::populateState($ordering, $direction); parent::populateState($ordering, $direction);
} }
@ -132,7 +161,7 @@ class WeblinksModelWeblinks extends JModelList
$query->select( $query->select(
$this->getState( $this->getState(
'list.select', 'list.select',
'a.id, a.title, a.alias, a.checked_out, a.checked_out_time, a.catid, a.created_by, ' . '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' 'a.hits, a.state, a.access, a.ordering, a.language, a.publish_up, a.publish_down'
) )
); );
@ -155,6 +184,17 @@ class WeblinksModelWeblinks extends JModelList
$query->select('c.title AS category_title') $query->select('c.title AS category_title')
->join('LEFT', $db->quoteName('#__categories', 'c') . ' ON ' . $db->qn('c.id') . ' = ' . $db->qn('a.catid')); ->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. // Filter by access level.
if ($access = $this->getState('filter.access')) if ($access = $this->getState('filter.access'))
{ {

View File

@ -153,7 +153,8 @@ class Com_WeblinksInstallerScript
. $db->quote('com_weblinks.weblink') . ', ' . $db->quote('com_weblinks.weblink') . ', '
. $db->quote( . $db->quote(
'{"special":{"dbtable":"#__weblinks","key":"id","type":"Weblink","prefix":"WeblinksTable","config":"array()"}, '{"special":{"dbtable":"#__weblinks","key":"id","type":"Weblink","prefix":"WeblinksTable","config":"array()"},
"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}') . ', ' "common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}'
) . ', '
. $db->quote('') . ', ' . $db->quote('') . ', '
. $db->quote( . $db->quote(
'{"common":{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias", '{"common":{"core_content_item_id":"id","core_title":"title","core_state":"state","core_alias":"alias",
@ -161,7 +162,8 @@ class Com_WeblinksInstallerScript
"core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"params", "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_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_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc",
"core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special":{}}') . ', ' "core_catid":"catid", "core_xreference":"xreference", "asset_id":"null"}, "special":{}}'
) . ', '
. $db->quote('WeblinksHelperRoute::getWeblinkRoute') . ', ' . $db->quote('WeblinksHelperRoute::getWeblinkRoute') . ', '
. $db->quote( . $db->quote(
'{"formFile":"administrator\\/components\\/com_weblinks\\/models\\/forms\\/weblink.xml", '{"formFile":"administrator\\/components\\/com_weblinks\\/models\\/forms\\/weblink.xml",
@ -170,7 +172,8 @@ class Com_WeblinksInstallerScript
"ordering"], "displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}, "ordering"], "displayLookup":[{"sourceColumn":"catid","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"},
{"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"}, {"sourceColumn":"created_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},
{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"}, {"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},
{"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ]}') {"sourceColumn":"modified_by","targetTable":"#__users","targetColumn":"id","displayColumn":"name"} ]}'
)
); );
$db->setQuery($query); $db->setQuery($query);
@ -189,7 +192,8 @@ class Com_WeblinksInstallerScript
. $db->quote('com_weblinks.category') . ', ' . $db->quote('com_weblinks.category') . ', '
. $db->quote(' . $db->quote('
{"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"}, {"special":{"dbtable":"#__categories","key":"id","type":"Category","prefix":"JTable","config":"array()"},
"common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}') . ', ' "common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}'
) . ', '
. $db->quote('') . ', ' . $db->quote('') . ', '
. $db->quote(' . $db->quote('
{"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias", {"common":{"core_content_item_id":"id","core_title":"title","core_state":"published","core_alias":"alias",
@ -198,7 +202,8 @@ class Com_WeblinksInstallerScript
"core_params":"params", "core_featured":"null", "core_metadata":"metadata", "core_language":"language", "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_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"}, "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"}}') . ', ' "special":{"parent_id":"parent_id","lft":"lft","rgt":"rgt","level":"level","path":"path","extension":"extension","note":"note"}}'
) . ', '
. $db->quote('WeblinksHelperRoute::getCategoryRoute') . ', ' . $db->quote('WeblinksHelperRoute::getCategoryRoute') . ', '
. $db->quote(' . $db->quote('
{"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml", {"formFile":"administrator\\/components\\/com_categories\\/models\\/forms\\/category.xml",
@ -209,7 +214,8 @@ class Com_WeblinksInstallerScript
"displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id", "displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id",
"displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id", "displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id",
"displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id", "displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id",
"displayColumn":"title"}]}') "displayColumn":"title"}]}'
)
); );
$db->setQuery($query); $db->setQuery($query);

View File

@ -38,8 +38,11 @@ class WeblinksTableWeblink extends JTable
// Set the published column alias // Set the published column alias
$this->setColumnAlias('published', 'state'); $this->setColumnAlias('published', 'state');
JTableObserverTags::createObserver($this, array('typeAlias' => 'com_weblinks.weblink')); if (version_compare(JVERSION, '4.0', '<') == 1)
JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_weblinks.weblink')); {
JTableObserverTags::createObserver($this, array('typeAlias' => 'com_weblinks.weblink'));
JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_weblinks.weblink'));
}
} }
/** /**
@ -91,9 +94,10 @@ class WeblinksTableWeblink extends JTable
} }
// Verify that the alias is unique // 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')); $this->setError(JText::_('COM_WEBLINKS_ERROR_UNIQUE_ALIAS'));
@ -126,6 +130,7 @@ class WeblinksTableWeblink extends JTable
if (trim($this->title) == '') if (trim($this->title) == '')
{ {
$this->setError(JText::_('COM_WEBLINKS_ERR_TABLES_TITLE')); $this->setError(JText::_('COM_WEBLINKS_ERR_TABLES_TITLE'));
return false; return false;
} }
@ -136,6 +141,7 @@ class WeblinksTableWeblink extends JTable
->select($db->quoteName('id')) ->select($db->quoteName('id'))
->from($db->quoteName('#__weblinks')) ->from($db->quoteName('#__weblinks'))
->where($db->quoteName('title') . ' = ' . $db->quote($this->title)) ->where($db->quoteName('title') . ' = ' . $db->quote($this->title))
->where($db->quoteName('language') . ' = ' . $db->quote($this->language))
->where($db->quoteName('catid') . ' = ' . (int) $this->catid); ->where($db->quoteName('catid') . ' = ' . (int) $this->catid);
$db->setQuery($query); $db->setQuery($query);
@ -153,7 +159,7 @@ class WeblinksTableWeblink extends JTable
$this->alias = $this->title; $this->alias = $this->title;
} }
$this->alias = JApplicationHelper::stringURLSafe($this->alias); $this->alias = JApplicationHelper::stringURLSafe($this->alias, $this->language);
if (trim(str_replace('-', '', $this->alias)) == '') if (trim(str_replace('-', '', $this->alias)) == '')
{ {
@ -193,6 +199,6 @@ class WeblinksTableWeblink extends JTable
$this->metakey = implode(", ", $clean_keys); $this->metakey = implode(", ", $clean_keys);
} }
return true; return parent::check();
} }
} }

View File

@ -14,8 +14,13 @@ JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('behavior.formvalidator'); JHtml::_('behavior.formvalidator');
JHtml::_('formbehavior.chosen', 'select', null, array('disable_search_threshold' => 0 )); JHtml::_('formbehavior.chosen', 'select', null, array('disable_search_threshold' => 0 ));
// Ignore Image fieldset for the layouts as we render it manually $app = JFactory::getApplication();
$this->ignore_fieldsets = array('images'); $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(" JFactory::getDocument()->addScriptDeclaration("
Joomla.submitbutton = function(task) Joomla.submitbutton = function(task)
@ -26,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); ?> <?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?>
@ -39,8 +49,8 @@ JFactory::getDocument()->addScriptDeclaration("
<div class="row-fluid"> <div class="row-fluid">
<div class="span9"> <div class="span9">
<div class="form-vertical"> <div class="form-vertical">
<?php echo $this->form->getControlGroup('url'); ?> <?php echo $this->form->renderField('url'); ?>
<?php echo $this->form->getControlGroup('description'); ?> <?php echo $this->form->renderField('description'); ?>
</div> </div>
</div> </div>
<div class="span3"> <div class="span3">
@ -52,9 +62,9 @@ JFactory::getDocument()->addScriptDeclaration("
<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'images', JText::_('JGLOBAL_FIELDSET_IMAGE_OPTIONS', true)); ?> <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'images', JText::_('JGLOBAL_FIELDSET_IMAGE_OPTIONS', true)); ?>
<div class="row-fluid"> <div class="row-fluid">
<div class="span6"> <div class="span6">
<?php echo $this->form->getControlGroup('images'); ?> <?php echo $this->form->renderField('images'); ?>
<?php foreach ($this->form->getGroup('images') as $field) : ?> <?php foreach ($this->form->getGroup('images') as $field) : ?>
<?php echo $field->getControlGroup(); ?> <?php echo $field->renderField(); ?>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>
</div> </div>
@ -73,11 +83,20 @@ JFactory::getDocument()->addScriptDeclaration("
<?php echo JHtml::_('bootstrap.endTab'); ?> <?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JLayoutHelper::render('joomla.edit.params', $this); ?> <?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'); ?> <?php echo JHtml::_('bootstrap.endTabSet'); ?>
</div> </div>
<input type="hidden" name="task" value="" /> <input type="hidden" name="task" value="" />
<input type="hidden" name="forcedLanguage" value="<?php echo $input->get('forcedLanguage', '', 'cmd'); ?>" />
<?php echo JHtml::_('form.token'); ?> <?php echo JHtml::_('form.token'); ?>
</form> </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,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

@ -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.metadata', $this);

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

@ -43,6 +43,20 @@ class WeblinksViewWeblink extends JViewLegacy
return false; 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(); $this->addToolbar();
parent::display($tpl); parent::display($tpl);
@ -74,15 +88,23 @@ class WeblinksViewWeblink extends JViewLegacy
JToolbarHelper::apply('weblink.apply'); JToolbarHelper::apply('weblink.apply');
JToolbarHelper::save('weblink.save'); JToolbarHelper::save('weblink.save');
} }
if (!$checkedOut && (count($user->getAuthorisedCategories('com_weblinks', 'core.create')))) if (!$checkedOut && (count($user->getAuthorisedCategories('com_weblinks', 'core.create'))))
{ {
JToolbarHelper::save2new('weblink.save2new'); JToolbarHelper::save2new('weblink.save2new');
} }
// If an existing item, can save to a copy. // If an existing item, can save to a copy.
if (!$isNew && (count($user->getAuthorisedCategories('com_weblinks', 'core.create')) > 0)) if (!$isNew && (count($user->getAuthorisedCategories('com_weblinks', 'core.create')) > 0))
{ {
JToolbarHelper::save2copy('weblink.save2copy'); 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)) if (empty($this->item->id))
{ {
JToolbarHelper::cancel('weblink.cancel'); JToolbarHelper::cancel('weblink.cancel');

View File

@ -15,12 +15,13 @@ JHtml::_('bootstrap.tooltip');
JHtml::_('behavior.multiselect'); JHtml::_('behavior.multiselect');
JHtml::_('formbehavior.chosen', 'select'); JHtml::_('formbehavior.chosen', 'select');
$user = JFactory::getUser(); $user = JFactory::getUser();
$userId = $user->get('id'); $userId = $user->get('id');
$listOrder = $this->escape($this->state->get('list.ordering')); $listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction')); $listDirn = $this->escape($this->state->get('list.direction'));
$canOrder = $user->authorise('core.edit.state', 'com_weblinks.category'); $canOrder = $user->authorise('core.edit.state', 'com_weblinks.category');
$saveOrder = $listOrder == 'a.ordering'; $saveOrder = $listOrder == 'a.ordering';
$assoc = JLanguageAssociations::isEnabled();
if ($saveOrder) if ($saveOrder)
{ {
@ -65,6 +66,11 @@ if ($saveOrder)
<th width="5%" class="nowrap center hidden-phone"> <th width="5%" class="nowrap center hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?> <?php echo JHtml::_('searchtools.sort', 'JGLOBAL_HITS', 'a.hits', $listDirn, $listOrder); ?>
</th> </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"> <th width="10%" class="nowrap hidden-phone">
<?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language_title', $listDirn, $listOrder); ?> <?php echo JHtml::_('searchtools.sort', 'JGRID_HEADING_LANGUAGE', 'language_title', $listDirn, $listOrder); ?>
</th> </th>
@ -98,7 +104,7 @@ if ($saveOrder)
<?php $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); ?> <?php $iconClass = ' inactive tip-top hasTooltip" title="' . JHtml::tooltipText('JORDERINGDISABLED'); ?>
<?php endif; ?> <?php endif; ?>
<span class="sortable-handler<?php echo $iconClass ?>"> <span class="sortable-handler<?php echo $iconClass ?>">
<i class="icon-menu"></i> <i class="icon-menu" aria-hidden="true"></i>
</span> </span>
<?php if ($canChange && $saveOrder) : ?> <?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 " /> <input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
@ -118,7 +124,7 @@ if ($saveOrder)
<?php endif; ?> <?php endif; ?>
</div> </div>
</td> </td>
<td class="nowrap has-context"> <td class="has-context">
<?php if ($item->checked_out) : ?> <?php if ($item->checked_out) : ?>
<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'weblinks.', $canCheckin); ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'weblinks.', $canCheckin); ?>
<?php endif; ?> <?php endif; ?>
@ -141,7 +147,14 @@ if ($saveOrder)
<td class="center hidden-phone"> <td class="center hidden-phone">
<?php echo $item->hits; ?> <?php echo $item->hits; ?>
</td> </td>
<td class="small nowrap hidden-phone"> <?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); ?> <?php echo JLayoutHelper::render('joomla.content.language', $item); ?>
</td> </td>
<td class="center hidden-phone"> <td class="center hidden-phone">
@ -151,11 +164,22 @@ if ($saveOrder)
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </tbody>
</table> </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; ?> <?php endif; ?>
<?php //Load the batch processing form. ?>
<?php echo $this->loadTemplate('batch'); ?>
<input type="hidden" name="task" value="" /> <input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" /> <input type="hidden" name="boxchecked" value="0" />
<?php echo JHtml::_('form.token'); ?> <?php echo JHtml::_('form.token'); ?>

View File

@ -1,56 +0,0 @@
<?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;
$published = $this->state->get('filter.published');
?>
<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

@ -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

@ -37,17 +37,44 @@ class WeblinksViewWeblinks extends JViewLegacy
$this->filterForm = $this->get('FilterForm'); $this->filterForm = $this->get('FilterForm');
$this->activeFilters = $this->get('ActiveFilters'); $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. // Check for errors.
if (count($errors = $this->get('Errors'))) if (count($errors = $this->get('Errors')))
{ {
JError::raiseError(500, implode("\n", $errors)); JError::raiseError(500, implode("\n", $errors));
return false; return false;
} }
$this->addToolbar(); // We don't need toolbar in the modal layout.
$this->sidebar = JHtmlSidebar::render(); 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); parent::display($tpl);
} }
@ -67,7 +94,7 @@ class WeblinksViewWeblinks extends JViewLegacy
$user = JFactory::getUser(); $user = JFactory::getUser();
// Get the toolbar object instance // Get the toolbar object instance
$bar = JToolBar::getInstance('toolbar'); $bar = JToolbar::getInstance('toolbar');
JToolbarHelper::title(JText::_('COM_WEBLINKS_MANAGER_WEBLINKS'), 'link weblinks'); JToolbarHelper::title(JText::_('COM_WEBLINKS_MANAGER_WEBLINKS'), 'link weblinks');
@ -103,7 +130,7 @@ class WeblinksViewWeblinks extends JViewLegacy
if ($user->authorise('core.create', 'com_weblinks') && $user->authorise('core.edit', 'com_weblinks') if ($user->authorise('core.create', 'com_weblinks') && $user->authorise('core.edit', 'com_weblinks')
&& $user->authorise('core.edit.state', 'com_weblinks')) && $user->authorise('core.edit.state', 'com_weblinks'))
{ {
JHtml::_('bootstrap.modal', 'collapseModal'); JHtml::_('bootstrap.renderModal', 'collapseModal');
$title = JText::_('JTOOLBAR_BATCH'); $title = JText::_('JTOOLBAR_BATCH');
// Instantiate a new JLayoutFile instance and render the batch button // Instantiate a new JLayoutFile instance and render the batch button

View File

@ -33,6 +33,10 @@
</schemas> </schemas>
</update> </update>
<media folder="media/com_weblinks" destination="com_weblinks">
##MEDIA_FILES##
</media>
<files folder="components/com_weblinks"> <files folder="components/com_weblinks">
##FRONTEND_COMPONENT_FILES## ##FRONTEND_COMPONENT_FILES##
</files> </files>

View File

@ -9,6 +9,7 @@ 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_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_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_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_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_COMPONENT_LABEL="Web Link"
COM_WEBLINKS_CONFIG_INTEGRATION_SETTINGS_DESC="These settings determine how the Web Links Component will integrate with other extensions." COM_WEBLINKS_CONFIG_INTEGRATION_SETTINGS_DESC="These settings determine how the Web Links Component will integrate with other extensions."
@ -64,9 +65,9 @@ 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_DESC="Select a web links category to display."
COM_WEBLINKS_FIELD_SELECT_CATEGORY_LABEL="Select a Category" 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_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_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_STATE_DESC="Set publication status."
COM_WEBLINKS_FIELD_TARGET_DESC="Target browser window when the link is selected." COM_WEBLINKS_FIELD_TARGET_DESC="Target browser window when the link is selected."
COM_WEBLINKS_FIELD_TARGET_LABEL="Target" COM_WEBLINKS_FIELD_TARGET_LABEL="Target"
@ -81,11 +82,14 @@ COM_WEBLINKS_FIELD_WIDTH_LABEL="Width"
COM_WEBLINKS_FIELDSET_IMAGES="Images" COM_WEBLINKS_FIELDSET_IMAGES="Images"
COM_WEBLINKS_FIELDSET_OPTIONS="Options" COM_WEBLINKS_FIELDSET_OPTIONS="Options"
COM_WEBLINKS_FILTER_CATEGORY="Filter Category" COM_WEBLINKS_FILTER_CATEGORY="Filter Category"
COM_WEBLINKS_FILTER_SEARCH_DESC="Search in web link title and alias. Prefix with ID: to search for an web link ID." 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_SEARCH_LABEL="Search Web Links"
COM_WEBLINKS_FILTER_STATE="Filter State" COM_WEBLINKS_FILTER_STATE="Filter State"
COM_WEBLINKS_FLOAT_DESC="Controls placement of the image." COM_WEBLINKS_FLOAT_FIRST_DESC="Controls placement of the first image."
COM_WEBLINKS_FLOAT_LABEL="Image Float" 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_HITS_DESC="Number of hits for this web link."
COM_WEBLINKS_LEFT="Left" 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_LIST_LAYOUT_DESC="These settings apply for Web Links List Layout Options unless they are changed for a specific menu item."
@ -116,9 +120,11 @@ COM_WEBLINKS_ORDER_HEADING="Order"
COM_WEBLINKS_RIGHT="Right" COM_WEBLINKS_RIGHT="Right"
COM_WEBLINKS_SAVE_SUCCESS="Web link successfully saved" COM_WEBLINKS_SAVE_SUCCESS="Web link successfully saved"
COM_WEBLINKS_SEARCH_IN_TITLE="Search in title" 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_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_CATEGORIES="Categories"
COM_WEBLINKS_SUBMENU_WEBLINKS="Web Links" COM_WEBLINKS_SUBMENU_WEBLINKS="Web Links"
COM_WEBLINKS_WEBLINKS="Web Links"
COM_WEBLINKS_XML_DESCRIPTION="Component for web links management" COM_WEBLINKS_XML_DESCRIPTION="Component for web links management"
JGLOBAL_NO_ITEM_SELECTED="No web links selected" 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." JGLOBAL_NEWITEMSLAST_DESC="New Web links default to the last position. Ordering can be changed after this Web link is saved."

View File

@ -15,11 +15,15 @@ COM_WEBLINKS_CATEGORY_VIEW_DEFAULT_OPTION="Default"
COM_WEBLINKS_CATEGORY_VIEW_DEFAULT_TITLE="List Web Links in a Category" COM_WEBLINKS_CATEGORY_VIEW_DEFAULT_TITLE="List Web Links in a Category"
COM_WEBLINKS_CONTENT_TYPE_WEBLINK="Web Link" COM_WEBLINKS_CONTENT_TYPE_WEBLINK="Web Link"
COM_WEBLINKS_CONTENT_TYPE_CATEGORY="Web Links Category" 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_DESC="Display a form to submit a web link in the Frontend."
COM_WEBLINKS_FORM_VIEW_DEFAULT_OPTION="Default" COM_WEBLINKS_FORM_VIEW_DEFAULT_OPTION="Default"
COM_WEBLINKS_FORM_VIEW_DEFAULT_TITLE="Submit a Web Link" COM_WEBLINKS_FORM_VIEW_DEFAULT_TITLE="Submit a Web Link"
COM_WEBLINKS_LINKS="Links" COM_WEBLINKS_LINKS="Links"
COM_WEBLINKS_TAGS_WEBLINK="Web Link" COM_WEBLINKS_TAGS_WEBLINK="Web Link"
COM_WEBLINKS_TAGS_CATEGORY="Web Link Category" 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." COM_WEBLINKS_XML_DESCRIPTION="Component for web links management."

View File

@ -21,6 +21,7 @@
<file type="plugin" id="weblinks" group="finder">plg_finder_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="search">plg_search_weblinks.zip</file>
<file type="plugin" id="weblinks" group="system">plg_system_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> </files>
<languages folder="language"> <languages folder="language">
<language tag="en-GB">en-GB/en-GB.pkg_weblinks.sys.ini</language> <language tag="en-GB">en-GB/en-GB.pkg_weblinks.sys.ini</language>

View File

@ -19,8 +19,6 @@ class Pkg_WeblinksInstallerScript extends JInstallerScript
/** /**
* Extension script constructor. * Extension script constructor.
* *
* @return void
*
* @since __DEPLOY_VERSION__ * @since __DEPLOY_VERSION__
*/ */
public function __construct() public function __construct()

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt
@ -36,6 +36,23 @@ abstract class WeblinksHelperAssociation extends CategoryHelperAssociation
$view = is_null($view) ? $jinput->get('view') : $view; $view = is_null($view) ? $jinput->get('view') : $view;
$id = empty($id) ? $jinput->getInt('id') : $id; $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') if ($view == 'category' || $view == 'categories')
{ {
return self::getCategoryAssociations($id, 'com_weblinks'); return self::getCategoryAssociations($id, 'com_weblinks');

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt
@ -92,7 +92,7 @@ class WeblinksModelCategories extends JModelList
*/ */
public function getItems() public function getItems()
{ {
if (!count($this->_items)) if ($this->_items === null)
{ {
$app = JFactory::getApplication(); $app = JFactory::getApplication();
$menu = $app->getMenu(); $menu = $app->getMenu();

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt
@ -186,7 +186,7 @@ class WeblinksModelCategory extends JModelList
$search = $db->quote('%' . $db->escape($search, true) . '%'); $search = $db->quote('%' . $db->escape($search, true) . '%');
$query->where('(a.title LIKE ' . $search . ')'); $query->where('(a.title LIKE ' . $search . ')');
} }
// If grouping by subcategory, add the subcategory list ordering clause. // If grouping by subcategory, add the subcategory list ordering clause.
if ($this->getState('category.group', 0)) if ($this->getState('category.group', 0))
{ {

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -22,8 +22,8 @@
<field <field
name="title" name="title"
type="text" type="text"
description="COM_WEBLINKS_FIELD_TITLE_DESC"
label="JGLOBAL_TITLE" label="JGLOBAL_TITLE"
description="COM_WEBLINKS_FIELD_TITLE_DESC"
required="true" required="true"
size="30" size="30"
/> />
@ -31,8 +31,8 @@
<field <field
name="alias" name="alias"
type="text" type="text"
description="COM_WEBLINKS_FIELD_ALIAS_DESC"
label="JFIELD_ALIAS_LABEL" label="JFIELD_ALIAS_LABEL"
description="COM_WEBLINKS_FIELD_ALIAS_DESC"
hint="JFIELD_ALIAS_PLACEHOLDER" hint="JFIELD_ALIAS_PLACEHOLDER"
size="45" size="45"
/> />
@ -40,20 +40,20 @@
<field <field
name="description" name="description"
type="editor" type="editor"
label="JGLOBAL_DESCRIPTION"
description="COM_WEBLINKS_FIELD_DESCRIPTION_DESC"
buttons="true" buttons="true"
hide="pagebreak,readmore" hide="pagebreak,readmore"
description="COM_WEBLINKS_FIELD_DESCRIPTION_DESC"
filter="safehtml" filter="safehtml"
label="JGLOBAL_DESCRIPTION"
asset_id="com_weblinks" asset_id="com_weblinks"
/> />
<field <field
name="state" name="state"
type="list" type="list"
default="1"
description="JFIELD_PUBLISHED_DESC"
label="JSTATUS" label="JSTATUS"
description="JFIELD_PUBLISHED_DESC"
default="1"
size="1" size="1"
> >
<option value="1">JPUBLISHED</option> <option value="1">JPUBLISHED</option>
@ -63,18 +63,18 @@
<field <field
name="catid" name="catid"
type="categoryedit" type="categoryedit"
label="JCATEGORY"
description="COM_WEBLINKS_FIELD_CATEGORY_DESC" description="COM_WEBLINKS_FIELD_CATEGORY_DESC"
extension="com_weblinks" extension="com_weblinks"
label="JCATEGORY"
required="true" required="true"
/> />
<field <field
name="url" name="url"
type="url" type="url"
filter="url"
description="COM_WEBLINKS_FIELD_URL_DESC"
label="COM_WEBLINKS_FIELD_URL_LABEL" label="COM_WEBLINKS_FIELD_URL_LABEL"
description="COM_WEBLINKS_FIELD_URL_DESC"
filter="url"
required="true" required="true"
size="45" size="45"
/> />
@ -126,9 +126,9 @@
<field <field
name="robots" name="robots"
type="hidden" type="hidden"
filter="unset"
label="JFIELD_METADATA_ROBOTS_LABEL" label="JFIELD_METADATA_ROBOTS_LABEL"
description="JFIELD_METADATA_ROBOTS_DESC" description="JFIELD_METADATA_ROBOTS_DESC"
filter="unset"
labelclass="control-label" labelclass="control-label"
> >
<option value="">JGLOBAL_USE_GLOBAL</option> <option value="">JGLOBAL_USE_GLOBAL</option>
@ -141,9 +141,9 @@
<field <field
name="author" name="author"
type="hidden" type="hidden"
filter="unset"
label="JAUTHOR" label="JAUTHOR"
description="JFIELD_METADATA_AUTHOR_DESC" description="JFIELD_METADATA_AUTHOR_DESC"
filter="unset"
size="20" size="20"
labelclass="control-label" labelclass="control-label"
/> />
@ -152,8 +152,8 @@
name="rights" name="rights"
type="hidden" type="hidden"
label="JFIELD_META_RIGHTS_LABEL" label="JFIELD_META_RIGHTS_LABEL"
filter="unset"
description="JFIELD_META_RIGHTS_DESC" description="JFIELD_META_RIGHTS_DESC"
filter="unset"
required="false" required="false"
labelclass="control-label" labelclass="control-label"
/> />
@ -161,9 +161,9 @@
<field <field
name="xreference" name="xreference"
type="hidden" type="hidden"
filter="unset"
label="COM_CONTENT_FIELD_XREFERENCE_LABEL" label="COM_CONTENT_FIELD_XREFERENCE_LABEL"
description="COM_CONTENT_FIELD_XREFERENCE_DESC" description="COM_CONTENT_FIELD_XREFERENCE_DESC"
filter="unset"
class="inputbox" class="inputbox"
size="20" size="20"
labelclass="control-label" labelclass="control-label"

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt
@ -10,6 +10,7 @@
defined('_JEXEC') or die; defined('_JEXEC') or die;
use Joomla\Utilities\ArrayHelper; use Joomla\Utilities\ArrayHelper;
use Joomla\Registry\Registry;
JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/tables'); JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . '/tables');
@ -38,61 +39,137 @@ class WeblinksModelWeblink extends JModelItem
*/ */
protected function populateState() protected function populateState()
{ {
$app = JFactory::getApplication(); $app = JFactory::getApplication('site');
$params = $app->getParams();
// Load the object state. // Load the object state.
$id = $app->input->getInt('id'); $pk = $app->input->getInt('id');
$this->setState('weblink.id', $id); $this->setState('weblink.id', $pk);
// Load the parameters. // Load the parameters.
$params = $app->getParams();
$this->setState('params', $params); $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. * Method to get an object.
* *
* @param integer $id The id of the object to get. * @param integer $pk The id of the object to get.
* *
* @return mixed Object on success, false on failure. * @return mixed Object on success, false on failure.
*/ */
public function getItem($id = null) public function getItem($pk = null)
{ {
$user = JFactory::getUser();
$pk = (!empty($pk)) ? $pk : (int) $this->getState('weblink.id');
if ($this->_item === null) if ($this->_item === null)
{ {
$this->_item = false; $this->_item = array();
}
if (empty($id)) if (!isset($this->_item[$pk]))
{
try
{ {
$id = $this->getState('weblink.id'); $db = $this->getDbo();
} $query = $db->getQuery(true)
->select($this->getState('item.select', 'a.*'))
->from('#__weblinks AS a')
->where('a.id = ' . (int) $pk);
// Get a level row instance. // Join on category table.
$table = JTable::getInstance('Weblink', 'WeblinksTable'); $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');
// Attempt to load the row. // Join on user table.
if ($table->load($id)) $query->select('u.name AS author')
{ ->join('LEFT', '#__users AS u on u.id = a.created_by');
// Check published state.
if ($published = $this->getState('filter.published')) // Filter by language
if ($this->getState('filter.language'))
{ {
if ($table->state != $published) $query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
{
return $this->_item;
}
} }
// Convert the JTable to a clean JObject. // Join over the categories to get parent category titles
$properties = $table->getProperties(1); $query->select('parent.title as parent_title, parent.id as parent_id, parent.path as parent_route, parent.alias as parent_alias')
$this->_item = ArrayHelper::toObject($properties, 'JObject'); ->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;
} }
elseif ($error = $table->getError()) catch (Exception $e)
{ {
$this->setError($error); $this->setError($e);
$this->_item[$pk] = false;
} }
} }
return $this->_item; return $this->_item[$pk];
} }
/** /**
@ -114,17 +191,17 @@ class WeblinksModelWeblink extends JModelItem
/** /**
* Method to increment the hit counter for the weblink * Method to increment the hit counter for the weblink
* *
* @param integer $id Optional ID of the weblink. * @param integer $pk Optional ID of the weblink.
* *
* @return boolean True on success * @return boolean True on success
*/ */
public function hit($id = null) public function hit($pk = null)
{ {
if (empty($id)) if (empty($pk))
{ {
$id = $this->getState('weblink.id'); $pk = $this->getState('weblink.id');
} }
return $this->getTable('Weblink', 'WeblinksTable')->hit($id); return $this->getTable('Weblink', 'WeblinksTable')->hit($pk);
} }
} }

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @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? // 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['view']);
unset($query['catid']); unset($query['catid']);
@ -74,7 +74,7 @@ class WeblinksRouter extends JComponentRouterBase
return $segments; 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) if ($mId != (int) $query['id'] || $mView != $view)
{ {

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -13,10 +13,12 @@
<fields name="request"> <fields name="request">
<fieldset name="request" <fieldset name="request"
> >
<field name="id" type="category" <field
name="id"
type="category"
label="JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_LABEL"
description="JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_DESC" description="JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_DESC"
extension="com_weblinks" extension="com_weblinks"
label="JGLOBAL_FIELD_CATEGORIES_CHOOSE_CATEGORY_LABEL"
show_root="true" show_root="true"
required="true" required="true"
/> />
@ -25,136 +27,162 @@
<!-- Add fields to the parameters object for the layout. --> <!-- Add fields to the parameters object for the layout. -->
<fields name="params"> <fields name="params">
<fieldset name="basic" label="JGLOBAL_CATEGORIES_OPTIONS"> <fieldset name="basic" label="JGLOBAL_CATEGORIES_OPTIONS">
<field
<field name="show_base_description" type="list" name="show_base_description"
label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL" type="list"
description="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_DESC" label="JGLOBAL_FIELD_SHOW_BASE_DESCRIPTION_LABEL"
useglobal="true" 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"
description="JGLOBAL_FIELD_CATEGORIES_DESC_DESC"
label="JGLOBAL_FIELD_CATEGORIES_DESC_LABEL"
cols="25"
rows="5"
/>
<field name="maxLevelcat" type="list"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
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"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
useglobal="true"
>
<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"
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" 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"
useglobal="true"
>
<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"
useglobal="true"
>
<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"
useglobal="true"
>
<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"
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"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_cat_num_links" type="list" <field
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC" 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" label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
useglobal="true" 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="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
@ -163,77 +191,90 @@
</fieldset> </fieldset>
<fieldset name="advanced" label="JGLOBAL_LIST_LAYOUT_OPTIONS"> <fieldset name="advanced" label="JGLOBAL_LIST_LAYOUT_OPTIONS">
<field name="spacer2" type="spacer" class="text" <field
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL" name="spacer2"
/> type="spacer"
<field label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
name="filter_field" class="text"
type="list" />
default=""
description="JGLOBAL_FILTER_FIELD_DESC"
label="JGLOBAL_FILTER_FIELD_LABEL"
useglobal="true"
>
<option value="hide">JHIDE</option>
<option value="1">JSHOW</option>
</field>
<field name="show_pagination_limit" type="list" <field
label="JGLOBAL_DISPLAY_SELECT_LABEL" name="filter_field"
description="JGLOBAL_DISPLAY_SELECT_DESC" type="list"
useglobal="true" label="JGLOBAL_FILTER_FIELD_LABEL"
> description="JGLOBAL_FILTER_FIELD_DESC"
<option value="0">JHIDE</option> default=""
<option value="1">JSHOW</option>
</field>
<field name="show_headings" type="list"
description="JGLOBAL_SHOW_HEADINGS_DESC"
label="JGLOBAL_SHOW_HEADINGS_LABEL"
useglobal="true"
>
<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"
useglobal="true"
>
<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"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="hide">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_pagination" type="list" <field
description="JGLOBAL_PAGINATION_DESC" name="show_pagination_limit"
label="JGLOBAL_PAGINATION_LABEL" type="list"
useglobal="true" label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC"
useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
<option value="2">JGLOBAL_AUTO</option> </field>
</field>
<field name="show_pagination_results" type="list" <field
label="JGLOBAL_PAGINATION_RESULTS_LABEL" name="show_headings"
description="JGLOBAL_PAGINATION_RESULTS_DESC" type="list"
useglobal="true" label="JGLOBAL_SHOW_HEADINGS_LABEL"
description="JGLOBAL_SHOW_HEADINGS_DESC"
useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</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> </field>
</fieldset> </fieldset>

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @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'))) if (count($errors = $this->get('Errors')))
{ {
JError::raiseWarning(500, implode("\n", $errors)); JError::raiseWarning(500, implode("\n", $errors));
return false; return false;
} }

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -12,56 +12,68 @@
<!-- Add fields to the request variables for the layout. --> <!-- Add fields to the request variables for the layout. -->
<fields name="request"> <fields name="request">
<fieldset name="request"> <fieldset name="request">
<field
<field name="id" type="category" name="id"
default="0" type="category"
description="COM_WEBLINKS_FIELD_SELECT_CATEGORY_DESC"
extension="com_weblinks"
label="COM_WEBLINKS_FIELD_SELECT_CATEGORY_LABEL" label="COM_WEBLINKS_FIELD_SELECT_CATEGORY_LABEL"
description="COM_WEBLINKS_FIELD_SELECT_CATEGORY_DESC"
default="0"
extension="com_weblinks"
required="true" required="true"
/> />
</fieldset> </fieldset>
</fields> </fields>
<!-- Add fields to the parameters object for the layout. --> <!-- Add fields to the parameters object for the layout. -->
<fields name="params"> <fields name="params">
<fieldset name="basic" label="JGLOBAL_CATEGORY_OPTIONS"> <fieldset name="basic" label="JGLOBAL_CATEGORY_OPTIONS">
<field name="spacer1" type="spacer" class="text" <field
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL" name="spacer1"
type="spacer"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
class="text"
/> />
<field name="show_category_title" type="list" <field
name="show_category_title"
type="list"
label="JGLOBAL_SHOW_CATEGORY_TITLE" label="JGLOBAL_SHOW_CATEGORY_TITLE"
description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC" description="JGLOBAL_SHOW_CATEGORY_TITLE_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_description" type="list" <field
description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC" name="show_description"
type="list"
label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL" label="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_CATEGORY_DESCRIPTION_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_description_image" type="list" <field
description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC" name="show_description_image"
type="list"
label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL" label="JGLOBAL_SHOW_CATEGORY_IMAGE_LABEL"
description="JGLOBAL_SHOW_CATEGORY_IMAGE_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="maxLevel" type="list" <field
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC" name="maxLevel"
type="list"
label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL" label="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_LABEL"
description="JGLOBAL_MAXIMUM_CATEGORY_LEVELS_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JNONE</option> <option value="0">JNONE</option>
<option value="-1">JALL</option> <option value="-1">JALL</option>
<option value="1">J1</option> <option value="1">J1</option>
@ -72,124 +84,140 @@
</field> </field>
<field name="show_empty_categories" type="list" <field
name="show_empty_categories"
type="list"
label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL" label="JGLOBAL_SHOW_EMPTY_CATEGORIES_LABEL"
description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC" description="COM_WEBLINKS_SHOW_EMPTY_CATEGORIES_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_subcat_desc" type="list" <field
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC" name="show_subcat_desc"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL" type="list"
label="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_LABEL"
description="JGLOBAL_SHOW_SUBCATEGORIES_DESCRIPTION_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_cat_num_links" type="list" <field
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC" name="show_cat_num_links"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL" type="list"
label="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_LABEL"
description="COM_WEBLINKS_FIELD_CONFIG_CAT_SHOWNUMBERS_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
</fieldset> </fieldset>
<fieldset name="advanced" label="JGLOBAL_LIST_LAYOUT_OPTIONS"> <fieldset name="advanced" label="JGLOBAL_LIST_LAYOUT_OPTIONS">
<field name="spacer2" type="spacer" class="text" <field
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL" name="spacer2"
type="spacer"
label="JGLOBAL_SUBSLIDER_DRILL_CATEGORIES_LABEL"
class="text"
/> />
<field <field
name="filter_field" name="filter_field"
type="list" type="list"
default=""
description="JGLOBAL_FILTER_FIELD_DESC"
label="JGLOBAL_FILTER_FIELD_LABEL" label="JGLOBAL_FILTER_FIELD_LABEL"
description="JGLOBAL_FILTER_FIELD_DESC"
default=""
useglobal="true" useglobal="true"
> >
<option value="hide">JHIDE</option> <option value="hide">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_pagination_limit" type="list" <field
name="show_pagination_limit"
type="list"
label="JGLOBAL_DISPLAY_SELECT_LABEL" label="JGLOBAL_DISPLAY_SELECT_LABEL"
description="JGLOBAL_DISPLAY_SELECT_DESC" description="JGLOBAL_DISPLAY_SELECT_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_headings" type="list" <field
description="JGLOBAL_SHOW_HEADINGS_DESC" name="show_headings"
type="list"
label="JGLOBAL_SHOW_HEADINGS_LABEL" label="JGLOBAL_SHOW_HEADINGS_LABEL"
description="JGLOBAL_SHOW_HEADINGS_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_link_description" type="list" <field
name="show_link_description"
description="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC" type="list"
label="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL" label="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_LABEL"
description="COM_WEBLINKS_FIELD_CONFIG_LINKDESCRIPTION_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
<field name="show_link_hits" type="list" <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>
description="COM_WEBLINKS_FIELD_CONFIG_HITS_DESC" <field
label="JGLOBAL_HITS" name="show_pagination"
useglobal="true" type="list"
>
<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" label="JGLOBAL_PAGINATION_LABEL"
description="JGLOBAL_PAGINATION_DESC"
useglobal="true" useglobal="true"
> >
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
<option value="2">JGLOBAL_AUTO</option> <option value="2">JGLOBAL_AUTO</option>
</field> </field>
<field name="show_pagination_results" type="list" <field
name="show_pagination_results"
label="JGLOBAL_PAGINATION_RESULTS_LABEL" type="list"
description="JGLOBAL_PAGINATION_RESULTS_DESC" label="JGLOBAL_PAGINATION_RESULTS_LABEL"
description="JGLOBAL_PAGINATION_RESULTS_DESC"
useglobal="true" useglobal="true"
> >
<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"
useglobal="true"
>
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
</field> </field>
</fieldset> </fieldset>
</fields>
<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> </metadata>

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @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'); ?> <?php echo JHtml::_('content.prepare', $child->description, '', 'com_weblinks.category'); ?>
</div> </div>
<?php endif; ?> <?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> <dl class="weblink-count"><dt>
<?php echo JText::_('COM_WEBLINKS_NUM'); ?></dt> <?php echo JText::_('COM_WEBLINKS_NUM'); ?></dt>
<dd><?php echo $child->numitems; ?></dd> <dd><?php echo $child->numitems; ?></dd>

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt
@ -13,9 +13,6 @@ JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('behavior.framework'); JHtml::_('behavior.framework');
// Create a shortcut for params.
$params = &$this->item->params;
// Get the user object. // Get the user object.
$user = JFactory::getUser(); $user = JFactory::getUser();
@ -29,143 +26,144 @@ $listOrder = $this->escape($this->state->get('list.ordering'));
$listDirn = $this->escape($this->state->get('list.direction')); $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"> <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')) : ?> <?php if ($this->params->get('filter_field') != 'hide' || $this->params->get('show_pagination_limit')) : ?>
<fieldset class="filters btn-toolbar"> <fieldset class="filters btn-toolbar">
<?php if ($this->params->get('filter_field') != 'hide') : ?> <?php if ($this->params->get('filter_field') != 'hide') : ?>
<div class="btn-group"> <div class="btn-group">
<label class="filter-search-lbl element-invisible" for="filter-search"><?php echo JText::_('COM_WEBLINKS_FILTER_LABEL') . '&#160;'; ?></label> <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'); ?>" /> <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> </div>
<?php endif; ?> <?php endif; ?>
<?php if ($this->params->get('show_pagination_limit')) : ?> <?php if ($this->params->get('show_pagination_limit')) : ?>
<div class="btn-group pull-right"> <div class="btn-group pull-right">
<label for="limit" class="element-invisible"> <label for="limit" class="element-invisible">
<?php echo JText::_('JGLOBAL_DISPLAY_NUM'); ?> <?php echo JText::_('JGLOBAL_DISPLAY_NUM'); ?>
</label> </label>
<?php echo $this->pagination->getLimitBox(); ?> <?php echo $this->pagination->getLimitBox(); ?>
</div> </div>
<?php endif; ?> <?php endif; ?>
</fieldset> </fieldset>
<?php endif; ?> <?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"> <ul class="category list-striped list-condensed">
<?php foreach ($this->items as $i => $item) : ?> <?php foreach ($this->items as $i => $item) : ?>
<?php if (in_array($item->access, $this->user->getAuthorisedViewLevels())) : ?> <?php if (in_array($item->access, $this->user->getAuthorisedViewLevels())) : ?>
<?php if ($this->items[$i]->state == 0) : ?> <?php if ($this->items[$i]->state == 0) : ?>
<li class="system-unpublished cat-list-row<?php echo $i % 2; ?>"> <li class="system-unpublished cat-list-row<?php echo $i % 2; ?>">
<?php else : ?> <?php else : ?>
<li class="cat-list-row<?php echo $i % 2; ?>" > <li class="cat-list-row<?php echo $i % 2; ?>">
<?php endif; ?> <?php endif; ?>
<?php if ($this->params->get('show_link_hits', 1)) : ?> <?php if ($this->params->get('show_link_hits', 1)) : ?>
<span class="list-hits badge badge-info pull-right"> <span class="list-hits badge badge-info pull-right">
<?php echo JText::sprintf('JGLOBAL_HITS_COUNT', $item->hits); ?> <?php echo JText::sprintf('JGLOBAL_HITS_COUNT', $item->hits); ?>
</span> </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 endif; ?>
<?php // Compute the correct link ?>
<?php $menuclass = 'category' . $this->pageclass_sfx; ?>
<?php $link = $item->link; ?>
<?php $width = $item->params->get('width'); ?>
<?php $height = $item->params->get('height'); ?>
<?php if ($width == null || $height == null) : ?>
<?php $width = 600; ?>
<?php $height = 500; ?>
<?php endif; ?>
<?php if ($this->items[$i]->state == 0) : ?>
<span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span>
<?php endif; ?>
<?php <?php if ($canEdit) : ?>
switch ($item->params->get('target', $this->params->get('target'))) <span class="list-edit pull-left width-50">
{ <?php echo JHtml::_('icon.edit', $item, $item->params); ?>
case 1: </span>
// Open in a new window <?php endif; ?>
echo '<a href="' . $link . '" target="_blank" class="' . $menuclass . '" rel="nofollow">' .
$this->escape($item->title) . '</a>'; <div class="list-title">
break; <?php if ($this->params->get('icons', 1) == 0) : ?>
<?php echo JText::_('COM_WEBLINKS_LINK'); ?>
case 2: <?php elseif ($this->params->get('icons', 1) == 1) : ?>
// Open in a popup window <?php if (!$this->params->get('link_icons')) : ?>
$attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' . $this->escape($width) . ',height=' . $this->escape($height) . ''; <?php echo JHtml::_('image', 'system/weblink.png', JText::_('COM_WEBLINKS_LINK'), null, true); ?>
echo "<a href=\"$link\" onclick=\"window.open(this.href, 'targetWindow', '" . $attribs . "'); return false;\">" . <?php else: ?>
$this->escape($item->title) . '</a>'; <?php echo '<img src="' . $this->params->get('link_icons') . '" alt="' . JText::_('COM_WEBLINKS_LINK') . '" />'; ?>
break; <?php endif; ?>
case 3: <?php endif; ?>
// Open in a modal window <?php // Compute the correct link ?>
JHtml::_('behavior.modal', 'a.modal'); <?php $menuclass = 'category' . $this->pageclass_sfx; ?>
echo '<a class="modal" href="' . $link . '" rel="{handler: \'iframe\', size: {x:' . $this->escape($width) . ', y:' . $this->escape($height) . '}}">' . <?php $link = $item->link; ?>
$this->escape($item->title) . ' </a>'; <?php $width = $item->params->get('width', 600); ?>
break; <?php $height = $item->params->get('height', 500); ?>
<?php if ($this->items[$i]->state == 0) : ?>
default: <span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span>
// Open in parent window <?php endif; ?>
echo '<a href="' . $link . '" class="' . $menuclass . '" rel="nofollow">' .
$this->escape($item->title) . ' </a>'; <?php
break; switch ($item->params->get('target', $this->params->get('target')))
} {
?> case 1:
</div> // Open in a new window
<?php $tagsData = $item->tags->getItemTags('com_weblinks.weblink', $item->id); ?> echo '<a href="' . $link . '" target="_blank" class="' . $menuclass . '" rel="nofollow">' .
<?php if ($this->params->get('show_tags', 1)) : ?> $this->escape($item->title) . '</a>';
<?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?> break;
<?php echo $this->item->tagLayout->render($tagsData); ?>
<?php endif; ?> case 2:
<?php if (($this->params->get('show_link_description')) and ($item->description != '')) : ?> // Open in a popup window
<?php $images = json_decode($item->images); ?> $attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=' . $this->escape($width) . ',height=' . $this->escape($height) . '';
<?php if (isset($images->image_first) and !empty($images->image_first)) : ?> echo '<a href="'. $link .'" onclick="window.open(this.href, \'targetWindow\', \'' . $attribs . '\'); return false;">' .
<?php $imgfloat = (empty($images->float_first)) ? $this->params->get('float_first') : $images->float_first; ?> $this->escape($item->title) . '</a>';
<div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>"> <img break;
<?php if ($images->image_first_caption) : ?> case 3:
<?php echo 'class="caption" title="' . htmlspecialchars($images->image_first_caption) . '"'; ?> // 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; ?> <?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) 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) : ?>
<?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> </li>
<?php endif;?> <?php endif;?>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?>
<?php // Code to add a link to submit a weblink. ?> <?php if ($this->params->get('show_pagination')) : ?>
<?php if ($this->params->get('show_pagination')) : ?>
<div class="pagination"> <div class="pagination">
<?php if ($this->params->def('show_pagination_results', 1)) : ?> <?php if ($this->params->def('show_pagination_results', 1)) : ?>
<p class="counter"> <p class="counter">
<?php echo $this->pagination->getPagesCounter(); ?> <?php echo $this->pagination->getPagesCounter(); ?>
</p> </p>
<?php endif; ?> <?php endif; ?>
<?php echo $this->pagination->getPagesLinks(); ?> <?php echo $this->pagination->getPagesLinks(); ?>
</div> </div>
<?php endif; ?> <?php endif; ?>
</form> </form>
<?php endif; ?>

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt
@ -44,7 +44,7 @@ class WeblinksViewCategory extends JViewCategory
$temp = new JRegistry; $temp = new JRegistry;
$temp->loadString($item->params); $temp->loadString($item->params);
$item->params = clone($this->params); $item->params = clone $this->params;
$item->params->merge($temp); $item->params->merge($temp);
} }
@ -86,7 +86,7 @@ class WeblinksViewCategory extends JViewCategory
$path = array(array('title' => $this->category->title, 'link' => '')); $path = array(array('title' => $this->category->title, 'link' => ''));
$category = $this->category->getParent(); $category = $this->category->getParent();
while (($menu->query['option'] != 'com_weblinks' || $id != $category->id) && $category->id > 1) while ($category !== null && $category->id !== 'root' && ($menu->query['option'] != 'com_weblinks' || $id != $category->id))
{ {
$path[] = array('title' => $category->title, 'link' => WeblinksHelperRoute::getCategoryRoute($category->id)); $path[] = array('title' => $category->title, 'link' => WeblinksHelperRoute::getCategoryRoute($category->id));
$category = $category->getParent(); $category = $category->getParent();

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -0,0 +1,34 @@
<?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;
$weblinkUrl = JStringPunycode::urlToUTF8($this->item->url);
?>
<div class="item-page">
<meta itemprop="inLanguage" content="<?php echo ($this->item->language === '*') ? JFactory::getConfig()->get('language') : $this->item->language; ?>" />
<div class="page-header">
<h2 itemprop="headline">
<?php echo $this->escape($this->item->title); ?>
</h2>
</div>
<?php // Content is generated by content plugin event "onContentAfterTitle" ?>
<?php echo $this->item->event->afterDisplayTitle; ?>
<?php // Content is generated by content plugin event "onContentBeforeDisplay" ?>
<?php echo $this->item->event->beforeDisplayContent; ?>
<div itemprop="articleBody">
<a href="<?php echo $weblinkUrl; ?>" target="_blank" itemprop="url">
<?php echo $weblinkUrl; ?>
</a>
<?php echo $this->item->description; ?>
</div>
<?php // Content is generated by content plugin event "onContentAfterDisplay" ?>
<?php echo $this->item->event->afterDisplayContent; ?>
</div>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="COM_WEBLINKS_WEBLINK_VIEW_DEFAULT_TITLE" option="COM_WEBLINKS_WEBLINK_VIEW_DEFAULT_OPTION">
<help
key = "JHELP_MENUS_MENU_ITEM_WEBLINK_SINGLE_WEBLINK"
/>
<message>
<![CDATA[COM_WEBLINKS_WEBLINK_VIEW_DEFAULT_DESC]]>
</message>
</layout>
<fields name="request">
<fieldset
name="request"
addfieldpath="/administrator/components/com_weblinks/models/fields"
>
<field name="id"
type="modal_weblink"
label="COM_WEBLINKS_FIELD_SELECT_WEBLINK_LABEL"
required="true"
select="true"
new="true"
edit="true"
clear="true"
description="COM_WEBLINKS_FIELD_SELECT_WEBLINK_DESC"
/>
</fieldset>
</fields>
</metadata>

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt
@ -10,44 +10,53 @@
defined('_JEXEC') or die; defined('_JEXEC') or die;
/** /**
* HTML View class for the WebLinks component * HTML Weblink View class for the Weblinks component
* *
* @since 1.5 * @since __DEPLOY_VERSION__
*/ */
class WeblinksViewWeblink extends JViewLegacy class WeblinksViewWeblink extends JViewLegacy
{ {
protected $state;
protected $item; protected $item;
protected $params;
protected $state;
/** /**
* Display the view. * Execute and display a template script.
* *
* @param string $tpl The name of the template file to parse; automatically searches through the template paths. * @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. * @return mixed A string if successful, otherwise an Error object.
*
* @since __DEPLOY_VERSION__
*/ */
public function display($tpl = null) public function display($tpl = null)
{ {
// Get some data from the models $dispatcher = JEventDispatcher::getInstance();
$item = $this->get('Item');
if ($this->getLayout() == 'edit') $this->item = $this->get('Item');
{ $this->state = $this->get('State');
$this->_displayEdit($tpl); $this->params = $this->state->get('params');
return; // Create a shortcut for $item.
} $item = $this->item;
if ($item->url) $offset = $this->state->get('list.offset');
{
// Redirects to url if matching id found $dispatcher->trigger('onContentPrepare', array ('com_weblinks.weblink', &$item, &$item->params, $offset));
JFactory::getApplication()->redirect($item->url);
} $item->event = new stdClass;
else
{ $results = $dispatcher->trigger('onContentAfterTitle', array('com_weblinks.weblink', &$item, &$item->params, $offset));
// @TODO create proper error handling $item->event->afterDisplayTitle = trim(implode("\n", $results));
JFactory::getApplication()->redirect(JRoute::_('index.php'), JText::_('COM_WEBLINKS_ERROR_WEBLINK_NOT_FOUND'), 'notice');
} $results = $dispatcher->trigger('onContentBeforeDisplay', array('com_weblinks.weblink', &$item, &$item->params, $offset));
$item->event->beforeDisplayContent = trim(implode("\n", $results));
$results = $dispatcher->trigger('onContentAfterDisplay', array('com_weblinks.weblink', &$item, &$item->params, $offset));
$item->event->afterDisplayContent = trim(implode("\n", $results));
parent::display($tpl);
} }
} }

View File

@ -1,7 +1,7 @@
<?php <?php
/** /**
* @package Joomla.Administrator * @package Joomla.Site
* @subpackage Weblinks * @subpackage com_weblinks
* *
* @copyright Copyright (C) 2005 - 2017 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 * @license GNU General Public License version 2 or later; see LICENSE.txt

View File

@ -0,0 +1,61 @@
/**
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
(function() {
"use strict";
/**
* Javascript to insert the link
* View element calls jSelectWeblink when an weblink is clicked
* jSelectWeblink creates the link tag, sends it to the editor,
* and closes the select frame.
**/
window.jSelectWeblink = function (id, title, catid, object, link, lang) {
var hreflang = '', editor, tag;
if (!Joomla.getOptions('xtd-weblinks')) {
// Something went wrong!
window.parent.jModalClose();
return false;
}
editor = Joomla.getOptions('xtd-weblinks').editor;
if (lang !== '')
{
hreflang = ' hreflang="' + lang + '"';
}
tag = '<a' + hreflang + ' href="' + link + '">' + title + '</a>';
/** Use the API, if editor supports it **/
if (window.Joomla && window.Joomla.editors && Joomla.editors.instances && Joomla.editors.instances.hasOwnProperty(editor)) {
Joomla.editors.instances[editor].replaceSelection(tag)
} else {
window.parent.jInsertEditorText(tag, editor);
}
window.parent.jModalClose();
};
document.addEventListener('DOMContentLoaded', function(){
// Get the elements
var elements = document.querySelectorAll('.select-link');
for(var i = 0, l = elements.length; l>i; i++) {
// Listen for click event
elements[i].addEventListener('click', function (event) {
event.preventDefault();
var functionName = event.target.getAttribute('data-function');
if (functionName === 'jSelectWeblink') {
// Used in xtd_weblinks
window[functionName](event.target.getAttribute('data-id'), event.target.getAttribute('data-title'), event.target.getAttribute('data-cat-id'), null, event.target.getAttribute('data-uri'), event.target.getAttribute('data-language', null));
} else {
// Used in com_menus
window.parent[functionName](event.target.getAttribute('data-id'), event.target.getAttribute('data-title'), event.target.getAttribute('data-cat-id'), null, event.target.getAttribute('data-uri'), event.target.getAttribute('data-language', null));
}
})
}
});
})();

View File

@ -0,0 +1 @@
!function(){"use strict";window.jSelectWeblink=function(a,b,c,d,e,f){var h,i,g="";if(!Joomla.getOptions("xtd-weblinks"))return window.parent.jModalClose(),!1;h=Joomla.getOptions("xtd-weblinks").editor,""!==f&&(g=' hreflang="'+f+'"'),i="<a"+g+' href="'+e+'">'+b+"</a>",window.Joomla&&window.Joomla.editors&&Joomla.editors.instances&&Joomla.editors.instances.hasOwnProperty(h)?Joomla.editors.instances[h].replaceSelection(i):window.parent.jInsertEditorText(i,h),window.parent.jModalClose()},document.addEventListener("DOMContentLoaded",function(){for(var a=document.querySelectorAll(".select-link"),b=0,c=a.length;c>b;b++)a[b].addEventListener("click",function(a){a.preventDefault();var b=a.target.getAttribute("data-function");"jSelectWeblink"===b?window[b](a.target.getAttribute("data-id"),a.target.getAttribute("data-title"),a.target.getAttribute("data-cat-id"),null,a.target.getAttribute("data-uri"),a.target.getAttribute("data-language",null)):window.parent[b](a.target.getAttribute("data-id"),a.target.getAttribute("data-title"),a.target.getAttribute("data-cat-id"),null,a.target.getAttribute("data-uri"),a.target.getAttribute("data-language",null))})})}();

View File

@ -83,7 +83,7 @@ class ModWeblinksHelper
$model->setState( $model->setState(
'list.select', 'list.select',
'a.*, c.published AS c_published,' . $case_when1 . ',' . $case_when2 . ',' . 'DATE_FORMAT(a.created, "%Y-%m-%d") AS created' 'a.*, c.description AS c_description, c.published AS c_published,' . $case_when1 . ',' . $case_when2
); );
$model->setState('filter.c.published', 1); $model->setState('filter.c.published', 1);
@ -110,6 +110,6 @@ class ModWeblinksHelper
return $items; return $items;
} }
return; return array();
} }
} }

View File

@ -11,6 +11,7 @@
<description>MOD_WEBLINKS_XML_DESCRIPTION</description> <description>MOD_WEBLINKS_XML_DESCRIPTION</description>
<files> <files>
##MODULE_FILES## ##MODULE_FILES##
<file module="mod_weblinks">mod_weblinks.php</file>
</files> </files>
<languages folder="language"> <languages folder="language">
##LANGUAGE_FILES## ##LANGUAGE_FILES##
@ -22,20 +23,20 @@
<field <field
name="catid" name="catid"
type="category" type="category"
extension="com_weblinks"
required="true"
label="JCATEGORY" label="JCATEGORY"
description="MOD_WEBLINKS_FIELD_CATEGORY_DESC" description="MOD_WEBLINKS_FIELD_CATEGORY_DESC"
extension="com_weblinks"
required="true"
/> />
<field <field
name="groupby" name="groupby"
type="radio" type="radio"
class="btn-group btn-group-yesno"
default="0"
label="MOD_WEBLINKS_FIELD_GROUPBY_LABEL" label="MOD_WEBLINKS_FIELD_GROUPBY_LABEL"
description="MOD_WEBLINKS_FIELD_GROUPBY_DESC" description="MOD_WEBLINKS_FIELD_GROUPBY_DESC"
> class="btn-group btn-group-yesno"
default="0"
>
<option value="1">JYES</option> <option value="1">JYES</option>
<option value="0">JNO</option> <option value="0">JNO</option>
</field> </field>
@ -43,12 +44,12 @@
<field <field
name="groupby_showtitle" name="groupby_showtitle"
type="radio" type="radio"
class="btn-group btn-group-yesno"
default="1"
label="MOD_WEBLINKS_FIELD_GROUPBYSHOWTITLE_LABEL" label="MOD_WEBLINKS_FIELD_GROUPBYSHOWTITLE_LABEL"
description="MOD_WEBLINKS_FIELD_GROUPBYSHOWTITLE_DESC" description="MOD_WEBLINKS_FIELD_GROUPBYSHOWTITLE_DESC"
class="btn-group btn-group-yesno"
default="1"
showon="groupby:1" showon="groupby:1"
> >
<option value="1">JYES</option> <option value="1">JYES</option>
<option value="0">JNO</option> <option value="0">JNO</option>
</field> </field>
@ -56,11 +57,11 @@
<field <field
name="groupby_ordering" name="groupby_ordering"
type="list" type="list"
default="c.lft"
label="MOD_WEBLINKS_FIELD_GROUPBYORDERING_LABEL" label="MOD_WEBLINKS_FIELD_GROUPBYORDERING_LABEL"
description="MOD_WEBLINKS_FIELD_GROUPBYORDERING_DESC" description="MOD_WEBLINKS_FIELD_GROUPBYORDERING_DESC"
default="c.lft"
showon="groupby:1" showon="groupby:1"
> >
<option value="c.title">JGLOBAL_TITLE</option> <option value="c.title">JGLOBAL_TITLE</option>
<option value="c.lft">MOD_WEBLINKS_FIELD_VALUE_ORDER</option> <option value="c.lft">MOD_WEBLINKS_FIELD_VALUE_ORDER</option>
</field> </field>
@ -68,11 +69,11 @@
<field <field
name="groupby_direction" name="groupby_direction"
type="list" type="list"
default="asc"
label="MOD_WEBLINKS_FIELD_GROUPBYDIRECTION_LABEL" label="MOD_WEBLINKS_FIELD_GROUPBYDIRECTION_LABEL"
description="MOD_WEBLINKS_FIELD_GROUPBYDIRECTION_DESC" description="MOD_WEBLINKS_FIELD_GROUPBYDIRECTION_DESC"
default="asc"
showon="groupby:1" showon="groupby:1"
> >
<option value="asc">MOD_WEBLINKS_FIELD_VALUE_ASCENDING</option> <option value="asc">MOD_WEBLINKS_FIELD_VALUE_ASCENDING</option>
<option value="desc">MOD_WEBLINKS_FIELD_VALUE_DESCENDING</option> <option value="desc">MOD_WEBLINKS_FIELD_VALUE_DESCENDING</option>
</field> </field>
@ -80,12 +81,12 @@
<field <field
name="groupby_columns" name="groupby_columns"
type="list" type="list"
default="3"
label="MOD_WEBLINKS_FIELD_COLUMNS_LABEL" label="MOD_WEBLINKS_FIELD_COLUMNS_LABEL"
description="MOD_WEBLINKS_FIELD_COLUMNS_DESC" description="MOD_WEBLINKS_FIELD_COLUMNS_DESC"
> default="3"
>
<option value="1">J1</option> <option value="1">J1</option>
<option value="2">J2</option> <option value="2">J2</option>
<option value="3">J3</option> <option value="3">J3</option>
<option value="4">J4</option> <option value="4">J4</option>
<option value="6">J6</option> <option value="6">J6</option>
@ -94,18 +95,18 @@
<field <field
name="count" name="count"
type="text" type="text"
default="5"
label="MOD_WEBLINKS_FIELD_COUNT_LABEL" label="MOD_WEBLINKS_FIELD_COUNT_LABEL"
description="MOD_WEBLINKS_FIELD_COUNT_DESC" description="MOD_WEBLINKS_FIELD_COUNT_DESC"
default="5"
/> />
<field <field
name="ordering" name="ordering"
type="list" type="list"
default="title"
label="MOD_WEBLINKS_FIELD_ORDERING_LABEL" label="MOD_WEBLINKS_FIELD_ORDERING_LABEL"
description="MOD_WEBLINKS_FIELD_ORDERING_DESC" description="MOD_WEBLINKS_FIELD_ORDERING_DESC"
> default="title"
>
<option value="title">JGLOBAL_TITLE</option> <option value="title">JGLOBAL_TITLE</option>
<option value="order">MOD_WEBLINKS_FIELD_VALUE_ORDER</option> <option value="order">MOD_WEBLINKS_FIELD_VALUE_ORDER</option>
<option value="hits">MOD_WEBLINKS_FIELD_VALUE_HITS</option> <option value="hits">MOD_WEBLINKS_FIELD_VALUE_HITS</option>
@ -114,10 +115,10 @@
<field <field
name="direction" name="direction"
type="list" type="list"
default="asc"
label="MOD_WEBLINKS_FIELD_ORDERDIRECTION_LABEL" label="MOD_WEBLINKS_FIELD_ORDERDIRECTION_LABEL"
description="MOD_WEBLINKS_FIELD_ORDERDIRECTION_DESC" description="MOD_WEBLINKS_FIELD_ORDERDIRECTION_DESC"
> default="asc"
>
<option value="asc">MOD_WEBLINKS_FIELD_VALUE_ASCENDING</option> <option value="asc">MOD_WEBLINKS_FIELD_VALUE_ASCENDING</option>
<option value="desc">MOD_WEBLINKS_FIELD_VALUE_DESCENDING</option> <option value="desc">MOD_WEBLINKS_FIELD_VALUE_DESCENDING</option>
</field> </field>
@ -125,10 +126,10 @@
<field <field
name="follow" name="follow"
type="list" type="list"
default="0"
label="MOD_WEBLINKS_FIELD_FOLLOW_LABEL" label="MOD_WEBLINKS_FIELD_FOLLOW_LABEL"
description="MOD_WEBLINKS_FIELD_FOLLOW_DESC" description="MOD_WEBLINKS_FIELD_FOLLOW_DESC"
> default="0"
>
<option value="follow">MOD_WEBLINKS_FIELD_VALUE_FOLLOW</option> <option value="follow">MOD_WEBLINKS_FIELD_VALUE_FOLLOW</option>
<option value="nofollow">MOD_WEBLINKS_FIELD_VALUE_NOFOLLOW</option> <option value="nofollow">MOD_WEBLINKS_FIELD_VALUE_NOFOLLOW</option>
</field> </field>
@ -136,11 +137,11 @@
<field <field
name="description" name="description"
type="radio" type="radio"
class="btn-group btn-group-yesno"
default="0"
label="MOD_WEBLINKS_FIELD_DESCRIPTION_LABEL" label="MOD_WEBLINKS_FIELD_DESCRIPTION_LABEL"
description="MOD_WEBLINKS_FIELD_DESCRIPTION_DESC" description="MOD_WEBLINKS_FIELD_DESCRIPTION_DESC"
> class="btn-group btn-group-yesno"
default="0"
>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
</field> </field>
@ -148,11 +149,11 @@
<field <field
name="hits" name="hits"
type="radio" type="radio"
class="btn-group btn-group-yesno"
default="0"
label="MOD_WEBLINKS_FIELD_HITS_LABEL" label="MOD_WEBLINKS_FIELD_HITS_LABEL"
description="MOD_WEBLINKS_FIELD_HITS_DESC" description="MOD_WEBLINKS_FIELD_HITS_DESC"
> class="btn-group btn-group-yesno"
default="0"
>
<option value="1">JSHOW</option> <option value="1">JSHOW</option>
<option value="0">JHIDE</option> <option value="0">JHIDE</option>
</field> </field>
@ -160,16 +161,17 @@
<field <field
name="count_clicks" name="count_clicks"
type="list" type="list"
class="chzn-color"
default="0"
label="MOD_WEBLINKS_FIELD_COUNTCLICKS_LABEL" label="MOD_WEBLINKS_FIELD_COUNTCLICKS_LABEL"
description="MOD_WEBLINKS_FIELD_COUNTCLICKS_DESC" description="MOD_WEBLINKS_FIELD_COUNTCLICKS_DESC"
> class="chzn-color"
default="0"
>
<option value="">JGLOBAL_USE_GLOBAL</option> <option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JNO</option> <option value="0">JNO</option>
<option value="1">JYES</option> <option value="1">JYES</option>
</field> </field>
</fieldset> </fieldset>
<fieldset name="advanced"> <fieldset name="advanced">
<field <field
name="layout" name="layout"
@ -181,18 +183,18 @@
<field <field
name="moduleclass_sfx" name="moduleclass_sfx"
type="textarea" type="textarea"
rows="3"
label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC"
rows="3"
/> />
<field <field
name="cache" name="cache"
type="list" type="list"
default="1"
label="COM_MODULES_FIELD_CACHING_LABEL" label="COM_MODULES_FIELD_CACHING_LABEL"
description="COM_MODULES_FIELD_CACHING_DESC" description="COM_MODULES_FIELD_CACHING_DESC"
> default="1"
>
<option value="1">JGLOBAL_USE_GLOBAL</option> <option value="1">JGLOBAL_USE_GLOBAL</option>
<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option> <option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
</field> </field>
@ -200,9 +202,9 @@
<field <field
name="cache_time" name="cache_time"
type="text" type="text"
default="900"
label="COM_MODULES_FIELD_CACHE_TIME_LABEL" label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
description="COM_MODULES_FIELD_CACHE_TIME_DESC" description="COM_MODULES_FIELD_CACHE_TIME_DESC"
default="900"
/> />
<field <field

View File

@ -0,0 +1,8 @@
; Joomla! Project
; 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
PLG_EDITORS-XTD_WEBLINK="Button - Web Link"
PLG_EDITORS-XTD_WEBLINK_BUTTON_WEBLINK="Web Link"
PLG_EDITORS-XTD_WEBLINK_XML_DESCRIPTION="Displays a button to make it possible to insert web links into an Article. Displays a popup allowing you to choose the web link."

View File

@ -0,0 +1,7 @@
; Joomla! Project
; 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
PLG_EDITORS-XTD_WEBLINK="Button - Web Link"
PLG_EDITORS-XTD_WEBLINK_XML_DESCRIPTION="Displays a button to make it possible to insert web links into an Article. Displays a popup allowing you to choose the web link."

View File

@ -0,0 +1,59 @@
<?php
/**
* @package Joomla.Plugin
* @subpackage Editors-xtd.weblink
*
* @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;
/**
* Editor Web Link button
*
* @since __DEPLOY_VERSION__
*/
class PlgButtonWeblink extends JPlugin
{
/**
* Load the language file on instantiation.
*
* @var boolean
* @since __DEPLOY_VERSION__
*/
protected $autoloadLanguage = true;
/**
* Display the button
*
* @param string $name The name of the button to add
*
* @return JObject The button options as JObject
*
* @since __DEPLOY_VERSION__
*/
public function onDisplay($name)
{
$user = JFactory::getUser();
if ($user->authorise('core.create', 'com_weblinks')
|| $user->authorise('core.edit', 'com_weblinks')
|| $user->authorise('core.edit.own', 'com_weblinks'))
{
// The URL for the weblinks list
$link = 'index.php?option=com_weblinks&amp;view=weblinks&amp;layout=modal&amp;tmpl=component&amp;'
. JSession::getFormToken() . '=1&amp;editor=' . $name;
$button = new JObject;
$button->modal = true;
$button->class = 'btn';
$button->link = $link;
$button->text = JText::_('PLG_EDITORS-XTD_WEBLINK_BUTTON_WEBLINK');
$button->name = 'link';
$button->options = "{handler: 'iframe', size: {x: 800, y: 500}}";
return $button;
}
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.7" type="plugin" group="editors-xtd" method="upgrade">
<name>plg_editors-xtd_weblink</name>
<author>Joomla! Project</author>
<creationDate>##DATE##</creationDate>
<copyright>Copyright (C) 2005 - 2017 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>##VERSION##</version>
<description>PLG_EDITORS-XTD_WEBLINK_XML_DESCRIPTION</description>
<files>
##FILES##
</files>
<languages folder="language">
##LANGUAGE_FILES##
</languages>
</extension>

View File

@ -12,7 +12,7 @@ defined('JPATH_BASE') or die;
use Joomla\Registry\Registry; use Joomla\Registry\Registry;
// Load the base adapter. // Load the base adapter.
require_once JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php'; JLoader::register('FinderIndexerAdapter', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php');
/** /**
* Smart Search adapter for Joomla Web Links. * Smart Search adapter for Joomla Web Links.
@ -139,7 +139,7 @@ class PlgFinderWeblinks extends FinderIndexerAdapter
public function onFinderAfterSave($context, $row, $isNew) public function onFinderAfterSave($context, $row, $isNew)
{ {
// We only want to handle web links here. We need to handle front end and back end editing. // We only want to handle web links here. We need to handle front end and back end editing.
if ($context == 'com_weblinks.weblink' || $context == 'com_weblinks.form' ) if ($context == 'com_weblinks.weblink' || $context == 'com_weblinks.form')
{ {
// Check if the access levels are different. // Check if the access levels are different.
if (!$isNew && $this->old_access != $row->access) if (!$isNew && $this->old_access != $row->access)

View File

@ -175,12 +175,12 @@ class PlgSearchWeblinks extends JPlugin
$case_when1 .= $c_id . ' END as catslug'; $case_when1 .= $c_id . ' END as catslug';
$query->select('a.title AS title, a.created AS created, a.url, a.description AS text, ' . $case_when . "," . $case_when1) $query->select('a.title AS title, a.created AS created, a.url, a.description AS text, ' . $case_when . "," . $case_when1)
->select($query->concatenate(array($db->quote($searchWeblinks), 'c.title'), " / ") . ' AS section') ->select($query->concatenate(array($db->quote($searchWeblinks), 'c.title'), " / ") . ' AS section')
->select('\'1\' AS browsernav') ->select('\'1\' AS browsernav')
->from('#__weblinks AS a') ->from('#__weblinks AS a')
->join('INNER', '#__categories as c ON c.id = a.catid') ->join('INNER', '#__categories as c ON c.id = a.catid')
->where('(' . $where . ') AND a.state IN (' . implode(',', $state) . ') AND c.published = 1 AND c.access IN (' . $groups . ')') ->where('(' . $where . ') AND a.state IN (' . implode(',', $state) . ') AND c.published = 1 AND c.access IN (' . $groups . ')')
->order($order); ->order($order);
// Filter by language. // Filter by language.
if (JFactory::getApplication()->isClient('site') && JLanguageMultilang::isEnabled()) if (JFactory::getApplication()->isClient('site') && JLanguageMultilang::isEnabled())

View File

@ -21,20 +21,20 @@
<field <field
name="search_limit" name="search_limit"
type="text" type="text"
default="50"
description="JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC"
label="JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL" label="JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL"
description="JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC"
default="50"
size="5" size="5"
/> />
<field <field
name="search_content" name="search_content"
type="radio" type="radio"
label="JFIELD_PLG_SEARCH_ALL_LABEL"
description="JFIELD_PLG_SEARCH_ALL_DESC"
class="btn-group btn-group-yesno" class="btn-group btn-group-yesno"
default="0" default="0"
description="JFIELD_PLG_SEARCH_ALL_DESC" >
label="JFIELD_PLG_SEARCH_ALL_LABEL"
>
<option value="1">JON</option> <option value="1">JON</option>
<option value="0">JOFF</option> <option value="0">JOFF</option>
</field> </field>
@ -42,11 +42,11 @@
<field <field
name="search_archived" name="search_archived"
type="radio" type="radio"
label="JFIELD_PLG_SEARCH_ARCHIVED_LABEL"
description="JFIELD_PLG_SEARCH_ARCHIVED_DESC"
class="btn-group btn-group-yesno" class="btn-group btn-group-yesno"
default="0" default="0"
description="JFIELD_PLG_SEARCH_ARCHIVED_DESC" >
label="JFIELD_PLG_SEARCH_ARCHIVED_LABEL"
>
<option value="1">JON</option> <option value="1">JON</option>
<option value="0">JOFF</option> <option value="0">JOFF</option>
</field> </field>

View File

@ -38,7 +38,7 @@ class PlgSystemWeblinks extends JPlugin
/** /**
* Method to add statistics information to Administrator control panel. * Method to add statistics information to Administrator control panel.
* *
* @param string $extension The extension requesting information. * @param string $extension The extension requesting information.
* *
* @return array containing statistical information. * @return array containing statistical information.
* *

View File

@ -11,5 +11,5 @@ I am going to "try to archive a weblink category"
I click toolbar button "archive" I click toolbar button "archive"
I wait for element "['id' => 'system-message-container']"," '60" I wait for element "['id' => 'system-message-container']"," '60"
I expect to "see a success message after Archiving the category" I expect to "see a success message after Archiving the category"
I see "1 category successfully archived."," ['id' => 'system-message-container']" I see "1 category archived."," ['id' => 'system-message-container']"

View File

@ -13,5 +13,5 @@ I wait for text "Category Manager: Add A New Weblinks Category"," '60"," ['css'
I fill field "['id' => 'jform_title']"," $this->categoryTitle" I fill field "['id' => 'jform_title']"," $this->categoryTitle"
I click toolbar button "Save & Close" I click toolbar button "Save & Close"
I expect to "see a success message after saving the category" I expect to "see a success message after saving the category"
I see "Category successfully saved"," ['id' => 'system-message-container']" I see "Category saved"," ['id' => 'system-message-container']"

View File

@ -12,5 +12,5 @@ I am going to "try to delete a Weblinks Category"
I click toolbar button "Empty trash" I click toolbar button "Empty trash"
I wait for element "['id' => 'system-message-container']"," '60" I wait for element "['id' => 'system-message-container']"," '60"
I expect to "see a success message after Deleting the category" I expect to "see a success message after Deleting the category"
I see "1 category successfully deleted."," ['id' => 'system-message-container']" I see "1 category deleted."," ['id' => 'system-message-container']"

View File

@ -11,5 +11,5 @@ I am going to "try to publish a Weblinks Category"
I click toolbar button "publish" I click toolbar button "publish"
I wait for element "['id' => 'system-message-container']"," '60" I wait for element "['id' => 'system-message-container']"," '60"
I expect to "see a success message after publishing the category" I expect to "see a success message after publishing the category"
I see "1 category successfully published."," ['id' => 'system-message-container']" I see "1 category published."," ['id' => 'system-message-container']"

View File

@ -12,5 +12,5 @@ I am going to "try to delete a Weblinks Category"
I click toolbar button "Trash" I click toolbar button "Trash"
I wait for element "['id' => 'system-message-container']"," '60" I wait for element "['id' => 'system-message-container']"," '60"
I expect to "see a success message after Trashing the category" I expect to "see a success message after Trashing the category"
I see "1 category successfully trashed."," ['id' => 'system-message-container']" I see "1 category trashed."," ['id' => 'system-message-container']"

View File

@ -11,5 +11,5 @@ I am going to "try to unpublish a Weblinks Category"
I click toolbar button "unpublish" I click toolbar button "unpublish"
I wait for element "['id' => 'system-message-container']"," '60" I wait for element "['id' => 'system-message-container']"," '60"
I expect to "See a success message after unpublishing the category" I expect to "See a success message after unpublishing the category"
I see "1 category successfully unpublished"," ['id' => 'system-message-container']" I see "1 category unpublished"," ['id' => 'system-message-container']"

View File

@ -17,39 +17,15 @@ namespace Step\Acceptance;
* *
* @since 1.4 * @since 1.4
*/ */
class category extends \AcceptanceTester class Category extends \AcceptanceTester
{ {
/**
* Function to create a Category in Joomla!
*
* @param String $categoryName Name of the Category which is to be created
*
* @return void
*/
public function createCategory($categoryName)
{
$I = $this;
$I->am('Administrator');
$I->amOnPage('administrator/index.php?option=com_categories&extension=com_weblinks');
$I->waitForText('Weblinks: Categories', '30', ['css' => 'h1']);
$I->expectTo('see categories page');
$I->checkForPhpNoticesOrWarnings();
$I->amGoingTo('try to save a category with a filled title');
$I->clickToolbarButton('New');
$I->waitForText('Weblinks: New Category', '30', ['css' => 'h1']);
$I->fillField(['id' => 'jform_title'], $categoryName);
$I->clickToolbarButton('Save & Close');
$I->expectTo('see a success message after saving the category');
$I->see('Category successfully saved', ['id' => 'system-message-container']);
}
/** /**
* Function to Trash a Category in Joomla! * Function to Trash a Category in Joomla!
* *
* @param String $categoryName Name of the category which is to be trashed * @param String $categoryName Name of the category which is to be trashed
* *
* @return void * @return void
* @throws \Exception
*/ */
public function trashCategory($categoryName) public function trashCategory($categoryName)
{ {
@ -66,9 +42,10 @@ class category extends \AcceptanceTester
/** /**
* Function to Delete a Category in Joomla! * Function to Delete a Category in Joomla!
* *
* @param String $categoryName Name of the category which is to be deleted * @param String $categoryName Name of the category which is to be deleted
* *
* @return void * @return void
* @throws \Exception
*/ */
public function deleteCategory($categoryName) public function deleteCategory($categoryName)
{ {

View File

@ -11,15 +11,16 @@ namespace Step\Acceptance;
* @package Step\Acceptance * @package Step\Acceptance
* @link http://codeception.com/docs/06-ReusingTestCode#StepObjects * @link http://codeception.com/docs/06-ReusingTestCode#StepObjects
*/ */
class weblink extends \AcceptanceTester class Weblink extends \AcceptanceTester
{ {
/** /**
* Creates a weblink * Creates a weblink
* *
* @param string $title The title for the weblink * @param string $title The title for the weblink
* @param string $url The url for the weblink * @param string $url The url for the weblink
* @param string $countClicks If not null, we set the "Count Clicks" weblink property to the given value. * @param string $countClicks If not null, we set the "Count Clicks" weblink property to the given value.
* *
* @throws \Exception
*/ */
public function createWeblink($title, $url, $countClicks = null) public function createWeblink($title, $url, $countClicks = null)
{ {
@ -75,4 +76,4 @@ class weblink extends \AcceptanceTester
$I->waitForText('Web Links','30',['css' => 'h1']); $I->waitForText('Web Links','30',['css' => 'h1']);
$I->waitForText('1 web link successfully deleted.', 30, ['id' => 'system-message-container']); $I->waitForText('1 web link successfully deleted.', 30, ['id' => 'system-message-container']);
} }
} }

View File

@ -1,4 +1,3 @@
<?php <?php
// Here you can initialize variables that will be available to your tests // Here you can initialize variables that will be available to your tests
\Codeception\Util\Autoload::registerSuffix('Steps', __DIR__.DIRECTORY_SEPARATOR.'_steps');

View File

@ -1,5 +1,7 @@
<?php <?php
use Step\Acceptance\Category;
/** /**
* @package Joomla.Administrator * @package Joomla.Administrator
* @subpackage com_weblinks * @subpackage com_weblinks
@ -43,7 +45,7 @@ class AdministratorCategoriesCest
$I->see('Invalid field: Title', ['id' => 'system-message-container']); $I->see('Invalid field: Title', ['id' => 'system-message-container']);
} }
public function administratorCreateCategory(\Step\Acceptance\category $I) public function administratorCreateCategory(Category $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
$I->wantToTest('create a Category in /administrator/'); $I->wantToTest('create a Category in /administrator/');
@ -62,13 +64,13 @@ class AdministratorCategoriesCest
$I->fillField(['id' => 'jform_title'], $this->categoryTitle); $I->fillField(['id' => 'jform_title'], $this->categoryTitle);
$I->clickToolbarButton('Save & Close'); $I->clickToolbarButton('Save & Close');
$I->expectTo('see a success message after saving the category'); $I->expectTo('see a success message after saving the category');
$I->see('Category successfully saved', ['id' => 'system-message-container']); $I->see('Category saved', ['id' => 'system-message-container']);
} }
/** /**
* @depends administratorCreateCategory * @depends administratorCreateCategory
*/ */
public function administratorPublishCategory(\Step\Acceptance\category $I) public function administratorPublishCategory(Category $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
@ -84,13 +86,13 @@ class AdministratorCategoriesCest
$I->clickToolbarButton('publish'); $I->clickToolbarButton('publish');
$I->waitForElement(['id' => 'system-message-container'], '60'); $I->waitForElement(['id' => 'system-message-container'], '60');
$I->expectTo('see a success message after publishing the category'); $I->expectTo('see a success message after publishing the category');
$I->see('1 category successfully published.', ['id' => 'system-message-container']); $I->see('0 categories published.', ['id' => 'system-message-container']);
} }
/** /**
* @depends administratorPublishCategory * @depends administratorPublishCategory
*/ */
public function administratorUnpublishCategory(\Step\Acceptance\category $I) public function administratorUnpublishCategory(Category $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
$I->wantToTest('Unpublish a Category in /administrator/'); $I->wantToTest('Unpublish a Category in /administrator/');
@ -105,13 +107,13 @@ class AdministratorCategoriesCest
$I->clickToolbarButton('unpublish'); $I->clickToolbarButton('unpublish');
$I->waitForElement(['id' => 'system-message-container'], '60'); $I->waitForElement(['id' => 'system-message-container'], '60');
$I->expectTo('See a success message after unpublishing the category'); $I->expectTo('See a success message after unpublishing the category');
$I->see('1 category successfully unpublished', ['id' => 'system-message-container']); $I->see('1 category unpublished', ['id' => 'system-message-container']);
} }
/** /**
* @depends administratorUnpublishCategory * @depends administratorUnpublishCategory
*/ */
public function administratorArchiveCategory(\Step\Acceptance\category $I) public function administratorArchiveCategory(Category $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
$I->wantToTest('Archiving a Category in /administrator/'); $I->wantToTest('Archiving a Category in /administrator/');
@ -126,13 +128,13 @@ class AdministratorCategoriesCest
$I->clickToolbarButton('archive'); $I->clickToolbarButton('archive');
$I->waitForElement(['id' => 'system-message-container'], '60'); $I->waitForElement(['id' => 'system-message-container'], '60');
$I->expectTo('see a success message after Archiving the category'); $I->expectTo('see a success message after Archiving the category');
$I->see('1 category successfully archived.', ['id' => 'system-message-container']); $I->see('1 category archived.', ['id' => 'system-message-container']);
} }
/** /**
* @depends administratorArchiveCategory * @depends administratorArchiveCategory
*/ */
public function administratorTrashCategory(\Step\Acceptance\category $I) public function administratorTrashCategory(Category $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
$I->wantToTest('Trashing a Category in /administrator/'); $I->wantToTest('Trashing a Category in /administrator/');
@ -148,13 +150,13 @@ class AdministratorCategoriesCest
$I->clickToolbarButton('Trash'); $I->clickToolbarButton('Trash');
$I->waitForElement(['id' => 'system-message-container'], '60'); $I->waitForElement(['id' => 'system-message-container'], '60');
$I->expectTo('see a success message after Trashing the category'); $I->expectTo('see a success message after Trashing the category');
$I->see('1 category successfully trashed.', ['id' => 'system-message-container']); $I->see('1 category trashed.', ['id' => 'system-message-container']);
} }
/** /**
* @depends administratorTrashCategory * @depends administratorTrashCategory
*/ */
public function administratorDeleteCategory(\Step\Acceptance\category $I) public function administratorDeleteCategory(Category $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
$I->wantToTest('Deleting a Category in /administrator/'); $I->wantToTest('Deleting a Category in /administrator/');
@ -171,10 +173,10 @@ class AdministratorCategoriesCest
$I->acceptPopup(); $I->acceptPopup();
$I->waitForElement(['id' => 'system-message-container'], '60'); $I->waitForElement(['id' => 'system-message-container'], '60');
$I->expectTo('see a success message after Deleting the category'); $I->expectTo('see a success message after Deleting the category');
$I->see('1 category successfully deleted.', ['id' => 'system-message-container']); $I->see('1 category deleted.', ['id' => 'system-message-container']);
} }
public function administratorVerifyAvailableTabs(\Step\Acceptance\category $I) public function administratorVerifyAvailableTabs(Category $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
$I->wantToTest('Category Edit View Tabs'); $I->wantToTest('Category Edit View Tabs');

View File

@ -35,7 +35,7 @@ class AdministratorSmartSearchCest
$I->clickToolbarButton('Save & Close'); $I->clickToolbarButton('Save & Close');
$I->waitForText('Control Panel', 30, ['class'=> 'page-title']); $I->waitForText('Control Panel', 30, ['class'=> 'page-title']);
$I->expectTo('see a success message after saving the configuration'); $I->expectTo('see a success message after saving the configuration');
$I->see('Configuration successfully saved', ['id' => 'system-message-container']); $I->see('Configuration saved', ['id' => 'system-message-container']);
} }
public function administratorEnableContentPlugin(\Step\Acceptance\weblink $I) public function administratorEnableContentPlugin(\Step\Acceptance\weblink $I)
@ -53,8 +53,8 @@ class AdministratorSmartSearchCest
$I->waitForText('Plugins: Content - Smart Search', 30, ['class'=> 'page-title']); $I->waitForText('Plugins: Content - Smart Search', 30, ['class'=> 'page-title']);
$I->selectOptionInChosen('Status', 'Enabled'); $I->selectOptionInChosen('Status', 'Enabled');
$I->clickToolbarButton('save & close'); $I->clickToolbarButton('save & close');
$I->waitForText('Plugin successfully saved.', 30, ['id' => 'system-message-container']); $I->waitForText('Plugin saved.', 30, ['id' => 'system-message-container']);
$I->see('Plugin successfully saved.', ['id' => 'system-message-container']); $I->see('Plugin saved.', ['id' => 'system-message-container']);
} }
/** /**
@ -74,8 +74,8 @@ class AdministratorSmartSearchCest
$I->waitForText('Plugins: Smart Search - Web Links', 30, ['class'=> 'page-title']); $I->waitForText('Plugins: Smart Search - Web Links', 30, ['class'=> 'page-title']);
$I->selectOptionInChosen('Status', 'Enabled'); $I->selectOptionInChosen('Status', 'Enabled');
$I->clickToolbarButton('save & close'); $I->clickToolbarButton('save & close');
$I->waitForText('Plugin successfully saved.', 30, ['id' => 'system-message-container']); $I->waitForText('Plugin saved.', 30, ['id' => 'system-message-container']);
$I->see('Plugin successfully saved.', ['id' => 'system-message-container']); $I->see('Plugin saved.', ['id' => 'system-message-container']);
} }
/** /**
@ -95,8 +95,8 @@ class AdministratorSmartSearchCest
$I->click('Clear Index'); $I->click('Clear Index');
$I->acceptPopup(); $I->acceptPopup();
$I->waitForText('All items have been successfully deleted', 30, ['class' => 'alert-message']); $I->waitForText('All items have been deleted', 30, ['class' => 'alert-message']);
$I->see('All items have been successfully deleted', ['class' => 'alert-message']); $I->see('All items have been deleted', ['class' => 'alert-message']);
} }
public function administratorCreateWeblink(\Step\Acceptance\weblink $I, $scenario) public function administratorCreateWeblink(\Step\Acceptance\weblink $I, $scenario)
@ -145,7 +145,7 @@ class AdministratorSmartSearchCest
$I->waitForElement(['link' => 'Content - Smart Search']); $I->waitForElement(['link' => 'Content - Smart Search']);
$I->checkOption(['id' => 'cb0']); $I->checkOption(['id' => 'cb0']);
$I->clickToolbarButton('Unpublish'); // Note: The button is called "Disable", but we need to call it "Unpublish" here. $I->clickToolbarButton('Unpublish'); // Note: The button is called "Disable", but we need to call it "Unpublish" here.
$I->waitForText('Plugin successfully disabled', 30, ['class' => 'alert-message']); $I->waitForText('Plugin disabled', 30, ['class' => 'alert-message']);
} }
/** /**
@ -166,7 +166,7 @@ class AdministratorSmartSearchCest
$I->waitForElement(['link' => 'Smart Search - Web Links']); $I->waitForElement(['link' => 'Smart Search - Web Links']);
$I->checkOption(['id' => 'cb0']); $I->checkOption(['id' => 'cb0']);
$I->clickToolbarButton('Unpublish'); // Note: The button is called "Disable", but we need to call it "Unpublish" here. $I->clickToolbarButton('Unpublish'); // Note: The button is called "Disable", but we need to call it "Unpublish" here.
$I->waitForText('Plugin successfully disabled', 30, ['class' => 'alert-message']); $I->waitForText('Plugin disabled', 30, ['class' => 'alert-message']);
} }
public function cleanUp(\Step\Acceptance\weblink $I, $scenario) public function cleanUp(\Step\Acceptance\weblink $I, $scenario)

View File

@ -7,6 +7,8 @@
* @license GNU General Public License version 2 or later; see LICENSE.txt * @license GNU General Public License version 2 or later; see LICENSE.txt
*/ */
use Step\Acceptance\Weblink;
/** /**
* Acceptance cest object class for admin steps * Acceptance cest object class for admin steps
* *
@ -37,7 +39,7 @@ class AdministratorWeblinksCest
* *
* @return void * @return void
*/ */
public function administratorVerifyAvailableTabs(\Step\Acceptance\weblink $I) public function administratorVerifyAvailableTabs(Weblink $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
$I->wantToTest('Weblinks Edit View Tabs'); $I->wantToTest('Weblinks Edit View Tabs');
@ -49,7 +51,7 @@ class AdministratorWeblinksCest
$I->waitForText('Web Links', '30', ['css' => 'h1']); $I->waitForText('Web Links', '30', ['css' => 'h1']);
$I->clickToolbarButton('New'); $I->clickToolbarButton('New');
$I->waitForText('Web Link: New', '30', ['css' => 'h1']); $I->waitForText('Web Link: New', '30', ['css' => 'h1']);
$I->verifyAvailableTabs(['New Web Link', 'Images', 'Publishing', 'Options', 'Metadata']); $I->verifyAvailableTabs(['New Web Link', 'Images', 'Publishing', 'Options']);
} }
/** /**
@ -61,7 +63,7 @@ class AdministratorWeblinksCest
* *
* @return void * @return void
*/ */
public function administratorCreateWeblink(\Step\Acceptance\weblink $I) public function administratorCreateWeblink(Weblink $I)
{ {
$I->am('Administrator'); $I->am('Administrator');
$I->wantToTest('Weblink creation in /administrator/'); $I->wantToTest('Weblink creation in /administrator/');